aq358237-alt/network-port-scanner
GitHub: aq358237-alt/network-port-scanner
一款基于纯 Python 标准库构建的多线程网络端口扫描器,面向授权渗透测试场景提供端口探测、服务识别与报告导出。
Stars: 0 | Forks: 0
# NetScan — 网络端口扫描器




一个快速、多线程的网络端口扫描器,使用纯 Python 构建。专为授权的渗透测试和网络侦察设计。无需第三方依赖——可在任何安装了 Python 3.7+ 的系统上运行。
## 功能
- **多线程** — 同时扫描数百个端口(线程数可配置)
- **服务检测** — 识别 30 多种常见服务(SSH、HTTP、MySQL、RDP 等)
- **渗透测试笔记** — 标记高风险端口,并提供需要调查的特定攻击向量
- **Banner 抓取** — 可选地拉取服务 Banner 用于版本指纹识别
- **灵活的目标指定** — 单个端口、范围、逗号分隔列表、Top 100 或全部 65535 个端口
- **导出报告** — 将结果保存为 JSON 或 CSV 以便记录
- **彩色输出** — 简洁的终端 UI,即时高亮显示开放端口
- **零依赖** — 仅使用 Python 标准库(`socket`、`threading`、`argparse`)
## 演示
```
NetScan - Network Port Scanner v1.0
by Akbar Qureshi
[!] For authorized testing only
Target : 45.33.32.156 (scanme.nmap.org)
Ports : 76 ports
Threads : 100
Timeout : 1.0s per port
Started : 2026-06-10 14:32:08
Scanning...
[OPEN] Port 22 SSH │ SSH-2.0-OpenSSH_6.6.1p1 ★ SSH - Check for weak credentials / old version
[OPEN] Port 80 HTTP │ HTTP/1.1 200 OK ★ HTTP - Check for web vulnerabilities
[OPEN] Port 9929 Unknown
[OPEN] Port 31337 Unknown
────────────────────────────────────────────────────────────
Scan Summary
────────────────────────────────────────────────────────────
Target : 45.33.32.156 (scanme.nmap.org)
Ports scanned: 76
Open ports : 4
Threads used : 100
Duration : 3.42s
────────────────────────────────────────────────────────────
Open Port Details:
Port Service Pentest Note
─────── ─────────────── ─────────────────────────────────────
22 SSH SSH - Check for weak credentials / old version
80 HTTP HTTP - Check for web vulnerabilities
9929 Unknown —
31337 Unknown —
```
## 安装
```
# Clone repo
git clone https://github.com/aq358237-alt/network-port-scanner.git
cd network-port-scanner
# 无需 pip install — 纯 Python stdlib
python3 scanner.py --help
```
## 使用方法
```
# 扫描 top 100 常见端口(默认)
python3 scanner.py -t 192.168.1.1
# 扫描端口范围
python3 scanner.py -t 192.168.1.1 -p 1-1000
# 扫描特定端口
python3 scanner.py -t 192.168.1.1 -p 22,80,443,3306,3389
# 完整扫描 — 所有 65535 个端口(使用更高线程数以提升速度)
python3 scanner.py -t 192.168.1.1 --full --threads 500
# 启用 banner grabbing
python3 scanner.py -t 192.168.1.1 -p 1-1000 --banner
# 将结果保存为 JSON
python3 scanner.py -t 192.168.1.1 -o results.json
# 将结果保存为 CSV
python3 scanner.py -t 192.168.1.1 -o results.csv
# 安全的公开演示目标(由 nmap.org 授权)
python3 scanner.py -t scanme.nmap.org
```
## 选项
| Flag | 描述 | 默认值 |
|------|-------------|---------|
| `-t`, `--target` | 目标 IP 地址或主机名 | 必填 |
| `-p`, `--ports` | 要扫描的端口:`80`、`1-1000` 或 `22,80,443` | Top 100 |
| `--full` | 扫描全部 65535 个端口 | Off |
| `--threads` | 并发线程数 | 100 |
| `--timeout` | 每个端口的等待秒数 | 1.0 |
| `--banner` | 抓取服务 Banner | Off |
| `-o`, `--output` | 导出为 `.json` 或 `.csv` | Off |
## 示例 JSON 输出
请参阅 [`sample_output.json`](sample_output.json) 查看示例报告。
## 工作原理
```
Target IP
│
▼
Port Queue (all target ports added)
│
├──▶ Thread 1 ──▶ TCP connect() ──▶ Port open? ──▶ Banner grab (optional)
├──▶ Thread 2 ──▶ TCP connect() ──▶ Port open? ──▶ Service lookup
├──▶ Thread N ──▶ TCP connect() ──▶ Port closed / filtered
│
▼
Results collector (thread-safe lock)
│
▼
Summary table + JSON/CSV export
```
扫描器使用 `socket.connect_ex()` —— 一个非阻塞的 TCP 连接,成功时(端口开放)返回 0,失败时(端口关闭/被过滤)返回错误代码。多线程通过 Python 的 `threading.Thread` 和 `queue.Queue` 进行管理,因此线程绝不会重复工作。
## 检测到的服务
| 端口 | 服务 | 渗透测试笔记 |
|------|---------|-------------|
| 21 | FTP | 检查匿名登录 |
| 22 | SSH | 检查弱凭据/旧版本 |
| 23 | Telnet | 不安全:明文协议 |
| 80 / 8080 | HTTP | 检查 Web 漏洞 |
| 443 | HTTPS | 检查 SSL/TLS 版本和加密强度 |
| 445 | SMB | 检查 EternalBlue (MS17-010) |
| 3306 | MySQL | 检查远程 root 登录 |
| 3389 | RDP | 检查 BlueKeep / 弱凭据 |
| 6379 | Redis | 通常在未授权的情况下暴露 |
| 27017 | MongoDB | 通常在未授权的情况下暴露 |
## 运行测试
```
python3 test_scanner.py
```
```
Running NetScan unit tests...
test_comma_separated ... ok
test_deduplication ... ok
test_mixed ... ok
test_range ... ok
test_single_port ... ok
test_common_ports_mapped ... ok
test_unknown_port_returns_default ... ok
test_high_risk_ports_noted ... ok
test_notes_are_strings ... ok
Ran 9 tests in 0.000s OK
```
## 法律与道德使用声明
此工具专为以下用途构建:
- 扫描您自己的系统和网络
- 授权的渗透测试项目
- 在受控环境中学习和教育(例如 DVWA、HackTheBox、TryHackMe、您自己的实验 VM)
**未经明确的书面许可,请勿将其用于他人的系统。**
## 作者
**Akbar Qureshi**
CEH v13 | CompTIA Security+ | CompTIA Network+ | 网络安全专家 (Simplilearn)
- LinkedIn: [linkedin.com/in/akbar-qureshi-secops](https://www.linkedin.com/in/akbar-qureshi-secops/)
- GitHub: [github.com/aq358237-alt](https://github.com/aq358237-alt)
## 许可证
MIT 许可证 — 详见 [LICENSE](LICENSE)。
标签:Python, 云存储安全, 插件系统, 数据统计, 无后门, 端口扫描, 网络扫描, 逆向工具