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, 插件系统, 数据统计, 无后门, 端口扫描, 网络工具, 逆向工具