AzmodanLord0fSin/Terrible-Port-Scanner
GitHub: AzmodanLord0fSin/Terrible-Port-Scanner
一个零依赖的单文件 Python TCP 端口扫描器,专为无法安装常规工具的 OT/ICS 受限环境中的快速端口检查而设计。
Stars: 0 | Forks: 0
# Terrible Port Scanner (TPS)
一个刻意保持极简的 TCP-Connect 扫描器,仅包含单个 Python 文件 —— **没有任何依赖**,仅使用标准库。
## 使用场景
诞生于我担任 **OT-Security-Service-Admin** 期间。在 OT/ICS 环境中,工程工作站和 HMI 通常处于锁定状态:没有互联网,没有包管理器,也不可能安装 `nmap`。尽管如此,在日常工作中仍需快速检查**网段中的主机上实际开放了哪些端口**——例如,为了核查在安全加固后某个服务是否真的关闭了,或者 PLC 是否在预期端口(例如 S7comm 的 102/TCP,Modbus 的 502/TCP)上响应。
此类系统上通常已经预装了 Python 3。一个无需通过 `pip` 安装的 `.py` 文件可以在那些禁止使用正规工具的地方运行。TPS 正好填补了这一空白——不多也不少。正如其名:要进行真正的网络探测,请使用 nmap。但如果只是想从受限的控制台中进行 20 秒的快速检查,这个工具就足够了。
## 用法
```
python3 TPS.py 10.0.0.10 # Ports 1–1024 (Standard)
python3 TPS.py 10.0.0.10 --start 1 --end 65535 # voller Bereich
python3 TPS.py plc-01.werk.local --start 102 --end 502 --timeout 0.5
```
| 参数 | 含义 | 默认值 |
|---|---|---|
| `target` | 主机名或 IPv4(必填) | — |
| `--start` | 起始端口 | 1 |
| `--end` | 结束端口 | 1024 |
| `--timeout` | 连接超时时间(秒) | 1.0 |
示例输出:
```
--------------------------------------------------
Ziel: 10.0.0.10 (10.0.0.10)
Bereich: 1-1024 Timeout: 1.0s
Start: 2026-07-23 21:40:12
--------------------------------------------------
Port 22 offen
Port 102 offen
Port 502 offen
--------------------------------------------------
Fertig. 3 offene(r) Port(s) von 1024 geprueft.
```
## 2026 年修正的内容
- **修复了参数错误导致的崩溃。** 以前程序会打印错误信息但不会退出——下一行代码接着就会访问从未设置的 `target`(导致 `NameError`)。现在通过 `argparse` 实现了正常的退出。
- **端口范围可配置**,而不是像以前那样硬编码为 50–85。
- **Timeout 改为通过参数传递**,Ctrl-C 会被正常捕获,并确保通过 `with` 语句关闭 Socket。
## 局限性
- TCP-Connect 扫描,单线程——因此扫描大型范围时速度较慢。
- 不支持 UDP,也没有服务/版本检测功能。如有此类需求,请使用:nmap。
## 许可证
请参阅 [LICENSE](LICENSE)。
标签:ICS安全, OT安全, Python, 插件系统, 数据统计, 无后门, 端口扫描, 网络工具, 逆向工具