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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。