1. 程式人生 > >Python 端口掃描(全連接掃描,多線程)

Python 端口掃描(全連接掃描,多線程)

Python 端口掃描 多線程

from socket import * import threading #導入線程相關模塊 lock = threading.Lock() openNum = 0 threads = [] #定義線程列表 def portScanner(host,port): global openNum try: s = socket(AF_INET,SOCK_STREAM) s.connect((host,port)) lock.acquire() #因為openNum是個全局變量,每個線程不能對openNum 同時操作,只有獲得所的線程才可以操作 openNum openNum+=1 print(‘[+] %d open‘ % port) lock.release() #線程對全局變量openNum操作完成後,需要釋放所,其他線程才可以繼續修改全局變量openNum s.close() except: #如果端口沒開,那麽就直接pass,不執行其他輸出操作。 pass def main(): setdefaulttimeout(1) ports = [20, 21, 22, 23, 80, 111, 3306] #定義要掃描的端口,也可以在for中使用range進行定義,看個人需求,例如 for p in range(1,1024): for p in ports: t = threading.Thread(target=portScanner,args=(‘192.168.60.130‘,p)) threads.append(t) t.start() for t in threads: #等待線程列表中的所以線程的執行完畢 t.join() print(‘[*] The scan is complete!‘) print(‘[*] A total of %d open port‘ % (openNum)) if __name__ == ‘__main__‘: main()

如果要計算掃描了多久的話,可以導入time模塊,然後 程序開始運行的時間 減去 程序結束運行的時間 最後輸出時間的差。

Python 端口掃描(全連接掃描,多線程)