hcalgar/socket-tcp-port-scan
GitHub: hcalgar/socket-tcp-port-scan
一个基于 Python 标准库构建的多线程 TCP 端口扫描器,具备 Banner 抓取功能,旨在帮助开发者学习 socket 编程和网络安全侦察技术。
Stars: 0 | Forks: 0
# socket-tcp-port-scan
一个带 banner 抓取功能的多线程 TCP 端口扫描器,完全使用 Python 标准库构建。
## 目的
一款轻量级的侦察工具,旨在练习 **socket 编程**、**TCP 握手机制**和**并发**。开发此工具是为了理解扫描器(如 Nmap)是如何检测服务的。
## 功能
### 端口扫描与 Banner 抓取(已完成)
- [x] **TCP Connect 扫描:** 使用 socket 连接进行多线程端口发现(`SYN → SYN-ACK → ACK`)。
- [x] **Banner 抓取:** 通过读取初始响应字节自动检测服务/版本。
- [x] **并发优化:** 使用 `ThreadPoolExecutor` 进行并行扫描(可通过 `-t` 标志配置)。
- [x] **自适应超时:** 可通过 `-T` 标志配置连接超时时间(默认:0.75秒)。Banner 抓取使用固定的 0.3秒 超时。
## 安装与使用
无需外部依赖。支持 Python 3.8+。
```
# 克隆并进入
git clone
cd socket-tcp-port-scan
# 查看帮助
python tcp-port-scanner.py --help
# 扫描指定端口 + 范围
python tcp-port-scanner.py 192.168.1.50 -p 22,80,443,8080-8090
# 详细模式(实时进度 + banners)
python tcp-port-scanner.py 10.0.0.5 -p 1-1000 -v
# 使用 100 个线程扫描所有端口(默认 timeout 0.75s,65k 端口约需 500s)
python tcp-port-scanner.py 10.0.0.5 -t 100 -v
# 使用激进 timeout 进行快速扫描(可能会漏掉响应缓慢的服务)
python tcp-port-scanner.py 10.0.0.5 -p 1-65535 -t 200 -T 0.3
# 使用更长 timeout 进行可靠扫描(较慢但更准确)
python tcp-port-scanner.py 10.0.0.5 -t 100 -T 2.0 -v
```
### 性能基准:
| 超时时间 | 预计耗时 (65k 端口, 100 线程) | 可靠性 |
|---------|-------------------------------------------|------------|
| 0.3s | ~200-250s | ⚠️ 可能遗漏响应慢的服务 |
| **0.75s** | **~500s** | ✅ **最佳平衡** |
| 1.5s | ~900-1000s | ✅✅ 可靠 |
| 2.0s | ~1200s+ | ✅✅✅ 最高可靠性,但非常慢 |
## 已知限制
- **仅支持 TCP 扫描(不支持 UDP)**
- 基础的 banner 抓取(无服务版本检测)
- 无法区分“已关闭”和“被防火墙过滤”的端口
- 无高级扫描技术(SYN、FIN、XMAS 等)
- 超时权衡:0.75秒的连接超时在速度和可靠性之间取得了平衡,但在重型防火墙后响应极慢的服务可能会被漏掉。对于关键扫描,请多次运行或增加超时时间。
- 无 DNS 解析:仅接受原始 IP 地址,不接受域名(例如,45.33.32.156 可用,scanme.nmap.org 不可用)
## 演示
### 标准扫描(默认超时 0.75秒)
使用 100 个线程对 `scanme.nmap.org` (45.33.32.156) 进行全面扫描:

*扫描在 498.46 秒内完成,检测到 4 个开放端口 (22, 80, 9929, 31337)。*
### 快速扫描(激进超时 0.3秒)
对相同目标使用减少的超时时间以获得更快的结果:

*扫描在 202.58 秒内完成(快了约 2.5 倍),并维持了对所有 4 个开放端口的检测。*
### 非确定性行为(超时 0.75秒)
配置与标准扫描相同,但这次未能检测到 80 端口:

*结果表明,由于线程调度和网络状况的不同,每次运行的结果可能会有所差异。*
## ⚠️ 免责声明
本工具仅用于**授权的安全测试和教育目的**。
- 仅在**您拥有**或**已获得明确书面授权**进行测试的系统上使用此工具。
- 未经授权访问计算机系统是**违法**的,并将受到法律惩处。
- 作者不对因滥用此软件而造成的任何误用或损害负责。
请负责任地使用。
标签:Banner抓取, Python, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全, 网络编程, 逆向工具, 隐私保护