这样脚本在运行的时候,第一个参数就可以传入一个主机名或 ip 地址,下文就可以通过 args.host 来使用。
3、循环所有的端口
端口占用 2 个字节,因此其范围是 1-65535
start = time.time() try: for port in range(1, 65536): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(1) result = sock.connect_ex((args.host, port)) if result == 0: print('Port: {} Open'.format(port)) sock.close() except KeyboardInterrupt: sys.exit() end = time.time()
try: for port in range(1, 65536): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(1) result = sock.connect_ex((args.host, port)) if result == 0: print('Port: {} Open'.format(port)) sock.close() except KeyboardInterrupt: sys.exit()
end = time.time() print(f'Scanning completed in: {end-start:.3f}s')