python多线程端口扫描程序
生活随笔
收集整理的這篇文章主要介紹了
python多线程端口扫描程序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
下面的程序給出了對給定的ip主機進行多線程掃描的python代碼
#!/usr/bin/env python
#encoding: utf-8import socket, sys, thread, timeopenPortNum = 0
socket.setdefaulttimeout(3)def usage():print '''Usage:Scan the port of one IP: python port_scan_multithread.py -o <ip>Scan the port of one IP: python port_scan_multithread.py -m <ip1, ip2, ip3, ip4 ...>'''print 'Exit'sys.exit(1)def socket_port(ip, PORT):global openPortNumif PORT > 65535:print 'Port scanning beyond the port range, interrupt to scan'sys.exit(1)s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)result = s.connect_ex((ip, PORT))if(result == 0):print ip, PORT,'is open'openPortNum += 1s.close()def start_scan(IP):for port in range(0, 65535+1):thread.start_new_thread(socket_port, (IP, int(port)))time.sleep(0.006)if __name__ == '__main__':t = 0if len(sys.argv)<2 or sys.argv[1] == '-h':usage()elif sys.argv[1] == '-o':ONE_IP = raw_input('Please input ip of scanning: ')t = time.time()start_scan(ONE_IP)elif sys.argv[1] == '-m':MANY_IP = raw_input('Please input many ip of scanning: ')IP_SEG = MANY_IP.split(',')t = time.time()for i in IP_SEG:start_scan(i)printprint 'total open port is %s, scan used time is: %f ' % (openPortNum, time.time()-t)
運行效果圖
參考文獻
[1].http://moniter.blog.51cto.com/2908666/1355004
總結
以上是生活随笔為你收集整理的python多线程端口扫描程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: boost::asio使用UDP协议通信
- 下一篇: python threading模块多线