beratt06/Python-Port-Scanner

GitHub: beratt06/Python-Port-Scanner

用纯标准库实现的轻量级 Python 端口扫描器,支持 TCP Connect/SYN/UDP 多种扫描模式及 Banner 抓取和 OS 指纹推测,适合网络安全教学与学习。

Stars: 0 | Forks: 1

# Python 端口扫描器 🔍 这是一个出于**教育目的**开发的基于 Python 的 Nmap 克隆工具,旨在更好地理解网络编程、socket 结构和网络安全概念(TCP/UDP 握手、Raw Sockets、Banner Grabbing)。本项目使用标准 Python 库开发,不包含任何外部依赖(dependency)。 ⚠️ **免责声明:** 本工具仅出于教育、防御性安全测试和理解网络架构的目的而编写。请仅在您自己的网络或您拥有授权的系统中使用。未经授权的扫描可能会产生法律责任。 ## 🚀 功能 - **多种扫描模式:** - `TCP Connect Scan (-sT)`:完整握手、可靠的扫描。 - `TCP SYN Scan (-sS)`:使用 Raw socket 执行的半开(隐蔽)扫描(需要 Root/Admin 权限)。 - `UDP Scan (-sU)`:使用特定协议探测(DNS、NTP 等)扫描无连接的 UDP 端口。 - **Banner Grabbing & Fingerprinting:** 通过向开放端口的服务发送特定探测,识别正在运行的服务的品牌和版本。 - **操作系统探测:** 通过查看目标的 TTL(Time To Live)值进行粗略的 OS 分析(Linux、Windows、网络设备)。 - **多线程(Multi-threading):** 基于 `ThreadPoolExecutor` 的异步架构,用于加速网络扫描。 - **详细报告:** 能够将结果导出为 `JSON`、`CSV` 和 `HTML`(可视化表格)格式。 ## 🛠️ 安装说明 本项目设计为在 Python 3.8 及更高版本上运行。不需要任何 `pip install` 操作。 ``` # 将 Repoyu 克隆到您的计算机 git clone https://github.com/beratt06/Python-Port-Scanner.git # 进入 Project directory cd Python-Port-Scanner ``` ## 💻 使用示例 您可以通过在终端(或 CMD/PowerShell)中运行以下命令来测试该工具。 **1. 基础扫描(默认扫描前 1024 个端口):** ``` python scanner.py -t 192.168.1.10 ``` **2. 真实 SYN(半开)扫描(隐蔽模式):** *(注意:由于使用了 Raw socket,在 Linux 上需使用 `sudo` 运行,在 Windows 上需以管理员身份运行)* ``` sudo python scanner.py -t 192.168.1.10 -p 1-1000 --scan-type syn ``` **3. UDP 扫描(例如:DNS、NTP 服务):** ``` python scanner.py -t 192.168.1.10 -p 53,123,161 --scan-type udp ``` **4. 全面扫描并生成 HTML 报告:** *(扫描所有端口,以 300 个 thread 的速度运行,进行 OS 探测并保存为 HTML)* ``` python scanner.py -t example.com -p 1-65535 --threads 300 --format html --output raporlar/sonuc.html --os-guess ``` ## ⚙️ 参数列表 | 参数 | 功能说明 | | :--- | :--- | | `-t, --target` | 目标 IP 地址或域名(例如:`10.0.0.1` 或 `google.com`) **[必填]** | | `-p, --ports` | 要扫描的端口范围(例如:`1-1000` 或 `22,80,443`) | | `--scan-type` | 扫描方式:`connect`(默认)、`syn` 或 `udp` | | `--threads` | 决定扫描速度的并发任务数(默认:`100`) | | `--timeout` | 尝试连接端口的最长等待时间(默认:`1.0` 秒) | | `--no-banner` | 跳过读取服务版本以加快扫描速度 | | `--output` | 报告保存路径(例如:`cikti.json`) | | `--format` | 导出格式:`json`、`csv` 或 `html` | | `--os-guess` | 通过 Ping 目标并根据返回的 TTL 值推测操作系统 | ## 📂 代码架构 ``` Python-Port-Scanner/ ├── scanner.py # Ana giriş noktası (Argümanları işler ve orkestrasyonu sağlar) ├── core/ │ ├── port_scanner.py # Standart TCP Connect tarayıcı motoru │ ├── syn_scanner.py # TCP SYN paketlerini el ile (Raw Socket) inşa eden motor │ ├── udp_scanner.py # ICMP hata yakalamalı UDP tarayıcı motoru │ ├── banner_grabber.py # Açık portlardan SSL destekli banner okuyucu │ ├── fingerprint.py # Regex ile versiyon ve marka ayrıştıran analizci │ ├── common_ports.py # Nmap-services tarzı port tahmin tablosu │ └── os_guess.py # Subprocess ile PING atıp TTL analiz eden modül └── report/ └── exporter.py # Çıktıları JSON/CSV/HTML tablolarına dönüştüren modül ``` ## 📝 后续开发计划 (TODO) - [ ] IPv6 支持 - [ ] `--stealth`(延迟)模式,通过不向目标发送大量数据包来优化扫描时间 - [ ] 结合高级 CVE(漏洞)数据库 API 连接,查询检测到的版本是否存在已知漏洞 *本项目始终欢迎贡献与建议。*
标签:Nmap克隆, Python, 插件系统, 教育目的, 数据统计, 无后门, 端口扫描, 网络安全, 网络编程, 逆向工具, 隐私保护