crazywifi/RustPortScanner_GUI

GitHub: crazywifi/RustPortScanner_GUI

一款基于 Rust 开发的 nmap 风格端口扫描器,通过内置的 Web 服务器取代传统 GUI,提供了响应式、可实时监控的浏览器可视化操作界面。

Stars: 0 | Forks: 0

# RustPortScanner v2.1 **带有嵌入式生产级 Web GUI 的 nmap 风格端口扫描器** 使用嵌入式 HTTP 服务器取代了 FLTK 原生 GUI (v1.0),该服务器提供了一个响应式的、基于浏览器的专业界面。所有扫描逻辑均被保留——仅更改了 UI 层。 ## 更改内容 (v1.0 → v2.1) | v1.0 中的问题 | v2.1 中的解决方案 | |---|---| | 固定 1240×800 窗口,无法调整大小 | 完全响应式的浏览器 UI —— 可自由调整大小 | | 没有最大化/全屏 | 浏览器全屏 (F11) 原生可用 | | FLTK 依赖(复杂的原生构建) | 仅需 `tiny_http` —— 最小化依赖 | | 开放/关闭/过滤端口混在一个扁平列表中 | 开放端口醒目显示;关闭/过滤端口折叠为计数,可按需展开 | | 数据可读性差 | 每个主机独立卡片及端口表,带有状态徽章(绿色/红色/黄色)和服务名称 | | 没有实时流 | 通过 chunked HTTP / NDJSON 实时流式传输结果 | | 没有扫描速率显示 | 顶栏中的实时 ports/sec(端口/秒)计数器 | | 没有活动日志 | 带有颜色编码条目的时间戳活动日志面板 | | 没有搜索/排序 | 按状态过滤,自由文本搜索,按端口/主机/服务/状态排序 | | 没有暂停按钮 | 扫描期间提供暂停(保存状态)+ 停止按钮 | | 导出功能受限 | 支持从浏览器导出 CSV / JSON / TXT | ## 架构 ``` ┌─────────────────────────────────────────────────────┐ │ portscanner binary │ │ │ │ ┌──────────────┐ HTTP ┌───────────────────┐ │ │ │ tiny_http │◄───────────│ Browser (any) │ │ │ │ web server │ │ localhost:7681 │ │ │ │ :7681 │────────────► index.html (emb) │ │ │ └──────┬───────┘ NDJSON └───────────────────┘ │ │ │ stream │ │ ┌──────▼───────┐ │ │ │ Scan engine │ TCP Connect / SYN Stealth / UDP │ │ │ thread pool │ (identical to v1.0) │ │ └──────────────┘ │ └─────────────────────────────────────────────────────┘ ``` HTML UI (`src/index.html`) 在编译时通过 `include_str!` 嵌入到二进制文件中。运行时无需外部文件。 ## 环境要求 | 平台 | 要求 | |---|---| | Linux | `libpcap-dev`(用于 SYN/UDP 模式;TCP Connect 无需此依赖) | | macOS | Xcode Command Line Tools(已包含 libpcap) | | Windows | [Npcap](https://npcap.com) + SDK(用于 SYN 模式);TCP Connect 无需此依赖 | 所有平台均需要 **Rust stable** (1.70+):https://rustup.rs ## 构建 **Linux:** ``` chmod +x build_linux.sh && ./build_linux.sh ``` **macOS:** ``` chmod +x build_macos.sh && ./build_macos.sh ``` **Windows:** ``` build_windows.bat ``` **手动:** ``` cargo build --release # Binary: ./target/release/portscanner (Windows 上为 .exe) ``` ## 用法 ### Web GUI (推荐) ``` ./portscanner --gui # 自动在默认浏览器中打开 http://127.0.0.1:7681 ``` ### CLI 模式 ``` # 单主机 ./portscanner 192.168.1.1 -p 1-1024 # CIDR 范围,前 100 个端口,快速 ./portscanner 10.0.0.0/24 -F -t 500 -T 200 # SYN 隐蔽扫描 (需要 root 权限) sudo ./portscanner 192.168.1.1 --syn -p 1-65535 # 保存结果 ./portscanner 192.168.1.1 -p top100 -o results # → results.txt, results.json # 来自文件列表 ./portscanner -iL targets.txt -p 80,443,8080 # 暂停 (Ctrl+C 保存状态),然后恢复 ./portscanner 10.0.0.0/24 -p 1-65535 # [Ctrl+C → 写入 scan_state.json] ./portscanner --resume scan_state.json ``` ### 所有 CLI 参数 ``` -p Port spec: 22,80,443 | 1-1024 | top100 | 1-65535 -F Fast mode (nmap top-100 ports) -t Thread count (default: 100) -T Timeout per port in ms (default: 500) -o Save to .txt + .json -iL Load targets from file --syn SYN Stealth scan (needs root) --udp UDP scan (needs root) --state State file name (default: scan_state.json) --resume Resume from saved state --gui Launch web GUI --help Show help ``` ## Web GUI 功能 - **实时流** —— 端口在扫描时即刻显示 - **按主机分类卡片** —— 每个目标都有独立的卡片及开放端口表 - **状态分离** —— 开放端口立即可见;关闭/过滤端口以计数形式显示,并支持可选展开 - **状态徽章** —— 绿色 OPEN,红色 CLOSED,黄色 FILTERED - **统计面板** —— 已扫描主机数、开放/关闭/过滤计数实时更新 - **进度条** —— 端口计数、百分比、已用时间、ETA - **扫描速率** —— 实时 ports/second(端口/秒)计数器 - **活动日志** —— 带有时间戳的条目,按严重程度以颜色区分 - **搜索与过滤** —— 按状态过滤,自由文本搜索(端口/服务/主机),排序选项 - **导出** —— 将结果下载为 CSV、JSON 或 nmap 风格的 TXT - **原始输出** —— nmap 风格的文本报告,包含 "Not shown: N closed" 摘要 - **CLI 预览** —— 更改设置时,生成的命令会实时更新 - **复制 CLI** —— 一键复制 CLI 命令 - **暂停/恢复** —— 扫描中途暂停会将状态保存到磁盘;通过 UI 或 CLI 恢复 - **重置** —— 一键清除所有字段和结果 ## 端口预设 | 预设 | 端口 | |---|---| | Common | 21,22,23,25,53,80,110,135,139,143,443,445,3306,3389,5900,8080 | | Top100 | nmap 最常用的前 100 个端口 | | Full | 1–65535 | | Web+DB | 80,443,8080,8443,3306,5432,1433,1521,6379,27017 | | Dev | 3000,4000,5000,8000,8080,8888,9000,3001,4200,5173 | | SMB | 135,137,138,139,445,593 | ## 与 nmap 的区别 - TCP Connect 模式执行完整的 3 次握手(与 `nmap -sT` 相同) - SYN 模式发送原始 SYN 数据包并监听 SYN-ACK(与 `nmap -sS` 相同) - 服务检测仅为名称识别(无版本探测) - 无 OS 检测,无脚本引擎 - CIDR 扩展在进程内完成(不对 PTR 记录进行 DNS 查询) ## 许可证 MIT
标签:DNS枚举, DNS查询工具, JSON导出, NDJSON, nmap替代, Rust, tiny_http, Web GUI, 前端交互, 可视化界面, 后端开发, 响应式设计, 实时扫描, 开源安全工具, 插件系统, 数据可视化, 本地服务, 流式传输, 浏览器界面, 端口扫描器, 端口服务识别, 网络安全工具, 网络流量审计, 逆向工程平台