Develope/Python
[Python] Port Scanner
rootable
2017. 1. 22. 22:01
반응형
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | # -*- coding: cp949 -*- import optparse from socket import * from threading import * screenLock = Semaphore(value=1) def connScan(tgtHost, tgtPort): try: connSkt = socket(AF_INET, SOCK_STREAM) connSkt.connect(tgtHost, tgtPort) connSkt.send('ViolentPython\r\n') results = connSkt.recv(100) screenLock.acquire() # 출력하기 전에 세마포어 습득 print '[+]%d/tcp open'% tgtPort print '[+] ' +str(results) except: screenLock.acquire() # 출력하기 전에 세마포어 습득 print '[-]%d/tcp closed'% tgtPort finally: screenLock.release() # 쓰레드가 끝날 때 놓아줌 connSkt.close() def portScan(tgtHost, tgtPorts): try: tgtIP = gethostbyname(tgtHost) except: print "[-] Cannot resolve '%s': Unknown host" %tgtHost return try: tgtName = gethostbyaddr(tgtIP) print '\n[+] Scan Results for: ' + tgtName[0] except: print '\n[+] Scan Results for: ' + tgtIP setdefaulttimeout(1) for tgtPort in tgtPorts: t = Thread(target=connScan, args=(tgtHost, int(tgtPort))) t.start() def main(): parser = optparse.OptionParser('usage %prog -H <target host> -p <target port>') parser.add_option('-H', dest='tgtHost', type='string', help='specify target host') parser.add_option('-p', dest='tgtPort', type='int', help='specify target port[s] separated by comma') (options, args) = parser.parse_args() tgtHost = options.tgtHost tgtPort = str(options.tgtPort).split(', ') if (tgtHost == None) | (tgtPort == None): print '[-] You must specify a target host and port[s].' exit(0) portScan(tgtHost, tgtPorts) if __name__ == '__main__': main() | cs |
출처 : Violent Python ( 해커의 언어, 치명적 파이썬)
반응형