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()
'Programing > Python' 카테고리의 다른 글
python -defaultdict(), 딕셔너리 기본 값지정- (0) | 2022.03.10 |
---|---|
재귀 깊이 수정 (python) (0) | 2022.03.10 |
pip install SSL: CERTIFICATE_VERIFY_FAILED 해결방법 (0) | 2021.07.07 |
python Bson 라이브러리 (0) | 2020.11.04 |
num을 0xnum으로 바꾸는 방법 (0) | 2020.02.03 |