Python 查询 IP 开放端口实战指南
使用 Python 查找 IP 开放端口
想要检查特定 IP 地址上的哪些端口开放?Python 的 socket 模块为此类网络任务提供了强大的工具。以下代码示例演示了如何扫描 IP 地址的端口范围并识别开放端口:
import socket
def scan_ports(ip, start_port, end_port):
open_ports = []
for port in range(start_port, end_port+1):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
result = sock.connect_ex((ip, port))
if result == 0:
open_ports.append(port)
sock.close()
except socket.error:
pass
return open_ports
ip = '127.0.0.1'
start_port = 1
end_port = 100
open_ports = scan_ports(ip, start_port, end_port)
print(f'IP 地址 {ip} 开放的端口有:{open_ports}')
代码说明:
- 导入
socket模块: 首先,我们导入socket模块,该模块提供了用于网络编程的函数。 scan_ports函数: 此函数接受三个参数:目标 IP 地址、起始端口号和结束端口号。- 循环遍历端口范围: 使用
for循环遍历指定的端口范围。 - 创建套接字: 对于每个端口,我们创建一个 TCP 套接字 (
socket.AF_INET,socket.SOCK_STREAM)。 - 设置超时: 使用
sock.settimeout(1)设置 1 秒的超时,以防止连接尝试无限期地阻塞。 - 尝试连接: 使用
sock.connect_ex((ip, port))尝试连接到目标 IP 地址和端口。connect_ex方法在连接成功时返回 0,否则返回错误代码。 - 记录开放端口: 如果
result为 0,则表示端口开放,将其添加到open_ports列表中。 - 关闭套接字: 使用
sock.close()关闭套接字以释放资源。 - 返回开放端口列表: 函数返回
open_ports列表,其中包含所有找到的开放端口。
使用方法:
- 将
ip变量替换为要扫描的 IP 地址。 - 根据需要调整
start_port和end_port变量以指定要扫描的端口范围。 - 运行脚本,它将打印找到的开放端口列表。
此代码示例提供了一个基本的端口扫描器,你可以根据自己的需要对其进行修改和扩展。请记住,在未经授权的情况下扫描其他人的系统可能是非法的,因此请谨慎使用此代码。
原文地址: https://www.cveoy.top/t/topic/f3FA 著作权归作者所有。请勿转载和采集!