用python扫描外部网络的主机开放的tcp端口和udp端口
时间: 2023-09-17 08:07:24 浏览: 101
可以使用Python的socket模块来扫描外部网络的主机开放的TCP端口和UDP端口。以下是一个简单的示例代码:
```python
import socket
# 扫描TCP端口
def scan_tcp_ports(host, port_range):
for port in range(*port_range):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(1)
s.connect((host, port))
print(f"TCP Port {port} is open")
except:
pass
finally:
s.close()
# 扫描UDP端口
def scan_udp_ports(host, port_range):
for port in range(*port_range):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.settimeout(1)
s.sendto(b"ping", (host, port))
data, addr = s.recvfrom(1024)
print(f"UDP Port {port} is open")
except:
pass
finally:
s.close()
if __name__ == "__main__":
host = "example.com"
tcp_port_range = (1, 1000)
udp_port_range = (1, 1000)
scan_tcp_ports(host, tcp_port_range)
scan_udp_ports(host, udp_port_range)
```
在上面的示例代码中,我们定义了两个函数`scan_tcp_ports`和`scan_udp_ports`来分别扫描TCP端口和UDP端口。这两个函数都接受两个参数:目标主机的IP地址或域名和一个端口范围(一个包含起始端口号和结束端口号的元组)。在函数内部,我们使用Python的socket模块来创建一个TCP或UDP socket对象,并尝试连接或发送数据到目标主机的每个端口。如果连接或发送成功,则说明该端口是开放的。最后,我们关闭socket对象,并打印出开放的端口号。
阅读全文