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) 进行全面扫描: ![标准扫描输出](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/281856f720063829.png) *扫描在 498.46 秒内完成,检测到 4 个开放端口 (22, 80, 9929, 31337)。* ### 快速扫描(激进超时 0.3秒) 对相同目标使用减少的超时时间以获得更快的结果: ![快速扫描输出](https://raw.githubusercontent.com/hcalgar/socket-tcp-port-scan/main/screenshots/fast-scan-demo.png) *扫描在 202.58 秒内完成(快了约 2.5 倍),并维持了对所有 4 个开放端口的检测。* ### 非确定性行为(超时 0.75秒) 配置与标准扫描相同,但这次未能检测到 80 端口: ![非确定性扫描输出](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/86a8f86ebc064403.png) *结果表明,由于线程调度和网络状况的不同,每次运行的结果可能会有所差异。* ## ⚠️ 免责声明 本工具仅用于**授权的安全测试和教育目的**。 - 仅在**您拥有**或**已获得明确书面授权**进行测试的系统上使用此工具。 - 未经授权访问计算机系统是**违法**的,并将受到法律惩处。 - 作者不对因滥用此软件而造成的任何误用或损害负责。 请负责任地使用。
标签:Banner抓取, Python, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全, 网络编程, 逆向工具, 隐私保护