Python多线程扫描端口代码示例

以下是一个使用Python多线程扫描端口的代码示例:

Python多线程扫描端口代码示例
(图片来源网络,侵删)
import socket
import threading
from queue import Queue
定义一个函数,用于扫描指定IP地址和端口范围
def port_scan(ip, port_start, port_end):
    for port in range(port_start, port_end + 1):
        try:
            # 创建一个socket对象
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            # 设置超时时间
            s.settimeout(1)
            # 尝试连接指定的IP地址和端口
            result = s.connect_ex((ip, port))
            # 如果连接成功,打印端口号
            if result == 0:
                print(f"端口 {port} 是开放的")
            # 关闭socket连接
            s.close()
        except Exception as e:
            print(f"扫描端口 {port} 时发生错误: {e}")
定义一个函数,用于处理多线程任务
def threader():
    while True:
        # 从队列中获取任务
        worker = q.get()
        # 执行任务
        port_scan(worker[0], worker[1], worker[2])
        # 任务完成
        q.task_done()
定义要扫描的IP地址和端口范围
ip = "127.0.0.1"
port_start = 1
port_end = 1024
创建一个队列,用于存储任务
q = Queue()
创建10个线程
for x in range(10):
    t = threading.Thread(target=threader)
    # 将线程设置为守护线程,这样主线程结束时,子线程也会结束
    t.daemon = True
    t.start()
将任务添加到队列中
for worker in [(ip, port_start, port_end)] * 10:
    q.put(worker)
等待所有任务完成
q.join()

这个代码示例使用了Python的socket库来扫描指定IP地址和端口范围,首先定义了一个port_scan函数,用于扫描指定的IP地址和端口范围,然后定义了一个threader函数,用于处理多线程任务,在主程序中,创建了一个队列q,用于存储任务,并创建了10个线程,将任务添加到队列中,并等待所有任务完成。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/672352.html

(0)
未希的头像未希新媒体运营
上一篇 2024-06-03 22:45
下一篇 2024-06-03 22:47

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入