我有一个PortScanner,它允许用户输入IP,并扫描打开的端口。我有一个我不太了解的问题。我可以访问一堆服务器,因此我在它们上尝试了扫描仪。在一半的服务器上,它可以在另一半上工作,它无限地坐在那里,直到我脱离它为止。我注意到IP字符串中有2位数字(而不是3位)的问题:199.110.13.300,但是我只是在本地192.168.1.1上尝试了它,它起作用了,所以我不确定是什么引起了不一致。
#!/usr/bin/env python3
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
target = input("Enter IP to check: ")
maxPort = 1000
def scanner(port):
try:
sock.connect((target, port))
return True
except:
return False
for portNumber in range(1,int(maxPort)):
if scanner(portNumber):
print('[*] Port', portNumber, '/tcp','is open')
答案 0 :(得分:1)
我的第一个猜测是套接字正在挂起,或者是由于等待信息接收(不太可能,因为您没有使用socket.recv()
),或者远程服务器的操作系统没有进行干净的断开连接因此,TCP不允许来自同一服务器的连接。以下是有关各个问题的一些有用线索: