Programing/Python / / 2015. 10. 20. 23:23

Python Portscaner

import optparse

from socket import *

from threading import Thread

 

# Make a Connection

def ConnScan(Target_Host, Target_Port): # ConnScan이라는 함수명을 가지고있고 타겟 호스트와 포트번호를 인자로 받는다.

    try: # 예외처리 

        connskt = socket(AF_INET, SOCK_STREAM) # connskt라는 변수에 소켓객체를 초기화시킨다.

        connskt.connect((Target_Host, Target_Port)) # connect메서드를 통해 타겟 host port가 전달된다.

        connskt.send('Vionlent python\r\n') # 패킷테스트메시지?

                result = connskt.recv(1024) # recv에 공간을 주는듯하다 값을 전달하기위해?? 공간에 넣기위해? 

        print "[+] %d / TCP OPEN" % Target_Port

        print "\n" + str(result) # 전달 

        connskt.close()

        # Close the connection

    except: # 예외처리 

        print "[-] %d TCP CLosed\n" % Target_Port

 

# Define Host and Port

def PortScan(Target_Host, Target_Port):

    try: # 예외처리 

        Target_IP = gethostbyname(Target_Host) # Target_IP를 Target_Host를 불러와 초기화시킨다?

    except:

        print "[-] Cannot Resolve '%s' : Unknown Host\n" % Target_Host

        return

 

    try:

        Target_Name = gethostbyname(Target_IP) # Targe_Name을 Target_IP를 불러와 초기화시킨다?

        print "\n[+] Scan Result For : " + Target_Name[0] # 출력 

    except:

        print "\n[+] Scan Result For : " + Target_IP

    setdefaulttimeout(1)

 

    for port in Target_Port: # 여러개의 포트를 입력받을수 있도록 함 

    # Target_Ports includes all ports that user input (List Type) > 번역 : Target_Ports 모든 포트가 사용자 입력을 포함한다.

        print "Scanning Port \n" + port

        t = Thread (target=ConnScan, args=(Target_Host, int(port))) # t 메소드를 스레드로 정의한다 스레드의 내용물은 target=ConnScan, args=(Target_Host, int(port)?

        t.start() # start?

 

# Main Function Area

def main(): # Main함수 optparser를 통한 파싱작업을 하여 사용자에게 옵션을 제공함과 동시에 입력값에 대한 확장성을 보장한다. 

 

    parser = optparse.OptionParser(usage='Usage %Prog -H <Target Host> -p <Target Port>')

    parser.add_option('-H', dest = 'Target_Host', type ='string', help = 'Specify Target IP')

    parser.add_option('-p', dest = 'Target_Port', type ='string', help = 'Specify Target Port')

    (options, args) = parser.parse_args()

 

    Target_Host = options.Target_Host

    Target_Port = str(options.Target_Port).split(',')

 

    if (Target_Host == None) | (Target_Port == None):

        print parser.usage

        exit (0)

    PortScan(Target_Host, Target_Port)

 

if __name__ == '__main__':

    main()



















PortScaner Test [1].py


  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유