本文實例講述了python實現的多線程端口掃描功能。分享給大家供大家參考,具體如下:
下面的程序給出了對給定的ip主機進行多線程掃描的Python代碼
#!/usr/bin/env python#encoding: utf-8import socket, sys, thread, timeopenPortNum = 0socket.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 openPortNum if 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 += 1 s.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 = 0 if 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) print print 'total open port is %s, scan used time is: %f ' % (openPortNum, time.time()-t)運行效果圖

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python URL操作技巧總結》、《Python數據結構與算法教程》、《Python Socket編程技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答
圖片精選