扫描端口

from os import name
import threading
from socket import *
import time

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 += 1
        print(f"{port} open")
        lock.release()
        s.close()
    except:
        pass


def main(ip, ports=range(65535)):  # 设置 端口缺省值0-65535
    setdefaulttimeout(1)
    for port in ports:
        t = threading.Thread(target=portscanner, args=(ip, port))
        threads.append(t)
        t.start()
    for t in threads:
        t.join()
    print(f"PortScan is Finish ,OpenNum is {openNum}")


if __name__ == '__main__':
    ip = '11.11.11.11'
    # main(ip,[22,101,8080,8000])          # 输入端口扫描
    main(ip)  # 全端口扫描

  

posted @ 2023-05-17 14:00  CrossPython  阅读(13)  评论(0编辑  收藏  举报