使用 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}')

代码说明:

  1. 导入 socket 模块: 首先,我们导入 socket 模块,该模块提供了用于网络编程的函数。
  2. scan_ports 函数: 此函数接受三个参数:目标 IP 地址、起始端口号和结束端口号。
  3. 循环遍历端口范围: 使用 for 循环遍历指定的端口范围。
  4. 创建套接字: 对于每个端口,我们创建一个 TCP 套接字 (socket.AF_INET, socket.SOCK_STREAM)。
  5. 设置超时: 使用 sock.settimeout(1) 设置 1 秒的超时,以防止连接尝试无限期地阻塞。
  6. 尝试连接: 使用 sock.connect_ex((ip, port)) 尝试连接到目标 IP 地址和端口。connect_ex 方法在连接成功时返回 0,否则返回错误代码。
  7. 记录开放端口: 如果 result 为 0,则表示端口开放,将其添加到 open_ports 列表中。
  8. 关闭套接字: 使用 sock.close() 关闭套接字以释放资源。
  9. 返回开放端口列表: 函数返回 open_ports 列表,其中包含所有找到的开放端口。

使用方法:

  1. ip 变量替换为要扫描的 IP 地址。
  2. 根据需要调整 start_portend_port 变量以指定要扫描的端口范围。
  3. 运行脚本,它将打印找到的开放端口列表。

此代码示例提供了一个基本的端口扫描器,你可以根据自己的需要对其进行修改和扩展。请记住,在未经授权的情况下扫描其他人的系统可能是非法的,因此请谨慎使用此代码。

Python 查询 IP 开放端口实战指南

原文地址: https://www.cveoy.top/t/topic/f3FA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录