MhamdiJasser/TCP-Port-Scanner

GitHub: MhamdiJasser/TCP-Port-Scanner

一款零依赖的纯 Python TCP 端口扫描器,支持 IPv4/IPv6、CIDR 子网扫描、服务识别与 Banner 提取,可导出多格式报告。

Stars: 0 | Forks: 0

# 🛡️ TCP Oracle 扫描器 ### *一款快速、轻量级的 TCP 端口扫描器 —— 网络探测与精准洞察的交汇之处* ![Python](https://img.shields.io/badge/Python-3776AB?style=flat-square\&logo=python\&logoColor=white) ![Async](https://img.shields.io/badge/Threaded%20Engine-4CAF50?style=flat-square) ![Zero Dependencies](https://img.shields.io/badge/Dependencies-Zero-9C27B0?style=flat-square) ![IPv6 Ready](https://img.shields.io/badge/IPv6-Supported-2196F3?style=flat-square) *一个纯 Python 编写的侦察引擎,能够揭示跨越 IPv4、IPv6 以及整个 CIDR 范围的开放网关。*
## ✨ 核心功能 | | 功能 | 描述 | | --- | --------------------------------- | ------------------------------------------------------------------------------------------ | | 🌐 | **双栈感知** | 自动检测并支持 IPv4 和 IPv6 目标,并进行正确的 socket 处理 | | 🧭 | **服务识别引擎** | 使用 `services` 及增强的内部回退注册表将端口映射到已知服务 | | 🧪 | **Banner 提取模块** | 可选的握手探测,用于从开放端口提取服务 banner | | 📦 | **端口配置系统** | 预定义的扫描集:`top20`、`top100`、`web`、`db`、`remote`、`mail`、`full` | | 🛰️ | **CIDR 扫描引擎** | 使用类似 `192.168.1.0/24` 的 CIDR 表示法扫描整个子网 | | 💾 | **多格式导出器** | 将结果输出为 JSON、CSV 或纯文本 | | ⚡ | **并发扫描核心** | 用于高速扫描的线程池引擎(默认:100 个 worker) | | 🧩 | **零外部依赖** | 完全基于标准库 —— 便携且极简 | ## 📂 神秘结构 ``` tcp-port-scanner/ │ ├── 🧠 main.py # CLI invocation layer — argument parsing & orchestration core ├── ⚙️ scanner.py # Core scanning engine — threading & socket probing logic ├── 📡 services.py # Port → service name resolution registry ├── 🔧 utils.py # DNS resolution, validation, and address-family detection ├── 📤 output.py # Terminal rendering + JSON/CSV export system └── 🧪 tests.py # Unit validation suite (stdlib unittest) ``` ## 🚀 安装仪式 ### I — 克隆仓库 ``` git clone https://github.com/MhamdiJasser/TCP-Port-Scanner.git cd tcp-port-scanner ``` 无依赖。无需配置。纯粹的执行。 ## ⚔️ 调用语法 ``` python main.py TARGET [TARGET ...] [OPTIONS] ``` ## 🧭 扫描示例 ### 基础侦察 ``` python main.py scanme.nmap.org ``` ### 定向端口扫描 ``` python main.py 192.168.1.1 -p 1-1024 ``` ### IPv6 探测 ``` python main.py ::1 -p 22,80,443 ``` ### 启用 Banner 提取 ``` python main.py example.com --banners ``` ### 基于配置的扫描 ``` python main.py 10.0.0.1 --profile web ``` ### 全子网扫描 ``` python main.py 192.168.1.0/24 -p 22,80,443,8080 ``` ### 导出情报报告 ``` python main.py example.com -p 1-1024 -o results.json --format json ``` ### 高速深度扫描 ``` python main.py 10.0.0.1 -p 1-65535 -w 256 -t 0.3 ``` ## ⚙️ 配置标志 | 标志 | 含义 | | --------------- | ------------------------------------------------ | | `-p, --ports` | 端口指定 (`80`, `1-1024`, `22,80,443`) | | `--profile` | 预定义扫描集 (`web`, `db`, `mail` 等) | | `-t, --timeout` | 每个端口的连接超时时间(默认:1.0s) | | `-w, --workers` | 线程池大小(默认:100) | | `--banners` | 启用服务 banner 提取 | | `--show-closed` | 显示已关闭/被过滤的端口 | | `-o, --output` | 输出文件路径 | | `--format` | 导出格式:`json`、`csv`、`txt` | | `--no-banner` | 禁用 ASCII banner 显示 | ## 📦 端口配置手册 | Profile | 用途 | | -------- | -------------------------------------------------------- | | `top20` | 最常被扫描的端口 | | `top100` | 默认的平衡侦察集 | | `web` | HTTP/HTTPS 生态系统 (80, 443, 8080, 8443 等) | | `db` | 数据库层 (MySQL、PostgreSQL、Redis、MongoDB 等) | | `remote` | 远程访问服务 (SSH、RDP、VNC、Telnet) | | `mail` | SMTP / IMAP / POP3 基础设施 | | `full` | 整个 1–65535 端口范围(缓慢、彻底的扫描) | ## 📤 输出格式 ### 🧾 JSON Oracle 输出 ``` { "target": "scanme.nmap.org", "resolved_ip": "45.33.32.156", "address_family": "IPv4", "scan_duration_s": 3.21, "open_port_count": 3, "ports": [ { "port": 22, "state": "open", "service": "SSH", "latency_ms": 142.3, "banner": "SSH-2.0-OpenSSH_6.6.1p1" } ], "error": "" } ``` ### 📊 CSV 流 ``` target,resolved_ip,address_family,port,state,service,latency_ms,banner scanme.nmap.org,45.33.32.156,IPv4,22,open,SSH,142.3,SSH-2.0-OpenSSH_6.6.1p1 ``` ## 🧪 引擎测试 ``` python -m pytest tests.py -v ``` 或回退方案: ``` python tests.py ```
标签:Banner抓取, certspotter, IPv6, PowerShell, Python, 云存储安全, 占用监测, 插件系统, 数据统计, 无后门, 端口扫描, 网络工具, 网络扫描, 资产管理, 逆向工具