MhamdiJasser/TCP-Port-Scanner
GitHub: MhamdiJasser/TCP-Port-Scanner
一款零依赖的纯 Python TCP 端口扫描器,支持 IPv4/IPv6、CIDR 子网扫描、服务识别与 Banner 提取,可导出多格式报告。
Stars: 0 | Forks: 0
# 🛡️ TCP Oracle 扫描器
### *一款快速、轻量级的 TCP 端口扫描器 —— 网络探测与精准洞察的交汇之处*




*一个纯 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, 云存储安全, 占用监测, 插件系统, 数据统计, 无后门, 端口扫描, 网络工具, 网络扫描, 资产管理, 逆向工具