如何检查UDP端口是否打开? (python)
How to check if UDP port is open? (python)
我正在尝试使用 python 编写端口扫描器,但 UDP 端口存在问题。 Google 说我必须发送一些请求并收到 TimeoutError,这意味着服务器通过端口收到消息并且端口已打开,或者收到 ICMP 消息“Destination unreacheable(Port unreachable)”,意味着端口已关闭。我可以在 Wireshark 中看到 ICMP 消息,但不知道如何让 python 也看到它。
现在我的 UDP 代码如下所示:
def udp_connection(ip, port, timeout):
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
s.settimeout(timeout)
try:
s.sendto(b'test', (ip, port))
data, addr = s.recvfrom(1024)
return "[+] UDP Port Open: " + str(port) + str(data) + '\n'
except TimeoutError:
return "[+] UDP Port Open: " + str(port) + 'kinda no response or something' + '\n'
except:
return "[+] UDP Port Closed: " + str(port) + '\n'
这总是 returns TimeoutError。
还尝试了在 Whosebug 上找到的解决方案来添加原始套接字 with socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP) as s1:
并使用 data, addr = s1.recvfrom(1024)
而不是 data, addr = s.recvfrom(1024)
接收数据,但没有成功
Python 在尝试接收来自 (ip,closedPort) 的响应时抛出 ConnectionResetError 异常,因为收到 ICMP“目标不可达(端口不可达)”消息,但 ICMP 数据包可能被 windows 阻止防火墙,python 将不会接收它并且...仅此而已。我真的只需要将其关闭才能使我的代码正常工作
我正在尝试使用 python 编写端口扫描器,但 UDP 端口存在问题。 Google 说我必须发送一些请求并收到 TimeoutError,这意味着服务器通过端口收到消息并且端口已打开,或者收到 ICMP 消息“Destination unreacheable(Port unreachable)”,意味着端口已关闭。我可以在 Wireshark 中看到 ICMP 消息,但不知道如何让 python 也看到它。
现在我的 UDP 代码如下所示:
def udp_connection(ip, port, timeout):
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
s.settimeout(timeout)
try:
s.sendto(b'test', (ip, port))
data, addr = s.recvfrom(1024)
return "[+] UDP Port Open: " + str(port) + str(data) + '\n'
except TimeoutError:
return "[+] UDP Port Open: " + str(port) + 'kinda no response or something' + '\n'
except:
return "[+] UDP Port Closed: " + str(port) + '\n'
这总是 returns TimeoutError。
还尝试了在 Whosebug 上找到的解决方案来添加原始套接字 with socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP) as s1:
并使用 data, addr = s1.recvfrom(1024)
而不是 data, addr = s.recvfrom(1024)
接收数据,但没有成功
Python 在尝试接收来自 (ip,closedPort) 的响应时抛出 ConnectionResetError 异常,因为收到 ICMP“目标不可达(端口不可达)”消息,但 ICMP 数据包可能被 windows 阻止防火墙,python 将不会接收它并且...仅此而已。我真的只需要将其关闭才能使我的代码正常工作