用python扫描别的ip地址开放的tcp端口和udp端口
时间: 2023-09-16 16:15:59 浏览: 100
python ip端口扫描
下面是一个使用 Python 扫描指定 IP 地址开放的 TCP 和 UDP 端口的示例代码:
```python
import socket
import threading
def scan_tcp_port(ip, port):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(1)
try:
s.connect((ip, port))
print(f"TCP port {port} is open")
except (socket.timeout, ConnectionRefusedError):
pass
finally:
s.close()
def scan_udp_port(ip, port):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.settimeout(1)
try:
s.sendto(b'', (ip, port))
data, addr = s.recvfrom(1024)
print(f"UDP port {port} is open")
except socket.timeout:
pass
finally:
s.close()
if __name__ == '__main__':
ip = '192.168.1.1'
thread_list = []
for port in range(1, 1025):
t = threading.Thread(target=scan_tcp_port, args=(ip, port))
thread_list.append(t)
t.start()
t = threading.Thread(target=scan_udp_port, args=(ip, port))
thread_list.append(t)
t.start()
for t in thread_list:
t.join()
```
该代码中,我们使用了 Python 的 socket 和 threading 模块。首先定义了两个函数,scan_tcp_port() 和 scan_udp_port(),分别用于扫描 TCP 和 UDP 端口。对于每个端口,我们都创建了一个线程来执行这两个函数,以提高扫描效率。最后使用 join() 方法等待所有线程执行完毕。
需要注意的是,该代码只能扫描本地网络内的主机,如果要扫描外部网络的主机,需要使用端口扫描工具,或者使用 Python 的第三方库,如 nmap 等。同时建议在使用端口扫描工具或 Python 脚本时,遵守相关法律法规和网络安全规范,以免侵犯他人隐私或造成潜在安全风险。
阅读全文