纯 C/S 架构的跨平台内网资产发现与端口扫描桌面应用。完全采用 Go 语言开发,基于 Fyne 原生 GUI 框架,零 Web 依赖。
| 模块 | 功能 | 技术细节 |
|---|---|---|
| IP 存活探测 | 多模式主机发现 | ICMP / ICMPv6 / TCP / UDP / ARP / NDP / SCTP,支持混合模式交叉验证与置信度评分 |
| 端口扫描 | 10 种扫描方式 | TCP Connect / SYN / ACK / NULL / FIN / Xmas / Window / Maimon / UDP / SCTP INIT |
| 服务指纹识别 | 服务与版本检测 | 内置 62 个 Nmap Service Probes + Rapid7 Recog 指纹,支持 TLS/SSL 证书链分析 |
| 操作系统识别 | 被动 OS 指纹 | TTL 分析、TCP 窗口大小、SMB 协商、HTTP Server 头、SSH Banner 综合推断 |
| 信息采集 | 13 个采集插件 | NetBIOS / LLMNR / mDNS / UPnP SSDP / SNMP / SMB / SSH / HTTP / FTP / SMTP / Reverse DNS / ARP / OS Fingerprint |
- CVE 漏洞关联: 基于离线 CVE 精简库的服务漏洞风险提示(严重/高危/中危/低危四级)
- 网络路径追踪: UDP / ICMP / TCP 多协议 Traceroute
- 服务深度枚举: SMB 共享列表、SNMP 系统信息、数据库(MySQL/PG/MSSQL/Redis/Mongo/ES)版本探测
- Docker/K8s 检测: 自动识别容器化和编排平台服务
- 定时扫描: 内置 Cron 调度器,支持周期性自动化扫描任务
- 基线管理: 扫描结果标记为基线,后续自动对比变更
- 纯原生界面: 基于 Fyne 工具包,OpenGL/Metal/DirectX 渲染,零 Web 依赖
- 暗色/亮色主题: 内置专业暗色主题(默认)和亮色主题
- 多标签结果: 存活主机、端口扫描、统计仪表盘、会话管理
- 右键上下文菜单: 复制 IP/端口/Banner、浏览器打开 HTTP 服务、SSL 证书查看
- 自适应布局: 配置面板 30% + 结果区 70%,可拖拽调整
- 系统托盘: 最小化到托盘,后台持续运行
- 桌面通知: 扫描完成自动弹出通知
scantool-cli alive # 主机存活探测
scantool-cli portscan # 端口扫描
scantool-cli fullscan # 全功能扫描(存活 + 端口 + 指纹)
scantool-cli profile # 管理扫描配置文件
scantool-cli update # 更新指纹数据库
scantool-cli version # 显示版本信息- 会话保存/加载: 扫描结果持久化存储,支持历史回看
- 会话对比: 两次扫描结果差异分析(新增/消失/变更)
- 多格式导出: CSV / JSON / Excel / HTML / Markdown / PDF
- 扫描 Profile: 内置快速/标准/深度三种预设,支持自定义导入导出
- 指纹库在线更新: 一键从官方源下载最新指纹,SHA256 校验 + 自动备份
- 简体中文(默认)、English 双语言支持
- GUI 运行时切换语言(需重启生效)
| 操作系统 | 最低版本 | 备注 |
|---|---|---|
| Windows | 10 / 11 (64-bit) | SYN 扫描需安装 Npcap |
| macOS | 11+ (Intel / Apple Silicon) | SYN 扫描需 root 权限 |
| Linux | X11 / Wayland | 系统托盘需 libappindicator;SYN 扫描需 root 或 CAP_NET_RAW |
从 GitHub Releases 下载对应平台的最新版本:
| 平台 | 文件 |
|---|---|
| Windows 64-bit | NetRadar-windows-amd64.zip |
| Linux 64-bit | NetRadar-linux-amd64.tar.gz |
| macOS Intel | NetRadar-darwin-amd64.tar.gz |
| macOS Apple Silicon | NetRadar-darwin-arm64.tar.gz |
# 需要 Go 1.22+
go version
# 克隆项目
git clone https://github.com/BI1IHA/NetRadar.git
cd NetRadar
# 安装依赖
go mod download# Windows
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w -X main.Version=1.0.0" -o dist/netradar-cli.exe ./cmd/scantool-cli
# Linux
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w -X main.Version=1.0.0" -o dist/netradar-cli-linux ./cmd/scantool-cli
# macOS Intel
GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w -X main.Version=1.0.0" -o dist/netradar-cli-darwin-amd64 ./cmd/scantool-cli
# macOS Apple Silicon
GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w -X main.Version=1.0.0" -o dist/netradar-cli-darwin-arm64 ./cmd/scantool-cli# Windows(需要 GCC + MinGW)
CGO_ENABLED=1 GOOS=windows go build -ldflags="-s -w -H windowsgui -X main.Version=1.0.0" -o dist/netradar.exe ./cmd/scantool
# Linux(需要 X11/Wayland 开发库)
CGO_ENABLED=1 go build -ldflags="-s -w -X main.Version=1.0.0" -o dist/netradar ./cmd/scantool
# macOS(需要 Xcode Command Line Tools)
CGO_ENABLED=1 go build -ldflags="-s -w -X main.Version=1.0.0" -o dist/netradar-darwin ./cmd/scantoolmake build-cli # 编译 CLI
make build-gui # 编译 GUI
make build-all # 全平台交叉编译 CLI
make test # 运行测试
make vet # 代码检查
make release # 创建发布包# Windows
.\netradar.exe
# Linux / macOS
./netradar界面布局:
- 左侧配置面板: 输入目标 IP/CIDR,选择探测方式和扫描类型,调节速率参数
- 右侧结果区域: 四个标签页(存活主机、端口扫描、扫描统计、会话管理)
- 底部状态栏: 进度条、实时扫描速率、已用时间
- 底部日志面板: 可展开,支持按级别过滤
键盘快捷键:
| 快捷键 | 功能 |
|---|---|
Ctrl+Enter |
开始扫描 |
Escape |
停止扫描 |
Ctrl+S |
保存当前会话 |
Ctrl+E |
导出结果 |
Ctrl+Q |
退出程序 |
F5 |
更新指纹库 |
# ICMP Ping(最快速)
netradar-cli alive -t 192.168.1.0/24 -m icmp
# 混合模式(高准确率,推荐)
netradar-cli alive -t 192.168.1.0/24 -m hybrid -o alive.json
# TCP Ping 自定义端口
netradar-cli alive -t 10.0.0.0/16 --tcp-ports 22,80,443,3389 -m tcp
# 排除特定 IP
netradar-cli alive -t 192.168.0.0/16 --exclude 192.168.1.0/24# Top 1000 端口 TCP SYN 扫描
netradar-cli portscan -t 192.168.1.1 --ports top1000 -s tcp_syn
# 自定义端口范围
netradar-cli portscan -t 192.168.1.0/24 --port-range 80,443,8000-8080,3306,6379
# UDP 扫描(较慢)
netradar-cli portscan -t 192.168.1.1 --ports top100 -s udp
# 全端口扫描
netradar-cli portscan -t 192.168.1.1 --ports all -s tcp_connect# 存活探测 + 端口扫描 + 指纹识别
netradar-cli fullscan -t 10.0.0.0/24 --ports top100 -o full_result.json
# 输出为 CSV 格式
netradar-cli fullscan -t 192.168.1.0/24 -o result.csv --output-format csv
# 静默模式 + 管道处理
netradar-cli alive -t 10.0.0.0/24 -o - -q | jq '.[] | .IP'# 单一 IP
192.168.1.1
# CIDR 网段
192.168.1.0/24
10.0.0.0/8
2001:db8::/64
# IP 范围
192.168.1.1-192.168.1.254
# 混合格式(逗号分隔)
192.168.1.1,10.0.0.0/24,172.16.1.1-172.16.1.50
# 从文件导入
-t @targets.txt
NetRadar/
├── cmd/
│ ├── scantool/ # GUI 桌面应用入口
│ └── scantool-cli/ # CLI 命令行入口(6 个子命令)
├── internal/
│ ├── engine/
│ │ ├── alive/ # 主机存活探测(ICMP/TCP/UDP/ARP/NDP)
│ │ ├── portscan/ # 端口扫描(10 种方式 + 自适应速率)
│ │ ├── fingerprint/ # 指纹匹配引擎(62 探针 + TLS/HTTP)
│ │ ├── enrich/ # 信息采集插件(13 个)
│ │ └── traceroute/ # 多协议路径追踪
│ ├── config/ # 配置管理 + Profile 系统
│ ├── model/ # 数据模型与类型定义
│ ├── storage/ # 会话持久化 + 对比 diff
│ ├── update/ # 指纹库/应用更新(SHA256 校验)
│ ├── scheduler/ # Cron 定时扫描调度器
│ ├── netutil/ # IP 解析/速率控制/网络工具
│ ├── oui/ # OUI 厂商数据库(1000+ 条目)
│ ├── cve/ # CVE 关联查询
│ ├── lock/ # 界面锁定模式
│ ├── util/ # 辅助工具(IP 计算/DNS/编码/WHOIS)
│ ├── report/ # 报告生成(PDF/HTML/Markdown)
│ ├── i18n/ # 国际化(中/英)
│ └── logger/ # 结构化日志(slog)
├── gui/
│ ├── scancontroller.go # 扫描生命周期管理
│ ├── notify.go # 桌面通知 + 系统托盘
│ ├── theme/ # 自定义亮/暗主题
│ ├── panels/ # 5 个 UI 面板
│ └── dialogs/ # 9 个对话框
├── assets/ # 嵌入资源(配置/Profile)
├── fingerprints/ # 嵌入式指纹库
├── build/ # 构建与打包脚本
├── Makefile # 构建/测试/打包
├── config.example.json # 配置文件示例
└── README.md
统计: 62 个 Go 源文件 · ~29,000 行代码 · 26 个包 · 6 个测试包
| 操作系统 | 路径 |
|---|---|
| Windows | %APPDATA%\scantool\config.json |
| macOS | ~/Library/Application Support/scantool/config.json |
| Linux | ~/.config/scantool/config.json |
{
"theme": "dark", // 主题: dark / light
"language": "zh-CN", // 语言: zh-CN / en-US
"max_concurrency": 1000, // 全局最大并发连接数
"default_timeout": 3000000000, // 默认超时(纳秒,3 秒)
"default_retries": 2, // 默认重试次数
"proxy": "", // HTTP 代理地址
"auto_clean_days": 90, // 历史会话自动清理天数
"lock_timeout": 1800000000000 // 界面锁定超时(纳秒,30 分钟)
}完整配置项参见 config.example.json。
内置三套预设配置:
| Profile | 端口范围 | 探测方式 | 适用场景 |
|---|---|---|---|
| Quick Scan | Top 100 | ICMP + TCP | 快速网络摸底 |
| Standard Scan | Top 1000 | ICMP + TCP + ARP | 常规资产盘点 |
| Deep Scan | 全端口 | 全部方法 | 深度安全评估 |
| 功能 | Windows | macOS | Linux |
|---|---|---|---|
| TCP Connect 扫描 | ✅ 标准用户 | ✅ 标准用户 | ✅ 标准用户 |
| TCP SYN 扫描 | 需 Npcap | 需 root | 需 root / CAP_NET_RAW |
| ICMP Ping | 需管理员 | 需 root | 需 root / CAP_NET_RAW |
| ARP Ping | 需 Npcap | ❌ 不支持 | 需 root |
| NDP (IPv6) | 需 Npcap | 需 root | 需 root |
无特权时自动降级: 若检测到权限不足,自动降级为 TCP Connect 模式,确保基本扫描功能可用。
┌──────────────────────────────────────┐
│ GUI 层 (gui/) │
│ Fyne 原生渲染 │
│ (OpenGL/Metal/DirectX) │
└──────────────┬───────────────────────┘
│ Channel + 回调
┌──────────────▼───────────────────────┐
│ 应用逻辑层 (internal/) │
│ 配置 / 调度 / 会话 / 报告 │
└──────────────┬───────────────────────┘
│
┌──────────────▼───────────────────────┐
│ 扫描引擎核心 (engine/) │
│ 存活探测 / 端口扫描 / 指纹匹配 │
│ 信息采集 / 路径追踪 / CVE 关联 │
└──────────────┬───────────────────────┘
│
┌──────────────▼───────────────────────┐
│ 数据与指纹库 (assets/ + ~/.config/)│
│ nmap-probes / Recog / OUI / CVE │
└───────────────────────────────────────┘
| 组件 | 技术 | 说明 |
|---|---|---|
| GUI 框架 | Fyne v2.5+ | 跨平台原生渲染,无 Web 依赖 |
| 网络包操作 | gopacket + pcap + x/net | 原始套接字构造与捕获 |
| 并发模型 | Goroutine + Worker Pool + Token Bucket | 精细化速率控制 |
| 指纹解析 | 自研正则状态机 | 兼容 Nmap probes 全部指令 |
| 配置存储 | encoding/json + embed | JSON 本地文件 + 编译期嵌入 |
| 日志系统 | log/slog (Go 1.21+) | 结构化日志,支持轮转 |
| CLI 框架 | spf13/cobra | 子命令路由与参数解析 |
| 国际化 | golang.org/x/text | 中英双语支持 |
Q: 为什么 SYN 扫描提示权限不足?
A: TCP SYN 半开扫描需要构造原始网络包,这需要系统最高权限。Windows 下请安装 Npcap;Linux/macOS 下请使用 sudo 运行。也可以使用 TCP Connect 模式(无需特权)。
Q: 指纹库显示"built-in",如何在线更新?
A: 工具 → 更新指纹库 → 点击"Update Selected"即可从官方 GitHub 源下载最新指纹库文件。更新前会自动备份当前版本。
Q: 如何进行定时自动扫描?
A: 会话管理 → 定时任务 → 添加任务,设置 Cron 表达式和目标参数即可。例如 0 2 * * 0 表示每周日凌晨 2 点执行。
Q: 如何对比两次扫描结果?
A: 首先完成两次扫描并保存会话。然后在会话管理中选择两个会话 → 点击"对比",系统会自动计算主机/端口/服务的变化。
Q: macOS 提示"无法验证开发者"怎么办?
A: 在系统设置 → 隐私与安全性中点击"仍要打开",或使用 xattr -cr /path/to/netradar 命令移除隔离标记。
本工具集成了以下开源组件,用户需遵守各组件的开源协议:
| 组件 | 许可协议 | 用途 |
|---|---|---|
| Nmap Service Probes | NPSL | 服务指纹识别 |
| Rapid7 Recog | BSD-3 | HTTP 组件指纹增强 |
| IEEE OUI Database | IEEE Public Data | MAC 地址厂商识别 |
| CVE / NVD Data | MITRE / NIST Public | 漏洞关联提示 |
| Fyne GUI Toolkit | BSD-3 | 跨平台 GUI 框架 |
| gopacket | BSD-3 | 网络包构造与捕获 |
| Cobra | Apache-2.0 | CLI 框架 |
本工具仅供授权的网络安全评估、资产管理和合规检查使用。
- 使用者有义务确保在合法授权范围内使用本工具
- 未经授权对网络进行扫描可能违反法律法规
- 工具作者不对任何滥用行为承担责任
- 首次启动时需同意授权使用协议方可进入主界面
本项目采用 MIT License。
刘大硕 (BI1IHA)
Built with Go + Fyne | NetRadar