LXBStudioLLC/TrustNoWire
GitHub: LXBStudioLLC/TrustNoWire
一款基于 Tauri 2 和 React 构建的 Windows 实时网络监控与威胁检测桌面应用,提供连接追踪、DNS 日志、数据包捕获和威胁评分功能,默认本地运行保护隐私。
Stars: 0 | Forks: 0
# TrustNoWire
**不要信任任何网线——包括我们自己的。这就是证明。**
适用于 Windows 的实时网络监控和威胁检测。TrustNoWire 监控你机器上的每一个连接、每一个字节和每一个进程——然后准确向你展示正在发生的一切。
它使用 Tauri 2(Rust 后端)和 React 构建,作为轻量级桌面应用运行,具备数据包捕获、DNS 日志记录、威胁评分以及每个连接进程的 Authenticode 验证功能。地理信息增强和 VirusTotal 扫描是**可选开启的**——默认情况下,没有任何远程 IP 或文件哈希数据会离开你的机器。
此源代码是公开的,以便你可以准确验证它在你的机器上做了什么。一个你无法审计的网络监控器是一个你不应该信任的网络监控器。
## 截图
### Iron Man 主题
| 展开模式 | 正常模式 | 紧凑模式 | 小组件模式 | 设置 |
|----------|--------|---------|--------|----------|
|  |  |  |  |  |
### Stealth 主题
| 展开模式 | 正常模式 | 紧凑模式 | 小组件模式 | 设置 |
|----------|--------|---------|--------|----------|
|  |  |  |  |  |
### Cyberpunk 主题
| 展开模式 | 正常模式 | 紧凑模式 | 小组件模式 | 设置 |
|----------|--------|---------|--------|----------|
|  |  |  |  |  |
### Light 主题
| 展开模式 | 正常模式 | 紧凑模式 | 小组件模式 | 设置 |
|----------|--------|---------|--------|----------|
|  |  |  |  |  |
### Matrix 主题
| 展开模式 | 正常模式 | 紧凑模式 | 小组件模式 | 设置 |
|----------|--------|---------|--------|----------|
|  |  |  |  |  |
## 功能
- **实时连接表** —— 每个活跃的 TCP 连接(IPv4 **和** IPv6)以及观察到的 UDP 流(通过操作系统 UDP 套接字表归因于其所属进程),包含进程名、远程 IP、端口、国家/地区(启用地理信息时)以及 Authenticode 签名验证。QUIC (UDP/443) 和 DNS (UDP/53) 流有其各自的协议标签。
- **数据包捕获** —— 通过 Npcap 进行实时带宽监控(IPv4 和 IPv6,所有 IP 协议——ICMP 及其同类也会计算在内)。802.1Q VLAN 标记帧会被解包;IPv6 扩展头会被遍历。每个连接的字节计数器与显示界面解耦,因此刷新周期不会丢失传输中的增量。页眉提供实时迷你图。**默认关闭**混杂模式(可通过设置选择开启)。
- **DNS 日志记录** —— 捕获从网络上解析出的 DNS 查询和响应 (UDP/53),包含响应 IP、TTL 以及**每个查询的进程归因**(通过查询的源端口匹配)。域名 → IP 缓存是有界的(LRU,1万条记录);可见日志保留最近的 5,000 次查询。
- **威胁评分** —— 每个连接的 0-100 风险评分,综合考虑进程信任度(Authenticode 签名者、已知二进制文件白名单、安全配对规则)、流量比率、端口标准化程度以及托管服务提供商声誉关键字。
- **VirusTotal 集成(可选)** —— 在设置中粘贴 API key 以启用。针对任何威胁评分 ≥ 30 的连接,自动根据 VirusTotal 的文件声誉数据库扫描其**二进制文件** (SHA256);右键单击任何连接即可进行按需扫描。API key 在 `%APPDATA%/com.trustnowire.app/secrets.json` 中跨重启持久化保存,并且可以从设置中清除。
- **地理信息增强(可选)** —— 默认禁用。在设置 → 捕获引擎 中开启它,即可通过 HTTPS 使用 [ipinfo.io](https://ipinfo.io) 查询每个远程 IP 的国家/地区、组织和 ASN。一个 30 天的滚动速率限制器将查询上限设为 49,000 次(对免费层级安全),达到限制后会暂停一小时。
- **Windows Toast 通知** —— 当出现新的高严重性威胁(评分 ≥ 60)时发出可选的 Toast 警报;受信任的进程会被抑制,并且每个进程+目标只通知一次。
- **CSV / JSON 导出** —— 在设置中一键将当前连接表和 DNS 日志写入你的“下载”文件夹。
- **小组件模式** —— Win7 小工具风格的微型仪表板 (200x290),可一目了然地查看实时统计信息、带宽图和首要威胁。
- **系统托盘** —— 最小化到托盘并带有工具提示,左键单击恢复,右键单击菜单。隐藏时,UI 会完全暂停渲染(后端继续监控)。
- **单实例** —— 启动第二个副本会聚焦现有窗口,而不是争夺捕获句柄。
- **5 种主题** —— Iron Man、Stealth、Cyberpunk、Light、Matrix。
- **3 种显示模式** —— 紧凑、正常、展开。
- **无边框透明窗口** —— 自定义标题栏,可拖动,可选置顶。
- **管理员提权** —— 发布版本通过 UAC 清单自动请求管理员权限,以实现完全的网络可见性。
## 系统要求
- Windows 10 或 11(64 位)
- 已安装 [Npcap](https://npcap.com/)(数据包捕获必需)
- 管理员权限(用于原始数据包捕获和完全的进程可见性)
## 从源代码构建
### 前置条件
- [Rust](https://rustup.rs/) 1.77.2 或更高版本
- [Node.js](https://nodejs.org/) 18 或更高版本
- [Npcap SDK](https://npcap.com/#download) —— 解压至 `%USERPROFILE%\npcap-sdk\`(build.rs 会自动检测 `Lib\x64\wpcap.lib`)
- 机器上已安装 Npcap 运行时
### 构建
```
cd trustnowire
npm install
npm run tauri build
```
MSI 安装程序、NSIS 安装程序 (.exe) 和独立可执行文件将位于 `src-tauri/target/release/bundle/` 中。
**代码签名。** LXB Studio 的官方发布版本通过 Azure Trusted Signing 进行签名。构建过程通过 `tauri.conf.json` 中的 `bundle.windows.signCommand` 进行配置,该配置会委派给 `LXB_SIGN_SCRIPT` 环境变量指向的任何脚本(传递 `-FilePath`、`-ProductName` 和 `-ProductUrl`)。如果未设置该变量——这对于贡献者来说是常态——该钩子将不执行任何操作,并且构建会生成未签名的产物,这对于本地测试来说没有问题。在发布机器上,`LXB_SIGN_SCRIPT` 指向一个签名包装器,该包装器使用 `AZURE_TENANT_ID`、`AZURE_CLIENT_ID` 和 `AZURE_CLIENT_SECRET` 自动对内部 exe、MSI 和 NSIS 安装程序进行签名。
### 开发
```
npm install
npx tauri dev
```
注意:`tauri dev` 在运行时没有管理员提权。某些功能(对 SYSTEM 进程的原始捕获)需要以管理员身份运行。
## 可选设置
这两个选项都是可选的。没有任何这两者,应用程序也能完全正常运行——连接跟踪、DNS 日志、威胁评分、数据包捕获都会继续工作。
### VirusTotal API Key
1. 在 [virustotal.com](https://www.virustotal.com/) 创建一个免费帐户,并从你的个人资料中复制 API key。
2. 打开 TrustNoWire → 设置 → VirusTotal 自动扫描,粘贴该 key,然后点击 **SAVE**。
3. 该 key 将持久化保存到 `%APPDATA%/com.trustnowire.app/secrets.json`,并在启动时重新加载。设置界面会显示“Key 已保存”,但绝不会将其值透露回前端;输入新值即可覆盖,或者使用 **CLEAR** 将其删除。
4. 自动扫描的速率限制为每分钟大约 4 次请求(对免费层级安全),并且仅针对威胁评分表上得分 ≥ 30 的连接触发。手动扫描(右键单击 → 使用 VirusTotal 扫描)可绕过自动扫描的速率限制。
### 地理信息增强
默认禁用。要启用:设置 → 捕获引擎 → 切换“启用地理查询”。开启后,每个未缓存的远程 IP 都会通过 HTTPS 发送到 ipinfo.io。随时禁用即可返回完全离线操作;以前缓存的国家/组织数据仍然可用,但不会触发新的查询。
### MaxMind GeoIP(离线替代方案 —— 功能门控)
如果你根本不想将 IP 传输给 ipinfo.io,MaxMind 的离线数据库可作为直接替代品(`geoip` Cargo feature flag 专为此保留;完整的集成已在路线图上):
1. 从 [MaxMind](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data) 下载 GeoLite2-City.mmdb 和 GeoLite2-ASN.mmdb
2. 将它们放在应用程序数据目录中
3. 使用 `cargo build --features geoip` 构建(前端仍然使用相同的开关)
## 隐私
TrustNoWire 的构建前提是,你应该准确了解你的网络监控器如何处理你的数据。以下是完整的说明。
### 网络捕获 (Npcap)
默认情况下,捕获引擎以**非混杂**模式打开选定的适配器:它仅查看到达和离开此机器的流量。混杂模式是“设置 → 捕获引擎”中的一个可选开关。当你在共享/Wi-Fi 网络上启用它时,捕获还会查看到达同一广播域中*其他*设备的流量——来自室友笔记本电脑的 DNS 查询可能会显示在 DNS 日志中,并且他们的带宽也会计入 IN/OUT 总量中。开关在你翻转之前就会明确说明这一点。在交换式/有线网络上,这种区别通常无关紧要(交换机不会将流量转发到非目标端口)。
捕获的 DNS 数据**仅存在于内存中**:一个有界的 LRU 映射表(≤ 10,000 条 IP→主机名记录)加上一个最新查询日志(≤ 5,000 条记录)。除非你明确使用“导出”按钮(会写入你自己的“下载”文件夹),否则任何内容都不会写入磁盘,并且任何内容都不会被传出本机。
### 地理信息增强(可选,HTTPS)
默认禁用。在设置中启用后,每个未缓存的远程 IP 都会通过 HTTPS 发送到 `ipinfo.io`,以解析国家/地区、组织和 ASN。ipinfo.io 将看到你的机器连接到的远程 IP 列表。一个 30 天的滚动计数器将查询上限设为 49,000 次,并在达到限制后暂停一小时。
### VirusTotal(可选,需要你的 API key)
在你将 key 粘贴到设置中之前处于禁用状态。一旦启用,被标记为有威胁的进程(评分 ≥ 30)将自动进行扫描:TrustNoWire 会读取该二进制文件,计算其 SHA256,并查询 `https://www.virustotal.com/api3/files/{hash}`。VirusTotal 会看到哈希值和你的 API key——**绝不会看到二进制文件本身**,绝不会看到你的 IP 级别的连接数据,也绝不会看到你联系的目标。你的 API key 在本地持久化(`%APPDATA%/com.trustnowire.app/secrets.json`),并且永远不会往返于前端。
### 我们不做的事情
- **无遥测。** 没有分析调用。没有崩溃报告信标。没有首次运行时的“回报总部”行为。
- **无自动更新通道。** 更新是手动的——重新下载已签名的安装程序。
- **无广告,无跟踪像素,无第三方 SDK。** TrustNoWire 自身发起的唯一网络调用是上面记录的两个可选查询。你在连接列表中看到的其他所有内容都是由*你的其他应用程序*生成的流量,这正是其核心目的。
这两个可选的网络调用是任何数据离开你机器的唯一途径。你可以自己验证——这两个调用点分别位于 [src-tauri/src/intel/geoip.rs](src-tauri/src/intel/geoip.rs) 和 [src-tauri/src/intel/virustotal.rs](src-tauri/src/intel/virustotal.rs)。
## 架构
```
src-tauri/src/
analysis/ -- DNS parsing (with per-query process attribution), process
resolution (sysinfo + WMI fallback), threat scoring.
tls.rs is a stub (JA3 fingerprinting on the roadmap).
capture/ -- Npcap packet capture (IPv4 + IPv6, VLAN unwrap, IPv6
extension headers). diff.rs queries the OS tables: TCP
(IPv4 + IPv6) plus the UDP socket table used for process
attribution and UDP row synthesis. etw.rs is a stub.
intel/ -- GeoIP via ipinfo.io HTTPS, VirusTotal v3 client. asn.rs and
reputation.rs are stubs (offline ASN + IP reputation feeds
on the roadmap).
models/ -- Connection, DnsEntry, ProcessInfo data structures
commands.rs -- Tauri IPC command handlers, export, refresh pipeline
state.rs -- Shared application state (atomic counters, LRU caches,
connection table, traffic counters decoupled from display)
lib.rs -- App setup, system tray, persistent-store init, event push,
reverse-DNS worker, toast notifications, refresh-thread
bootstrap
src/
components/ -- React UI components (Header, ConnectionList, ThreatLog, etc.)
hooks/ -- Event-subscription hooks (useConnections, useBandwidth,
useDns) — backend pushes updates; no polling loops
utils/ -- Threat flag labels, byte formatting, country codes
themes/ -- 5 color themes
```
有关每个版本的详细分析,请参阅 [CHANGELOG.md](CHANGELOG.md)。
## 许可证
TrustNoWire 在 [Business Source License 1.1](LICENSE.md) 下提供源代码。
你可以出于个人用途阅读、审计和构建代码。该许可证将于 2030-02-09 转换为 MIT。有关完整条款,请参阅 LICENSE.md。
## 作者
Win 10/11 exe/msi 安装程序 @[TrustNoWire](https://trustnowire.com/)
由 [LXB Studio LLC](https://lxb-studio.com/) 构建
标签:AMSI绕过, IP 地址批量处理, React, Syscalls, Tauri, Wildcard支持, 可视化界面, 威胁检测, 流量监控, 网络安全, 自定义脚本, 隐私保护