import socket from datetime import datetime from multiprocessing.dummy import Pool as ThreadPool ll = [] # s = 0 class ScanPort: def __init__(self): self.ip = None # ll = [] def scan_port(self, port): try: # s= (port/65535)*100 # s = (port / 65535) # n = n + 1 # print(n) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) res = s.connect_ex((self.ip, port)) if res == 0: # 端口开启 print('Ip:{} Port:{} IS OPEN'.format(self.ip, port)) # ll.append(port) else: pass # print('Ip:{} Port:{}: IS NOT OPEN'.format(self.ip, port)) except Exception as e: print(e) finally: s.close() # print(ll) def start(self): remote_server = input("输入要扫描的远程主机:") self.ip = socket.gethostbyname(remote_server) ports = [i for i in range(1, 65535)] # print("scan {}%".format(ports)) # for l in ll : # if l == float(ports/65535): # print("scan {}%".format(ports*100/65535)) socket.setdefaulttimeout(0.5) # 开始时间 t1 = datetime.now() # 设置多进程 threads = [] pool = ThreadPool(processes=32) pool.map(self.scan_port, ports) pool.close() pool.join() print('端口扫描已完成,耗时:', datetime.now() - t1) ScanPort().start()
02-23
02-04
4168
