k0m1d3v/3mme_PortScanner

GitHub: k0m1d3v/3mme_PortScanner

基于 Python 标准库的零依赖、多线程 TCP 端口扫描器,支持 CIDR 网段扫描、banner 抓取和 JSON 输出,适用于安全侦察和资产快速清点。

Stars: 0 | Forks: 0

# port-scanner 一个使用 Python 编写的快速、多线程 TCP 端口扫描器。支持单主机、CIDR 网络范围、banner 抓取和 JSON 输出 —— 旨在通过 Web UI 进行扩展。 ## 功能特性 - 通过 `ThreadPoolExecutor` 进行多线程扫描(最多 200+ 个线程) - CIDR 网络范围扫描(例如 `192.168.1.0/24`) - 对开放端口进行 banner 抓取(被动 + HTTP 探测) - 主机名的 DNS 解析 - 灵活的端口选择:单个端口、范围、逗号分隔或 `top100` 预设 - 输出到终端(格式化表格)和/或 JSON 文件 - 使用 `argparse` 构建的简洁 CLI ## 环境要求 - Python 3.10+ - 无需外部依赖 —— 仅使用标准库 ## 安装说明 ``` git clone https://github.com/k0m1d3v/port-scanner.git cd port-scanner ``` 不需要执行 `pip install`。 ## 使用方法 ``` python main.py [options] ``` ### 参数说明 | 参数 | 描述 | 默认值 | |---|---|---| | `target` | 主机名、IP 或 CIDR 范围(例如 `192.168.1.0/24`) | *(必填)* | | `-p`, `--ports` | 端口选择(见下方说明) | `top100` | | `-t`, `--timeout` | 每个端口的超时时间(秒) | `1.0` | | `--threads` | 并发线程数 | `100` | | `--no-banner` | 禁用 banner 抓取 | `False` | | `--show-closed` | 同时显示已关闭/被过滤的端口 | `False` | | `--output FILE` | 将结果保存为 JSON 文件 | `None` | ### 端口选择 | 格式 | 示例 | 描述 | |---|---|---| | Preset | `top100` | 24 个最常用的端口 | | 范围 | `1-1024` | 1 到 1024 之间的所有端口 | | 列表 | `80,443,8080` | 指定的端口 | | 混合 | `22,80,8000-8100` | 组合使用 | ## 示例 ``` # 扫描单个主机的 top 100 端口 python main.py scanme.nmap.org # 扫描整个网络范围 (CIDR) python main.py 192.168.1.0/24 -p 22,80,443 --no-banner --output network.json # 带有 JSON 输出的 Full port range 扫描 python main.py 192.168.1.1 -p 1-65535 --output result.json # 快速网络扫描,无 banner grabbing python main.py 10.0.0.0/24 -p top100 -t 0.5 --threads 200 --no-banner # Specific ports,显示包含 closed 的所有结果 python main.py example.com -p 22,80,443,3306 --show-closed ``` ### 示例输出 —— 单主机 ``` ============================================================ Target : scanme.nmap.org (45.33.32.156) Porte : 24 scansionate Aperte : 2 ============================================================ PORTA STATO SERVIZIO BANNER -------------------------------------------------------- 22 open SSH SSH-2.0-OpenSSH_6.6.1p1 80 open HTTP HTTP/1.1 200 OK ``` ### 示例输出 —— 网络扫描 ``` [*] Network scan: 254 host, 8 porte ciascuno [*] Stima: fino a 2032 connessioni totali [1/254] Scansione 192.168.1.1... nessuna porta aperta [13/254] Scansione 192.168.1.13... 2 porte aperte ============================================================ Target : 192.168.1.13 (192.168.1.13) Porte : 8 scansionate Aperte : 2 ============================================================ PORTA STATO SERVIZIO BANNER -------------------------------------------------------- 80 open HTTP 445 open SMB ``` ### JSON 输出格式 ``` { "meta": { "timestamp": "2026-05-07T14:32:10Z", "total_hosts": 254, "hosts_with_open_ports": 3 }, "hosts": [ { "target": "192.168.1.13", "ip": "192.168.1.13", "open_ports": [ { "port": 80, "state": "open", "service": "HTTP", "banner": "HTTP/1.1 200 OK Server: Apache" } ] } ] } ``` ## 项目结构 ``` port-scanner/ ├── main.py # Entry point, CLI (argparse), CIDR parsing ├── scanner.py # Core engine: socket, threading, banner grab ├── output.py # Formatting: table and JSON └── README.md ``` ## 法律免责声明 本工具旨在供您在拥有所有权或已获得明确授权的系统上使用。未经授权的端口扫描在您所在的司法管辖区可能属于违法行为。作者对滥用行为不承担任何责任。 ## 开发路线图 - [ ] UDP 扫描 - [ ] 服务版本检测 (CPE) - [ ] Web UI (Flask 或 FastAPI + Vue 3) - [ ] 导出为 CSV 和 HTML 报告 - [ ] 通过 MAC 地址进行 OUI 查询 - [ ] 集成 Shodan / Censys API ## 作者 由 Mirko 构建,作为个人安全工具项目的一部分。 GitHub: [github.com/k0m1d3v](https://github.com/k0m1d3v)
标签:API安全, Banner Grabbing, Banner抓取, CIDR, IP扫描, JSON输出, Mr. Robot, Python, Python标准库, TCP扫描, 二进制发布, 云存储安全, 并发扫描, 开源工具, 插件系统, 数据统计, 无后门, 无第三方依赖, 无线安全, 服务器安全, 端口扫描, 网络安全, 网络扫描, 隐私保护