以下是一个基于 Python 的多线程端口扫描程序的代码示例:

import threading
import socket

# 定义一个函数,用于扫描指定IP地址和端口号
def port_scan(ip, port):
    try:
        # 创建一个套接字对象
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # 设置套接字超时时间
        s.settimeout(1)
        # 尝试连接主机和端口号
        result = s.connect_ex((ip, port))
        # 如果连接成功,输出端口号和主机地址
        if result == 0:
            print('Port ' + str(port) + ' on host ' + ip + ' is open')
        # 关闭套接字
        s.close()
    except:
        pass

# 定义一个函数,用于扫描指定IP地址的所有端口
def scan_host(ip, port_range):
    # 遍历指定端口范围内的所有端口
    for port in range(port_range[0], port_range[1] + 1):
        # 创建一个线程对象,并启动线程
        t = threading.Thread(target=port_scan, args=(ip, port))
        t.start()

# 主函数
if __name__ == '__main__':
    # 指定要扫描的主机地址和端口范围
    ip = '127.0.0.1'
    port_range = (1, 65535)
    # 扫描主机地址的所有端口
    scan_host(ip, port_range)

该程序首先定义了两个函数:port_scanscan_hostport_scan 函数用于扫描指定 IP 地址和端口号,如果连接成功,则输出端口号和主机地址;否则不做处理。scan_host 函数用于扫描指定 IP 地址的所有端口,遍历指定端口范围内的所有端口,并创建一个线程对象,将 port_scan 函数作为线程的 target,传递给线程的 args 参数中。

在主函数中,指定要扫描的主机地址和端口范围,并调用 scan_host 函数开始扫描。程序会为每个端口号创建一个线程,同时执行多个线程分别扫描不同的端口号,以提高扫描效率。

Python 多线程端口扫描程序:快速扫描主机开放端口

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

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