Python端口扫描简单程序
本文实例为大家分享了Python端口扫描的实现代码,供大家参考,具体内容如下
获取本机的IP和端口号:
importsocket defget_my_ip(): try: csock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) csock.connect(('8.8.8.8',80)) (addr,port)=csock.getsockname() csock.close() returnaddr,port exceptsocket.error: return"127.0.0.1" defint_to_ip(int_ip): returnsocket.inet_ntoa(struct.pack('I',socket.htonl(int_ip))) defip_to_int(ip): returnsocket.ntohl(struct.unpack("I",socket.inet_aton(str(ip)))[0]) (ip,port)=get_my_ip() print"ip=%sport=%d"%(ip,port)
PortScan.py
#!/usr/bin/python #-*-coding:utf-8-*- importoptparse fromsocketimport* fromthreadingimport* screenLock=Semaphore(value=1) defconnScan(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/tcpopen'%tgtPort print'[+]'+str(results) except: screenLock.acquire() print'[-]%d/tcpclosed'%tgtPort finally: screenLock.release() connSkt.close() defportScan(tgtHost,tgtPorts): try: tgtIP=gethostbyname(tgtHost) except: print"[-]Cannotresolve'%s':Unknownhost"%tgtHost return try: tgtName=gethostbyaddr(tgtIP) print'\n[+]ScanResultsfor:'+tgtName[0] except: print'\n[+]ScanResultsfor:'+tgtIP setdefaulttimeout(1) fortgtPortintgtPorts: t=Thread(target=connScan,args=(tgtHost,int(tgtPort))) t.start() defmain(): parser=optparse.OptionParser('usage%prog'+\ '-H<targethost>-p<targetport>') parser.add_option('-H',dest='tgtHost',type='string',\ help='specifytargethost') parser.add_option('-p',dest='tgtPort',type='string',\ help='specifytargetport[s]separatedbycomma') (options,args)=parser.parse_args() tgtHost=options.tgtHost tgtPorts=str(options.tgtPort).split(',') if(tgtHost==None)|(tgtPorts[0]==None): printparser.usage exit(0) portScan(tgtHost,tgtPorts) if__name__=='__main__': main()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。