Khushi200292/Multi-threaded-Port-Scanner

GitHub: Khushi200292/Multi-threaded-Port-Scanner

一个基于 Python 的多线程 TCP 端口扫描器,通过并发连接探测目标主机指定端口范围内的开放端口,主要用于教育目的和网络编程学习。

Stars: 0 | Forks: 0

# 多线程端口扫描器 # 多线程 TCP 端口扫描器 ## 概述 本项目是一个基于 Python 的多线程 TCP 端口扫描器,它能够扫描目标主机上指定范围的端口,并识别哪些端口是开放的。该扫描器利用多线程来提高扫描速度,同时支持 IP 地址和主机名。 ## 功能 * 扫用户自定义范围的 TCP 端口。 * 支持 IP 地址和域名。 * 使用多线程加快扫描速度。 * 扫描过程中显示开放和关闭的端口。 * 扫描完成后提供所有开放端口的汇总。 * 优雅地处理无效的主机名和连接错误。 ## 环境要求 ### Python 版本 * Python 3.8 或更高版本 ### 所需模块 安装所需的包: ``` pip install IPy ``` ### 使用的内置模块 * socket * threading * queue ## 项目结构 ``` port-scanner/ │ ├── scan.py └── README.md ``` ## 工作原理 1. 用户输入目标 IP 地址或主机名。 2. 用户指定要扫描的端口范围。 3. 程序验证目标主机。 4. 创建一个包含指定范围内所有端口的队列。 5. 启动多个线程以并发扫描端口。 6. 每个线程尝试与一个端口建立 TCP 连接。 7. 记录并显示开放的端口。 8. 所有线程完成后,显示开放端口的汇总。 ## 运行程序 在项目目录中打开终端并运行: ``` python scan.py ``` ## 示例 ### 输入 ``` Enter the target host IP or hostname: 127.0.0.1 Enter the range of ports to scan (eg. 1-200): 20-100 ``` ### 输出 ``` Port 22: Open Port 80: Open Port 21: Closed Port 23: Closed Summary: Port 22: Open Port 80: Open ``` ## 代码组件 ### scan_ports() 此函数: * 从队列中获取端口。 * 尝试与每个端口建立 TCP 连接。 * 识别端口是开放还是关闭。 * 将开放的端口存储在列表中。 ### main() 此函数: * 接收用户输入。 * 验证目标主机。 * 创建端口队列。 * 启动工作线程。 * 显示扫描结果。 ## 错误处理 该程序处理以下情况: * 无效的主机名。 * 网络连接错误。 * 无效的端口范围。 * 用户使用 Ctrl + C 中断。 ## 限制 * 仅扫描 TCP 端口。 * 不执行服务检测。 * 在高延迟网络上可能较慢。 * 结果取决于防火墙和网络配置。 ## 教育目的 本项目旨在用于教育目的,以演示: * Socket 编程 * Python 中的多线程 * 队列管理 * 基本的网络扫描概念 请始终仅扫描您拥有或获得明确测试权限的系统网络。 ## 作者 作为一个 Python 网络和多线程项目创建,用于学习端口扫描概念。
标签:Python, TCP协议, 插件系统, 数据统计, 无后门, 端口扫描, 网络工具, 逆向工具