k0m1d3v/3mme_PortScanner
GitHub: k0m1d3v/3mme_PortScanner
基于 Python 标准库的零依赖、多线程 TCP 端口扫描器,支持 CIDR 网段扫描、banner 抓取和 JSON 输出,适用于安全侦察和资产快速清点。
Stars: 0 | Forks: 0
# port-scanner
一个使用 Python 编写的快速、多线程 TCP 端口扫描器。支持单主机、CIDR 网络范围、banner 抓取和 JSON 输出 —— 旨在通过 Web UI 进行扩展。
## 功能特性
- 通过 `ThreadPoolExecutor` 进行多线程扫描(最多 200+ 个线程)
- CIDR 网络范围扫描(例如 `192.168.1.0/24`)
- 对开放端口进行 banner 抓取(被动 + HTTP 探测)
- 主机名的 DNS 解析
- 灵活的端口选择:单个端口、范围、逗号分隔或 `top100` 预设
- 输出到终端(格式化表格)和/或 JSON 文件
- 使用 `argparse` 构建的简洁 CLI
## 环境要求
- Python 3.10+
- 无需外部依赖 —— 仅使用标准库
## 安装说明
```
git clone https://github.com/k0m1d3v/port-scanner.git
cd port-scanner
```
不需要执行 `pip install`。
## 使用方法
```
python main.py [options]
```
### 参数说明
| 参数 | 描述 | 默认值 |
|---|---|---|
| `target` | 主机名、IP 或 CIDR 范围(例如 `192.168.1.0/24`) | *(必填)* |
| `-p`, `--ports` | 端口选择(见下方说明) | `top100` |
| `-t`, `--timeout` | 每个端口的超时时间(秒) | `1.0` |
| `--threads` | 并发线程数 | `100` |
| `--no-banner` | 禁用 banner 抓取 | `False` |
| `--show-closed` | 同时显示已关闭/被过滤的端口 | `False` |
| `--output FILE` | 将结果保存为 JSON 文件 | `None` |
### 端口选择
| 格式 | 示例 | 描述 |
|---|---|---|
| Preset | `top100` | 24 个最常用的端口 |
| 范围 | `1-1024` | 1 到 1024 之间的所有端口 |
| 列表 | `80,443,8080` | 指定的端口 |
| 混合 | `22,80,8000-8100` | 组合使用 |
## 示例
```
# 扫描单个主机的 top 100 端口
python main.py scanme.nmap.org
# 扫描整个网络范围 (CIDR)
python main.py 192.168.1.0/24 -p 22,80,443 --no-banner --output network.json
# 带有 JSON 输出的 Full port range 扫描
python main.py 192.168.1.1 -p 1-65535 --output result.json
# 快速网络扫描,无 banner grabbing
python main.py 10.0.0.0/24 -p top100 -t 0.5 --threads 200 --no-banner
# Specific ports,显示包含 closed 的所有结果
python main.py example.com -p 22,80,443,3306 --show-closed
```
### 示例输出 —— 单主机
```
============================================================
Target : scanme.nmap.org (45.33.32.156)
Porte : 24 scansionate
Aperte : 2
============================================================
PORTA STATO SERVIZIO BANNER
--------------------------------------------------------
22 open SSH SSH-2.0-OpenSSH_6.6.1p1
80 open HTTP HTTP/1.1 200 OK
```
### 示例输出 —— 网络扫描
```
[*] Network scan: 254 host, 8 porte ciascuno
[*] Stima: fino a 2032 connessioni totali
[1/254] Scansione 192.168.1.1... nessuna porta aperta
[13/254] Scansione 192.168.1.13... 2 porte aperte
============================================================
Target : 192.168.1.13 (192.168.1.13)
Porte : 8 scansionate
Aperte : 2
============================================================
PORTA STATO SERVIZIO BANNER
--------------------------------------------------------
80 open HTTP
445 open SMB
```
### JSON 输出格式
```
{
"meta": {
"timestamp": "2026-05-07T14:32:10Z",
"total_hosts": 254,
"hosts_with_open_ports": 3
},
"hosts": [
{
"target": "192.168.1.13",
"ip": "192.168.1.13",
"open_ports": [
{
"port": 80,
"state": "open",
"service": "HTTP",
"banner": "HTTP/1.1 200 OK Server: Apache"
}
]
}
]
}
```
## 项目结构
```
port-scanner/
├── main.py # Entry point, CLI (argparse), CIDR parsing
├── scanner.py # Core engine: socket, threading, banner grab
├── output.py # Formatting: table and JSON
└── README.md
```
## 法律免责声明
本工具旨在供您在拥有所有权或已获得明确授权的系统上使用。未经授权的端口扫描在您所在的司法管辖区可能属于违法行为。作者对滥用行为不承担任何责任。
## 开发路线图
- [ ] UDP 扫描
- [ ] 服务版本检测 (CPE)
- [ ] Web UI (Flask 或 FastAPI + Vue 3)
- [ ] 导出为 CSV 和 HTML 报告
- [ ] 通过 MAC 地址进行 OUI 查询
- [ ] 集成 Shodan / Censys API
## 作者
由 Mirko 构建,作为个人安全工具项目的一部分。
GitHub: [github.com/k0m1d3v](https://github.com/k0m1d3v)
标签:API安全, Banner Grabbing, Banner抓取, CIDR, IP扫描, JSON输出, Mr. Robot, Python, Python标准库, TCP扫描, 二进制发布, 云存储安全, 并发扫描, 开源工具, 插件系统, 数据统计, 无后门, 无第三方依赖, 无线安全, 服务器安全, 端口扫描, 网络安全, 网络扫描, 隐私保护