antwnakys/port-scanner

GitHub: antwnakys/port-scanner

一个仅依赖 Python 标准库的并发 TCP 端口扫描器,支持 banner 抓取与 Markdown 报告生成,专注于授权安全测试场景。

Stars: 0 | Forks: 0

# 🛰️ port-scanner 一个快速、并发的 **TCP 端口扫描器**,支持 banner grabbing 并生成整洁的 Markdown 报告 —— 基于 Python sockets 从零构建,无需任何外部扫描 工具。 ``` # 端口扫描报告 — scanme.nmap.org - **Target:** `scanme.nmap.org` (45.33.32.156) - **Open ports:** 2 ## 开放端口 | Port | Service | Banner | | ---- | ------- | ------ | | 22 | ssh | SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.13 | | 80 | http | — | ``` ## 工作原理 它执行 **TCP connect 扫描**:对于每个端口,它会尝试完成完整的 TCP 三次握手(这与任何普通客户端的行为完全一致)。如果握手 成功,则该端口为开放状态。这是最可靠的扫描类型,并且不需要 特殊权限 —— 这与 SYN(“半开”)扫描不同,后者需要 raw sockets 和 root 权限。 两个设计选择使其既快速又实用: - **并发。** 扫描几乎完全是在*等待网络响应*,因此 工作被分配到了一个线程池中 —— 可以并行探测数百个端口, 将耗时数分钟的顺序扫描缩短至几秒钟。 - **Banner grabbing。** 当端口开放时,扫描器会读取服务的 问候语(SSH、SMTP 和 FTP 都会自我声明),这通常会揭示 确切的软件及其版本 —— 这对于指纹识别非常有用。 随后,报告会标记出那些通常需要仔细检查的端口 —— 明文 协议(Telnet、FTP)、暴露的数据库(MySQL、Redis、MongoDB)以及 远程访问服务(RDP)。 ## 用法 ``` # 扫描前 20 个常用端口(Nmap project 提供的安全测试主机): python -m portscan scanme.nmap.org # 扫描端口范围: python -m portscan 192.168.1.1 -p 1-1024 # 扫描特定列表并保存 Markdown 报告: python -m portscan example.com -p 22,80,443 -o report.md ``` `scanme.nmap.org` 是 Nmap 项目**明确允许**进行扫描的主机,因此 你可以安全地试用该工具,而不会影响任何其他人的系统。 在扫描之前,该工具会要求你确认已获得授权(在脚本中传递 `--yes` 以 跳过提示)。端口规范使用熟悉的语法:`80`、`1-1024`、 `22,80,443`,或它们的任意组合。 ## 运行测试 ``` pip install pytest pytest ``` 这些测试**完全离线**运行 —— 端口规范解析、服务命名、报告 渲染以及扫描聚合器都已通过对网络探测进行 monkeypatch 完成了测试,因此在 `pytest` 期间不会发生真实的扫描行为。 ## 项目布局 ``` port-scanner/ ├── portscan/ │ ├── scanner.py # concurrent TCP connect scan + banner grabbing │ ├── ports.py # nmap-style port-spec parsing (80, 1-1024, 22,80,443) │ ├── report.py # Markdown report with risk annotations │ └── cli.py # command-line interface + authorization prompt └── tests/ # pytest suite (network mocked) ``` ## 无外部依赖 扫描器本身仅使用 Python 标准库(`socket`、 `concurrent.futures`)。只有在运行测试时才需要 `pytest`。 ## 限制与道德规范 - 仅支持 TCP connect 扫描(不支持 UDP 或 SYN 扫描)。 - 服务列表是常用端口的子集,而不是完整的 IANA 注册表。 - 这是一个用于**已授权**测试的学习工具 —— 刻意没有 为其设计隐蔽或规避功能。 ## 许可证 [MIT](LICENSE) — 可免费使用、学习并在此基础上进行开发。
标签:Banner抓取, Python, 安全规则引擎, 插件系统, 数据统计, 无后门, 端口扫描, 逆向工具