Nithin2307/Advanced-Network-Port-Scanner

GitHub: Nithin2307/Advanced-Network-Port-Scanner

基于 Python 标准库构建的多线程端口扫描工具包,支持 TCP 全端口扫描、Banner 抓取、服务指纹识别与 CIDR 子网探测,提供 CLI 和 Tkinter GUI 双前端。

Stars: 0 | Forks: 0

# 高级网络端口扫描套件 **一个多线程 Python 侦察工具包,包含 CLI 和 GUI 前端,专为快速、准确的端口发现、Banner 抓取和子网扫描而构建。** ![Python](https://img.shields.io/badge/Python-3.8%2B-blue?style=flat-square&logo=python&logoColor=white) ![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey?style=flat-square) ![Threads](https://img.shields.io/badge/Multi--Threaded-Yes-success?style=flat-square) ![GUI](https://img.shields.io/badge/GUI-Tkinter-orange?style=flat-square) ![License](https://img.shields.io/badge/License-MIT-green?style=flat-square) ![Status](https://img.shields.io/badge/Status-Active-brightgreen?style=flat-square)
## 概述 **高级网络端口扫描套件**是一个模块化的 Python 项目,可在完整的 `1–65535` 端口范围内执行并发的 **TCP CONNECT** 扫描。它支持单主机扫描、具有存活主机发现功能的全子网扫描、Socket 级别的 **Banner 抓取**、自动的**服务指纹识别**,以及带有持久化结果日志记录的友好 **Tkinter GUI** 前端。 完全使用 Python 标准库端到端构建 —— **无需任何外部依赖**。 ## 功能特性 - **多线程 TCP CONNECT 扫描** - 每个端口一个线程,受锁保护的输出 - 通过 `socket.recv()` 进行 **Banner 抓取**以识别服务 - **双层服务指纹识别** - `socket.getservbyport()` 配合 13 协议回退映射表(FTP、SSH、Telnet、SMTP、DNS、HTTP、IMAP、HTTPS、MySQL、RDP 等) - **感知 CIDR 的子网扫描** - 自动发现端口 `:80` 和 `:443` 上的存活主机 - **Tkinter GUI**,带有实时滚动输出、主机/子网模式切换以及线程化执行 - 通过 `ipaddress` 模块进行 **IPv4 输入验证** - 持久化的 **`.txt` 日志记录**,保存到专属的结果文件中 - **跨平台** - 可在 Windows、Linux 和 macOS 上运行 ## 项目结构 ``` advanced-network-port-scanner/ │ ├── 📂 src/ # Source code — the scanner suite │ │ │ ├── 🐍 port_scanner.py # Module 1 · Entry-level multi-threaded scanner │ │ # └─ TCP CONNECT · IP validation · range input │ │ │ ├── 🐍 advanced_port_scanner.py # Module 2 · Production-grade single-host scanner │ │ # └─ Banner grabbing · service ID · .txt output │ │ │ ├── 🐍 subnet_port_scanner.py # Module 3 · Network-wide reconnaissance engine │ │ # └─ CIDR parsing · live-host probe · multi-host sweep │ │ │ └── 🐍 gui_port_scanner.py # Module 4 · Tkinter GUI front-end │ # └─ Threaded scans · live output panel · mode toggle │ ├── 📂 results/ # Auto-generated scan reports (gitignored) │ ├── 📄 scan_results.txt # ↳ output from advanced_port_scanner │ ├── 📄 host_scan_results.txt # ↳ output from subnet host-mode │ └── 📄 gui_scan_results.txt # ↳ output from GUI scanner │ ├── 📂 docs/ # Project documentation & screenshots │ ├── 🖼️ gui-preview.png # ↳ screenshot of the Tkinter front-end │ └── 📄 USAGE.md # ↳ detailed usage walkthrough │ ├── 📜 README.md # ← You are here ├── 📜 requirements.txt # Dependencies (stdlib only — no install needed) ├── 📜 LICENSE # MIT License └── 📜 .gitignore # Excludes venv, __pycache__, scan results, etc. ``` ## 模块分解 | 模块 | 描述 | 核心功能 | |---|---|---| | `port_scanner.py` | 轻量级、适合初学者的扫描器 | 多线程 TCP CONNECT、IP 验证、端口范围输入 | | `advanced_port_scanner.py` | 生产级单主机扫描器 | Banner 抓取、服务识别、`scan_results.txt` 输出 | | `subnet_port_scanner.py` | 网络级侦察 | CIDR 解析、存活主机探测、多主机扫描 | | `gui_port_scanner.py` | 面向非 CLI 用户的可视化前端 | Tkinter GUI、模式切换、线程化扫描、实时输出面板 | ## 技术栈 - **语言:** Python 3.8+ - **标准库:** `socket`、`threading`、`ipaddress`、`time`、`os.` - **GUI:** `tkinter`、`tkinter.ttk`、`tkinter.scrolledtext`、`tkinter.messagebox.` ## 安装 ``` # 1. 克隆 repository git clone https://github.com//advanced-network-port-scanner.git cd advanced-network-port-scanner # 2. (可选) 创建 virtual environment python -m venv venv source venv/bin/activate # macOS / Linux venv\Scripts\activate # Windows # 3. 安装 requirements (无 — 仅使用 stdlib) pip install -r requirements.txt ``` ## 用法 ### 1. 基础的单主机扫描 ``` python port_scanner.py ``` ``` Enter target IP address (e.g., 127.0.0.1): 192.168.0.105 Enter start port (e.g., 1): 1 Enter end port (e.g., 100): 1000 ``` ### 2. 带 Banner 抓取的高级扫描 ``` python advanced_port_scanner.py ``` ### 3. 带存活主机发现的子网扫描 ``` python subnet_port_scanner.py ``` 选择选项 `2`,然后输入 CIDR 范围(例如:`192.168.0.0/24`)。 ### 4. 启动 GUI ``` python gui_port_scanner.py ``` 输入目标 IP **或**子网,选择模式,设置端口范围,然后点击 **Start Scan**。 ## 示例输出 ``` [*] Scanning 192.168.0.105 from port 1 to 10000... [+] 192.168.0.105:135 OPEN | Service: epmap | Banner: No banner [+] 192.168.0.105:139 OPEN | Service: netbios-ssn | Banner: No banner [+] 192.168.0.105:445 OPEN | Service: microsoft-ds | Banner: No banner [+] 192.168.0.105:903 OPEN | Service: Unknown | Banner: 220 VMware Authentication Daemon v1.10 [+] 192.168.0.105:913 OPEN | Service: Unknown | Banner: 220 VMware Authentication Daemon v1.0 [+] 192.168.0.105:7680 OPEN | Service: ms-do | Banner: No banner [+] 192.168.0.105:8080 OPEN | Service: HTTP Proxy | Banner: No banner [✓] Scan completed in 14.7 seconds. [✓] Results saved to 'scan_results.txt'. ``` ## 路线图 - [ ] 添加 UDP 扫描模式 - [ ] 支持 SYN/半开扫描(需要原始套接字和 root 权限) - [ ] 将结果导出为 JSON 和 CSV - [ ] 针对检测到的服务 Banner 进行集成的 CVE 查询 - [ ] Docker 化发布以实现便携式部署 - [ ] 通过 `argparse` 提供 CLI 标志以支持非交互式运行 ## 法律与道德免责声明 本工具**仅供授权的安全测试、教育用途和个人研究使用**。扫描您不拥有或未获得明确书面测试许可的网络或系统,根据适用的法律(如 CFAA、GDPR、《计算机滥用法》、《信息技术法 2000》等)可能是违法行为。作者对因滥用本软件造成的任何误用或损害**不承担任何责任**。 ## 许可证 本项目仅供教育目的使用。 ## 作者 **Nithin Sridasyam** **数字取证与网络安全,研究生 · 奥尔巴尼大学** [作品集](https://nithin2307.github.io) · [LinkedIn](www.linkedin.com/in/nithin-sridasyam/) · [电子邮件](mailto:sridasyamnithin@gmail.com)
如果您觉得这个项目有用,欢迎在 GitHub 上给它点个 ⭐。
标签:CIDR, Python, Scrypt密钥派生, Socket编程, TCP CONNECT, Tkinter, 侦察工具, 图形界面, 子网扫描, 开源, 情报分析, 插件系统, 攻击路径可视化, 数据统计, 无后门, 无线安全, 服务器安全, 服务指纹识别, 横幅抓取, 端口扫描, 系统编程, 网络安全, 网络诊断, 轻量级工具, 逆向工具, 隐私保护, 黑客工具