python實現的端口掃描程序(多線程版)

python實現的端口掃描程序,該程序的弊端是由於對線程數量沒有做限制,所以會導致大量內存被佔用,但是也有好處,就是速度會比較快。
【聲明:該工具僅用於學術研究用,請勿用作其他用途,若產生不良結果,由使用者自己承擔責任】


#!/usr/bin/env python
import threading
import socket
import time

class myThread (threading.Thread):
    def __init__(self, threadID, name, ip, port):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.ip = ip
        self.port = port

    def run(self):
        get_ip_status(self.ip, self.port)


def get_ip_status(ip,port):
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        server.connect((ip,port))
        print('{0} port {1} is open'.format(ip, port))
    except Exception as err:
         print('{0} port {1} is not open'.format(ip,port))
        pass
    finally:
        server.close()
 
if __name__ == '__main__':
    # host = '47.52.227.218'
    host = '127.0.0.1'
    threadList1 = []
    t1 = time.time()
    for port in range(1, 65536):
        # 創建新線程
        threadList1.append(myThread(port, "Thread-" + str(port), host, port))
    
    for item in threadList1:
        item.start()
    
    for item in threadList1:
        item.join()

    print(time.time() - t1)
    print("done")
    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章