Harischandra18/tcp-port-scanner-multithreaded

GitHub: Harischandra18/tcp-port-scanner-multithreaded

一款基于 Python 标准库的多线程 TCP 端口扫描器,专注于轻量、可靠的服务探测与横幅识别。

Stars: 0 | Forks: 0

# 🔍 TCP 端口扫描器 ## 📌 描述 **TCP 端口扫描器**是一款基于 Python 的安全工具,使用并发线程扫描目标主机的开放 TCP 端口,识别运行中的服务,并尝试抓取服务横幅以进行指纹识别。该工具完全基于 Python 标准库构建,零外部依赖。 此工具设计为准确、快速且易于使用,适用于执行授权网络评估的渗透测试人员、系统管理员和安全研究人员。 ## ✨ 功能特性 - **TCP 连接扫描** — 使用完整的 TCP 握手进行可靠的开放端口检测 - **多线程引擎** — 可配置的线程池(`ThreadPoolExecutor`)实现高速扫描 - **横幅抓取** — 从开放端口获取服务横幅以识别软件/版本 - **服务指纹识别** — 将 60 多个知名端口映射为服务名称 - **简洁 CLI 接口** — 由 `argparse` 提供支持,包含实用的标志和使用示例 - **文件输出** — 可选择将结果导出为结构化的 `.txt` 报告 - **健壮的错误处理** — 优雅处理不可达主机、超时和无效输入 - **零依赖** — 仅使用 Python 标准库(`socket`、`concurrent.futures`、`argparse`) ## 🛠 技术栈 | 组件 | 技术 | |---------------|----------------------------------------| | 语言 | Python 3.8+ | | 并发 | `concurrent.futures.ThreadPoolExecutor` | | 网络 | `socket`(TCP 连接) | | CLI | `argparse` | | 数据建模 | `dataclasses` | ## 📦 安装 ### 先决条件 - Python 3.8 或更高版本 ### 步骤 ``` # 克隆仓库 git clone https://github.com/yourusername/tcp-port-scanner.git cd tcp-port-scanner # (可选)创建虚拟环境 python3 -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows # 无需安装依赖 — 仅标准库 # 但您可以验证: python3 -c "import socket, concurrent.futures, argparse; print('All good!')" # 使脚本可执行(Linux/macOS) chmod +x main.py ``` ## 🚀 使用方法 ### 基本语法 ``` python3 main.py --target [OPTIONS] ``` ### 可用参数 | 标志 | 类型 | 默认值 | 描述 | |------------------|---------|--------|-------------------------------| | `--target` | string | — | 目标 IP 地址或域名(必需) | | `--start-port` | int | 1 | 扫描范围的起始端口 | | `--end-port` | int | 1024 | 扫描范围的结束端口 | | `--threads` | int | 100 | 并发线程数量 | | `--timeout` | float | 1.0 | 每个端口的套接字超时(秒) | | `--output` | string | None | 将结果保存到文件 | | `--no-banner` | flag | False | 禁用横幅抓取(更快) | ### 示例命令 ``` # 扫描域名的前 1024 个端口 python3 main.py --target scanme.nmap.org --start-port 1 --end-port 1024 # 使用激进线程的完整端口扫描 python3 main.py --target 192.168.1.1 --start-port 1 --end-port 65535 --threads 500 --timeout 0.5 # 无横幅抓取的快速扫描 python3 main.py --target 10.0.0.1 --start-port 1 --end-port 1024 --no-banner # 扫描特定范围并保存到文件 python3 main.py --target example.com --start-port 20 --end-port 443 --output results.txt # 缓慢且彻底的扫描(低线程,高超时) python3 main.py --target 172.16.0.5 --start-port 1 --end-port 65535 --threads 50 --timeout 3.0 ``` ## 📊 示例输出 ``` ============================================================ TCP Port Scanner ============================================================ Target : scanme.nmap.org (45.33.32.156) Ports : 1 - 1024 Threads : 100 Timeout : 1.0s Banners : Yes ============================================================ Scanning 1024 ports... [+] Port 22 OPEN SSH [+] Port 80 OPEN HTTP [+] Port 443 OPEN HTTPS Progress: 1024/1024 ports scanned (312 ports/sec) Completed in 3.28s PORT STATUS SERVICE BANNER -------- ---------- -------------------- ---------------------------------------- 22 OPEN SSH SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.13 80 OPEN HTTP HTTP/1.0 404 Not Found | Content-Type: tex... 443 OPEN HTTPS - Scan complete. 3 open port(s) found. ``` ### 文件输出(`results.txt`) ``` TCP Port Scan Report ============================================================ Target : scanme.nmap.org (45.33.32.156) Port Range : 1 - 1024 Timestamp : 2025-09-01 14:32:05 Open Ports : 3 ============================================================ PORT STATUS SERVICE BANNER -------- ---------- -------------------- ---------------------------------------- 22 OPEN SSH SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.13 80 OPEN HTTP HTTP/1.0 404 Not Found | Content-Type: tex... 443 OPEN HTTPS - ``` ## 🗂 项目结构 ``` port_scanner/ │ ├── main.py # Entry point: CLI parsing and scan orchestration │ ├── scanner/ │ ├── __init__.py # Package initializer │ ├── scanner.py # PortScanner class with ThreadPoolExecutor engine │ ├── banner.py # Banner grabbing with protocol-aware probing │ └── utils.py # Host resolution, validation, formatting, file output │ ├── requirements.txt # No external dependencies └── README.md # Project documentation ``` ## 🔮 后续改进 - **UDP 扫描** — 新增 UDP 端口扫描模式 - **操作系统指纹识别** — 通过 TTL 和 TCP 窗口大小估算目标操作系统 - **CVE 查询** — 将检测到的服务版本与 CVE 数据库进行交叉引用 - **JSON/CSV 输出** — 支持结构化导出格式,便于流水线集成 - **异步引擎** — 使用 `asyncio` 替代 `ThreadPoolExecutor` 以提高吞吐量 - **速率限制/规避** — 添加扫描节流和随机端口顺序以避免 IDS 检测 - **GUI 仪表盘** — 使用 `rich` 或 `curses` 实现终端 UI,提供实时扫描可视化 - **CI/CD 流水线** — 添加 GitHub Actions 并使用 `pytest` 为核心模块编写单元测试 ## ⚠️ 免责声明 ## 📄 许可证 MIT 许可证 — 详情见 `LICENSE`。
标签:argparse, dataclasses, Linux工具, Python 3.8, Python标准库, Python网络编程, Qt框架, Scrypt密钥派生, SEO:Python安全工具, SEO:端口扫描工具, SEO:网络安全工具, socket编程, sysadmin工具, TCP Connect扫描, TCP端口扫描, ThreadPoolExecutor, 云存储安全, 并发编程, 报告导出, 授权评估, 文件输出, 服务指纹识别, 服务识别, 横幅抓取, 端口探测, 端口映射, 线程池, 网络扫描, 逆向工具, 错误处理, 零依赖