azzizefe/netscope

GitHub: azzizefe/netscope

一款用 Rust 构建的现代网络分析工具,以人类可读的方式替代 Wireshark,提供 TUI 和 Tauri 桌面应用双形态。

Stars: 0 | Forks: 0

netscope

netscope ⚡

为人类设计的网络分析工具。 现代、闪电般的 Wireshark 替代品。
单一二进制文件。零配置。默认即美观。

Platforms Rust License CI

功能为什么选择 netscope?安装快速开始快捷键文档贡献


## 为什么选择 netscope? | | netscope | Wireshark | |---|---|---| | **可读性** | ✅ 显示 `google.com → 142.250.74.46` | ❌ 原始十六进制转储,晦涩的标志位 | | **设置** | ✅ 一个小型二进制文件 — 运行即生效 | ❌ 47个菜单,200 MB 安装包,5个配置对话框 | | **体积** | ✅ ~5 MB 单一二进制文件 | ❌ ~200 MB 安装包 + profiles + plugins | | **专注度** | ✅ 只要信号,没有噪音 | ❌ 包罗万象,极其臃肿 | | **速度** | ✅ 10k+ pkt/s,零延迟 | ❌ 处理大型捕获时可能卡死 | **netscope 之于 Wireshark,就像 `bat` 之于 `cat`。** 同样强大,但使用起来真正令人愉悦。 ## 功能 - **🧠 人类可读的摘要** — DNS 域名,TLS SNI 主机名,HTTP 路径。拒绝十六进制。 - **🌐 被动主机名解析** — 监视 DNS 响应并显示 `github.com:443` 而不是裸 IP。自身不发起查询,零额外流量。 - **⛔ 实时阻断流量** — 看到不喜欢的连接?选中它并按下 `b`。netscope 会安装真正的 OS 防火墙规则来切断它。Wireshark 做不到这一点。 - **🎓 内置学习模式** — 从未使用过 packet analyzer?专门的视图用通俗的语言解释每一个协议,并且每个选中的数据包都会有一句“这是什么?”的说明。无需任何先前的网络知识。 - **🎯 零配置网卡选择** — 自动跳过 loopback 和虚拟适配器(WAN Miniport, Hyper-V),并自动选中你真实的 Wi-Fi/Ethernet。 - **🔬 Wireshark 风格的检查器** — 桌面应用程序采用经典的三栏布局:彩色数据包列表、可展开的协议树(Frame → IP → TCP → 应用层),以及实时的十六进制/ASCII 字节视图 — 外加针对每个数据包的通俗语言“这是什么?”说明。 - **🌍 它要到哪里去?** — 点击一个数据包,检查器会显示远程主机的**国家(带国旗)、城市和所属组织**(例如 `🇺🇸 United States · Google LLC`)。仅在按需展开数据包时查询,并按 IP 缓存 — 绝不在后台对每个数据包进行查询。 - **💬 Follow Stream** — 在 Connections 视图中,在任何 TCP/UDP 会话上按 **Follow**,即可将其读取为重新组装的纯文本,并按方向(客户端 vs. 服务端)进行颜色编码 — Wireshark 最常用的功能,只需一键。 - **⚠ Expert Info** — 被解析器标记为重置或格式错误的数据包,在数据包列表和详细视图中会获得一个小型警告徽章,并使用通俗语言显示(没有“duplicate ACK”这样的专业术语)。 - **🛡 Insights — 自动安全与隐私扫描** — Wireshark 不愿做的事:它向你展示一切,但什么都不解释。**🛡 Insights** 标签页会读取你的捕获内容并呈现通俗语言的发现 — 明文密码、未加密的 HTTP、可能的端口扫描、连接重置突发、可疑的/类似 DGA 的域名、明文 DNS 暴露,以及加密与明文的比例 — 每一项都分为高/警告/信息级别。无需编写规则,无需配置列。 - **↻ Replay (Repeater)** — 打开一个数据包并按 **↻ Replay**,将其 payload 加载到编辑器中,进行调整,指向特定的主机/端口,并通过新的 socket 重新发送 — 响应会在同一窗口中返回。无需导出到 Packet Sender 或 Burp Repeater。*发送真实流量 — 仅限授权测试。* - **⚡ Script 控制台** — 应用程序内的 **⚡ Script** 标签页可直接在捕获的数据包流上运行 JavaScript。无需导出 `.pcap` 并使用 Python/Scapy 重新读取,每个数据包都已经是一个 `packets` 数组,你可以对其进行过滤、聚合和标记异常 — 通过 `Ctrl+Enter` 运行,并配有内置示例(连接重置异常、top talkers、未加密机密扫描、可疑 DNS 域名)。 - **🗂 Profiles** — **🗂 Profile** 按钮(右上角)可保存任务预设 — 一个过滤器、一个起始视图和显示设置 — 就像 Wireshark 的 Configuration Profiles 那样。自带 **HTTP Analysis**、**VoIP** 和 **Security Review** 预设,另外还有“Save current as…”用于保存你自己的设置。重启后依然有效。 - **🕐 Time Display Format** — 同样的菜单:在 `Time of Day`、完整的 `Date and Time of Day` 或 `Seconds Since Beginning of Capture`(相对于第一个数据包)之间切换 — 与 Wireshark 的 View > Time Display Format 相匹配。 - **🏷 Name Resolution 切换** — 关闭被动主机名解析可以在各处显示原始 IP(并在非常大型的捕获中减少一点渲染工作),或者重新开启它以显示 `github.com` 而不是 `140.82.112.3`。 - **🎨 美观的 TUI** — 按协议着色的行,暗色主题,流畅的布局。自带良好品味。 - **📊 实时仪表板** — 带宽、top talkers、协议分布。实时更新。 - **📋 DNS 日志视图** — 一目了然地查看所有查询的域名。 - **🔍 智能过滤** — 输入任何内容 — IP、协议、域名 — 结果即时更新。 - **🖥️ Headless 模式** — 对脚本和集成友好的管道 `--json` 输出。 - **📂 读/写 pcap** — 分析已保存的捕获内容,保存实时内容以备后用。 - **⚡ 极速** — Rust 原生。毫不费力地处理 10k+ 数据包/秒。 - **🖥️ 桌面应用程序** — 相同的引擎,通过 Tauri 提供原生 GUI。提供 Windows/macOS/Linux 打包版本。 ### 🖥️ 桌面分析套件 桌面应用程序在捕获引擎之上构建了一个完整的分析工作台 — 所有这些都在你已捕获的数据包上本地运行,无需云,无额外流量: **可视化与监控** - **🕸 拓扑图** — 谁在和谁通信的实时力导向图。节点大小 = 流量,绿色 = 本地,蓝色 = 远程;带有 Fit / Freeze 控件。 - **📊 实时“Grafana 风格”仪表板** — 带有 60 秒迷你图的每秒图块:吞吐量、数据包/秒、错误率、活动主机,以及 top-10 talkers。 - **📈 预测性流量建模** — 根据最近的趋势(最小二乘法)预测约 5 分钟后的带宽,并带有上升/平稳/下降的读数。 - **🔀 流量 diff** — 快照 A(基准)对比快照 B(稍后)并查看增量 — 哪些协议和主机出现、增长或消失了(`NEW`/`GONE`)。 **理解数据包** - **🧩 语义解析** — 将数据包转化为业务逻辑:*“客户端请求 example.com GET /login”*,*“请求需要身份验证 (401)”*,*“正在启动加密会话 (TLS ClientHello)”*。 - **✨ Payload 美化器** — 将 JSON 和 XML 正文渲染为语法高亮、可折叠的树。 - **🔮 协议猜测器** — 对于解析器无法命名的流量,根据端口提示、字节魔数、可打印比例和香农熵来猜测协议 — 并显示其推理过程和置信度评分。 - **🌐 威胁情报枢纽** — 为任何公共 IP 提供一键信誉链接(VirusTotal、AbuseIPDB、AlienVault OTX、Shodan)。不会静默调用付费源。 - **🧬 十六进制 → 代码** — 将 payload 的字节复制为 C、Rust 或 Python 字面量。 **隐私与站点健康** - **🔎 隐私 X 光** — 按站点对流量进行分组,并回答*“这个站点从我这里获取了什么,以及在后台运行了什么?”* — 你发送给它的内容(cookies、User-Agent、Referer、表单数据、电子邮件、位置)、它在背后调用的 trackers/广告网络(已分类:Advertising / Analytics / Social / CDN)、它在你身上设置的 cookies(追踪 cookies 和弱的 `Secure`/`HttpOnly`/`SameSite` 标志会被标记),以及它消耗了你多少数据(上行和下行),并带有一个用于表示流向 trackers 比例的计量表。HTTPS 隐藏的是内容,而不是这些元数据。 - **🛡 WAF 检测** — 通过响应标头/cookies 对站点前面的 Web Application Firewall 进行指纹识别(Cloudflare、Akamai、Imperva Incapsula、AWS、F5 BIG-IP、Sucuri、ModSecurity…),当仅可见前端 CDN 时,会给出带标签的“可能”猜测。 - **🚫 HTTP 错误解释器** — 对每个站点的 4xx/5xx 响应进行分组,并用通俗的语言说明*原因*(403 = 权限/地理位置/WAF 阻止,429 = 速率限制,502 = 后端宕机…)。 - **⏰ 最繁忙时段** — 仪表板上的一个卡片,显示流量何时达到峰值(对于长时间的捕获,显示一天中最繁忙的小时)。 - **🎯 情境风险评分** — 每个站点透明的 0–100 暴露评分(明文、凭据、trackers、弱 cookies、错误)。 - **🐛 Service-CVE 标志** — 将明文 `Server:` 标头与一小部分已知有漏洞的版本进行匹配。 - **📋 快速摘要** — 整个捕获内容的简短通俗语言 TL;DR(热门网站、trackers、WAF、错误、最繁忙时间、主要发现),与完整的 Markdown 报告分开。 **检测与追踪** - **🧷 签名扫描(YARA-lite)** — 将 payloads 与可读的 IOC/攻击签名进行匹配:Log4Shell、Shellshock、反弹 shell、SQLi、目录遍历、扫描器 User-Agents、EICAR。 - **📤 数据泄露 (DLP)** — 标记从本地主机到单一外部目标的异常大出站传输。 - **📶 威胁行为者启发式算法** — Beaconing(定期签到间隔)和可疑端口检测 — 诚实的“值得关注”标志,而非归因。 - **💡 一键漏洞演示** — 每个可利用的发现都会获得一个通俗语言的攻击场景**以及**修复方法。具有教育意义。 - **🔔 智能警报与触发器** — 针对流量激增和错误突发的主动警报,外加你自己的 IFTTT 风格的规则(*host 包含 X → 触发警报*),并持久化保存。 **工作流与共享** - **🧭 Workspace 模式** — 自动配置的预设(Web Dev、Kernel / Driver Dev、IoT、Malware Analysis),一键设置过滤器 + 视图 + 时间戳 + 噪音过滤器。 - **🧹 零接触噪音过滤器** — 隐藏 OS 更新、遥测和发现 chatter,以便列表显示你的应用程序实际正在做什么。 - **📄 可共享报告** — 一键生成 Markdown 摘要(发现、协议细分、talkers、域名、依赖图),并带有**🛡 机密擦除**和**🕶 IP 匿名化**,可安全进行 GDPR/KVKK 共享。 - **🗺 依赖图** — 自动对主机访问的外部服务进行分组(Google、AWS/CloudFront、Cloudflare、…)。 - **↻ Replay (Repeater)** — 将数据包的 payload 重新发送到目标并读取响应。*发送真实流量 — 仅限授权测试。* - **🎨 主题** — Midnight、VS Code Dark+、Dracula、Nord 以及 Daylight 浅色模式。 ## 安装 netscope 提供两种版本:**桌面应用程序**(原生,无需终端) 和**终端 UI** (TUI)。两者共享同一个引擎。 ### 🖥️ 桌面应用程序 — 运行所需条件 1. **Npcap** (Windows) — 允许任何应用程序读取数据包的驱动程序。从 [npcap.com](https://npcap.com) 安装并勾选 **"WinPcap API-compatible mode"**。*(macOS/Linux 不需要此项。)* 2. **WebView2** (Windows) — 在 Windows 10/11 上已预装;用于渲染窗口。 3. **以管理员身份运行** — 捕获数据包和安装拦截规则都需要它。 右键点击 → *以管理员身份运行*。否则你将看到 `⚠ not admin` 徽章。 然后从 [Releases](https://github.com/azzizefe/netscope/releases) 下载适合你操作系统的安装程序: | OS | 文件 | |----|------| | **Windows** | `netscope_x.y.z_x64-setup.exe` | | **macOS** | `netscope_x.y.z_universal.dmg` | | **Linux** | `.AppImage` 或 `.deb` | 完整详情请参阅 [桌面指南](docs/desktop.md)。 ### ⌨️ 终端 UI 从 [Releases](https://github.com/azzizefe/netscope/releases) 获取适合你操作系统的预构建 `netscope-tui` 二进制文件, 或者从源码构建(见下文)。 | 平台 | 要求 | |----------|-------------| | **Windows** | [Npcap](https://npcap.com)(兼容 WinPcap 模式) | | **macOS** | 无需设置 | | **Linux** | `sudo setcap cap_net_raw,cap_net_admin+eip $(which netscope-tui)`(无需 root 即可捕获) | ### 从源码构建 ``` git clone https://github.com/azzizefe/netscope.git cd netscope cargo build --release ./target/release/netscope-tui # terminal UI cargo run -p netscope-desktop # desktop app (run the exe "as admin" on Windows) ``` ## 快速开始 ``` # 启动 TUI(自动选择 interface) netscope-tui # 使用 BPF filter 在特定 interface 上抓包 netscope-tui -i eth0 -f "tcp port 443" # 分析已保存的 pcap 文件 netscope-tui -r capture.pcap # 将 JSON 输出通过管道传递给 jq netscope-tui -i eth0 --headless --json | jq '.summary' ``` ## 使用方法 ### CLI 选项 ``` Usage: netscope-tui [OPTIONS] -i, --interface Interface to capture on -r, --read Read from a pcap file -w, --write Save capture to pcap file -f, --filter BPF filter (e.g. "tcp port 443") -D, --list-interfaces List available interfaces --headless Plain text output to stdout --json JSON Lines output (implies --headless) --list-blocked List IPs blocked by netscope firewall rules --unblock-all Remove all netscope block rules and exit -h, --help Print help ``` ### 键盘快捷键 | 键位 | 操作 | |-----|--------| | `↑` / `↓` 或 `j` / `k` | 浏览数据包列表 | | `Enter` | 展开/折叠数据包详情 | | `Tab` / `Shift+Tab` | 切换视图 | | *(任意字符)* | 过滤数据包 — 显示过滤器语法或自由文本(直接输入即可) | | `b` / `u` | *(Connections 视图)* 阻止 / 取消阻止选定的远程主机 | | `Space` | 暂停 / 恢复捕获 | | `h` | 切换十六进制转储 | | `?` | 帮助覆盖层 | | `Esc` | 清除过滤器 / 关闭帮助 | | `q` | 退出 | ### 显示过滤器 过滤器输入框使用 **Wireshark 风格的显示过滤器语言** — 当你输入的内容 不是过滤器表达式时,它会回退到纯子字符串搜索,因此 你随时都可以直接输入关键字。 ``` ip.addr == 1.2.3.4 # either endpoint is this IP ip.src == 10.0.0.5 # source only (also ip.dst) tcp.port == 443 # TCP on port 443 (also udp.port, port) frame.len > 1000 # packets larger than 1000 bytes (also len) dns # bare protocol name (tcp, udp, http, tls, dhcp, ntp, mdns, snmp, quic, sip, ssh, ftp, smtp, imap, pop3, telnet, rdp…) http && ip.dst == 8.8.8.8 # combine with &&, ||, ! (and / or / not) tcp && (tls || dns) # parentheses group ip.dst contains "142.250" # substring match on a field ``` `tcp` 匹配 TCP 传输(因此它也会捕获 HTTP 和 TLS),就像 Wireshark 一样;`http` 专门匹配 HTTP 应用协议。 ### 视图 | 视图 | 描述 | |------|-------------| | **Packets** | 带有可读摘要的实时数据包流。选择一个数据包会打开检查器:协议树、语义化的“发生了什么”、JSON/XML 美化器、协议猜测、威胁情报枢纽,以及 hex→code | | **Dashboard** | *(桌面版)* 实时的“Grafana 风格”图块(吞吐量、数据包/秒、错误率、活动主机),带有迷你图、带宽预测、协议分布和 top-10 talkers | | **Connections** | 按流分组的会话 — 每个连接的数据包、字节、方向、持续时间。按 **💬 Follow** 将会话读取为纯文本,或按 `b` 通过 OS 防火墙规则**阻止**远程主机(`u` 取消阻止)。 | | **Topology** | *(桌面版)* 谁在和谁通信的实时节点/边映射图 — 流量大小的节点、本地与远程的着色 | | **DNS Log** | 将所有 DNS 查询和响应集中在一个地方 | | **Insights** | *(桌面版)* 自动安全与隐私分析 — 明文机密、扫描、签名匹配、数据泄露、beaconing、加密比例 — 每一项都按严重程度评级,并带有“如何利用这个?”的教学展开项 | | **Privacy** | *(桌面版)* 按站点的 X 光扫描 — 每个站点收集了你什么信息、它在后台调用的 trackers、它设置的 cookies,以及它消耗了你多少数据 | | **Diff** | *(桌面版)* 比较两个捕获快照并高亮显示增量(出现了什么、增长了什么或消失了什么) | | **Script** | *(桌面版)* 在捕获的数据包上编写 JavaScript — 无需导出到文件即可过滤、聚合和标记异常 | | **Learn** | 关于 netscope 显示的每个协议的通俗语言指南,以及术语表和每个功能的操作指南卡片 — 专为网络新手准备 | ## 文档 完整索引:[docs/README.md](docs/README.md) | 文档 | 涵盖内容 | |----------|---------------| | [设置指南](docs/setup.md) | 先决条件、构建说明、故障排除 | | [TUI 指南](docs/tui.md) | CLI flags、视图、颜色、键盘快捷键、headless 模式 | | [过滤器手册](docs/filters.md) | 用于常见任务的即用型 BPF 过滤器 | | [常见问题与故障排除](docs/faq.md) | 常见问题及其修复方法 | | [Kullanım Kılavuzu (Türkçe)](docs/KULLANIM.md) | Kurulum, gereksinimler (Npcap vb.), tüm özellikler, sorun giderme | | [架构](docs/architecture.md) | Crate 布局、数据流、调度链、CI/CD | | [Core API](docs/core.md) | Packet, Protocol, CaptureEngine, StatsEngine, NameCache, dissectors | | [Dissector 指南](docs/dissectors.md) | 摘要约定、调度逻辑、如何添加 | | [桌面指南](docs/desktop.md) | Tauri 命令、前端、构建说明、图标 | | [CI/CD 指南](docs/ci-cd.md) | Pipeline 细节、发布流程、添加平台 | ## 项目结构 ``` netscope/ ├── crates/ │ ├── core/ Capture engine, protocol dissectors, models, stats │ └── tui/ Terminal UI (ratatui + crossterm + clap) ├── desktop/ │ ├── frontend/ Desktop frontend (HTML/CSS/JS) │ └── src-tauri/ Tauri 2 backend (Rust) ├── fixtures/ 8 sample .pcap files for testing ├── docs/ Architecture, API, guides (7 files) ├── tools/gen-fixtures/ pcap generator (etherparse) └── .github/workflows/ CI + Release pipelines ``` ## 技术栈 | 层级 | 技术 | |-------|-----------| | **Capture** | `pcap` crate (libpcap / Npcap) | | **Packet 解析** | `etherparse` + 自定义 dissectors | | **DNS 解析** | `dns-parser` | | **TUI** | `ratatui` + `crossterm` | | **CLI** | `clap` | | **并发** | `crossbeam-channel` | | **桌面端** | Tauri (vanilla HTML/CSS/JS) | ## 贡献 我们欢迎各种贡献!请查看 [CONTRIBUTING.md](CONTRIBUTING.md) 了解指南。 - [行为准则](CODE_OF_CONDUCT.md) - [Bug 报告](.github/ISSUE_TEMPLATE/bug_report.md) - [功能请求](.github/ISSUE_TEMPLATE/feature_request.md)

用 ❤️ 和 🦀 构建
GitHubReleases回到顶部

标签:Rust, Tauri, TUI, Wireshark替代, 可视化界面, 数据可视化, 桌面应用, 系统分析, 网络分析, 网络抓包, 网络流量审计, 通知系统