欢迎访问宙启技术站
智能推送

利用Python的port()函数实现端口扫描与连接探测

发布时间:2023-12-27 00:24:42

Python提供了socket模块,可以使用其中的port()函数实现端口扫描与连接探测。

port()函数用于扫描指定IP地址的指定端口,并返回该端口的连接状态。它可以根据传入的参数进行连接探测并返回连接状态,如打开、关闭或超时等。具体使用方法如下:

import socket

def port(ip, port):
    try:
        # 创建socket对象
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # 设置超时时间
        s.settimeout(1)
        # 连接目标ip和port
        result = s.connect_ex((ip, port))
        # 判断返回值,0为连接成功,其他为连接失败
        if result == 0:
            return "Port {} is open".format(port)
        else:
            return "Port {} is closed".format(port)
        # 关闭socket连接
        s.close()
    except Exception as e:
        return "Error: {}".format(e)

# 示例:扫描IP地址为127.0.0.1的1-1000端口
for port_num in range(1, 1001):
    print(port("127.0.0.1", port_num))

在上述示例中,我们导入了socket模块,并定义了一个名为port的函数。该函数接受互联网协议(IP)和端口号作为参数,使用socket模块创建一个socket对象,并设置超时时间为1秒。

然后,使用socket对象的connect_ex()方法来尝试连接指定的IP地址和端口号。如果连接成功,返回值为0,表示端口是打开的;如果连接失败,返回其他数值,表示端口是关闭的。

最后,我们使用一个循环来扫描IP地址为127.0.0.1的1-1000端口,并打印出每个端口的连接状态。

需要注意的是,在使用port()函数后,要记得使用close()方法关闭socket连接,以释放资源和避免占用过多的系统资源。

这就是利用Python的port()函数实现端口扫描与连接探测的方法和示例。你可以根据需要修改IP地址和端口范围,并根据返回的结果来进行更进一步的操作,如运行特定的程序或发送警报等。