python 端口快速扫描

笔记,直接看代码:

python 复制代码
import socket
import threading
 
def PortScan(target_ip, start_port=40000, end_port=65535, num_threads=16):
    open_ports = []
    thread_list = []
     
    def scan_ports(ip, start, end):
        local_open_ports = []
        for port in range(start, end + 1):
            try:
                with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
                    s.settimeout(0.001)
                    result = s.connect_ex((ip, port))
                    if result == 0:
                        local_open_ports.append(port)
            except KeyboardInterrupt:
                break
            except Exception as e:
                pass
        open_ports.extend(local_open_ports)
     
    ports_per_thread = (end_port - start_port + 1) // num_threads
    for i in range(num_threads):
        thread_start_port = start_port + i * ports_per_thread
        thread_end_port = thread_start_port + ports_per_thread - 1
         
        thread = threading.Thread(target=scan_ports, args=(target_ip, thread_start_port, thread_end_port))
        thread.start()
        thread_list.append(thread)
    for thread in thread_list:
        thread.join()
     
    return open_ports
 
if __name__ == "__main__":
    target_ip = "127.0.0.1"
     
    print(f"开始多线程扫描 {target_ip} 上的端口...")
    open_ports = PortScan(target_ip)
     
    if open_ports:
        print(f"开放的端口:{open_ports}")
    else:
        print("没有开放的端口。")

执行结果:

python 复制代码
开始多线程扫描 127.0.0.1 上的端口...
开放的端口:[51735, 49664, 49665, 49666, 49667, 49668, 49673, 63139]

本机测试10秒内可以获得40000以下的端口

做出来用在向日葵rce扫描的(凑个热闹罢了)

总感觉这个多线程的作用似乎不大明显

相关推荐
2023自学中2 小时前
笔记本电脑 连接 手机WIFI,开发板网线连接笔记本,开发板 和 虚拟机 同时上网
linux·单片机·嵌入式硬件·tcp/ip
宇木灵8 小时前
C语言基础学习-二、运算符
c语言·开发语言·学习
funnycoffee1238 小时前
linux系统DNS修改命令
linux·运维·服务器·linux dns
yangSimaticTech8 小时前
沿触发的4个问题
开发语言·制造
小哈里8 小时前
【工具】Linux远程开发核心工具,Git命令缩写与SSH常用命令
linux·git·ssh·工具·远程开发
清水白石0088 小时前
隔离的艺术:用 `unittest.mock` 驯服外部依赖,让测试真正可控
python
舟舟亢亢9 小时前
算法总结——二叉树【hot100】(上)
java·开发语言·算法
码农小韩9 小时前
AIAgent应用开发——大模型理论基础与应用(五)
人工智能·python·提示词工程·aiagent
夏乌_Wx9 小时前
深入理解x86内存寻址:从8086实模式到IA-32段页式映射&Linux内核实现
linux
百锦再9 小时前
Java中的char、String、StringBuilder与StringBuffer 深度详解
java·开发语言·python·struts·kafka·tomcat·maven