1
import threading
from socket import *
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)):
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__':
print("请输入ip")
ip