Python 端口扫描器的跨平台实现方法

2023-04-21 00:00:00 方法 端口 扫描器

Python 端口扫描器的跨平台实现可以使用 Python 标准库中的 socket 模块。

首先,需要创建一个 socket 对象,并指定协议类型和套接字类型。具体来说,使用 socket.AF_INET 表示 IPv4 网络协议,使用 socket.SOCK_STREAM 表示面向连接的 TCP 传输协议。

然后,使用 socket 对象的 connect 方法连接指定的主机和端口。如果连接成功,说明目标主机和端口是开放的。

完整代码如下:

import socket

def scan_port(host, port):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(1)
    try:
        sock.connect((host, port))
        print("[+] Port {} is open".format(port))
    except (socket.timeout, OSError):
        pass
    finally:
        sock.close()

if __name__ == "__main__":
    host = "pidancode.com"
    ports = [80, 443, 8080]
    for port in ports:
        scan_port(host, port)

以上代码演示了如何扫描域名为 pidancode.com 上的 80、443 和 8080 端口,输出开放的端口号。

需要注意的是,socket 模块的 connect 方法可能会阻塞程序执行,导致扫描速度慢。为了加快扫描速度,可以使用多线程或异步编程技术。

相关文章