终端风的 Windows 网络监控与防火墙工具箱 —— GlassWire 的开源替代品。
零驱动、零遥测、纯本地。基于 ETW 内核事件 + Windows 过滤平台 (WFP),不安装任何内核驱动,退出后不在系统里留任何规则残留。
GlassWire 的几个长期痛点:控制服务 CPU 占用随时间爬升、卸载后防火墙规则残留系统、免费版功能锁。NekoWire 的对策:
- 零残留:所有拦截规则挂在 WFP 动态会话上,进程退出即被系统回收,规则唯一事实来源是应用自带的 SQLite
- 低占用:事件驱动采集(ETW),2 秒聚合,采样间隔可调;空闲时无轮询热点
- 功能不收钱:拦截、警报、抓包、分析全部开放
| 模块 | 内容 |
|---|---|
| 仪表盘 | 实时上下行速率 / CPU / 内存,应用流量排行,事件驱动曲线 |
| 流量监控 | 1 分钟 / 5 分钟实时曲线,活动进程明细 |
| 流量分析 | 四维拆解:应用 / 主机 / 流量类型(端口推断协议)/ 国家,今日用量 + WAN/LAN 汇总 |
| 防火墙 | 活动应用行内放行/阻止,规则一键清理(卸载残留),入站全量阻止(公共网络自动启用,放行规则为例外) |
| 警报中心 | 拦截事件 / 入站策略 / 新进程入网 / 新设备 / ARP 欺骗疑似 / 仿冒 AP / 代理变更 / 系统文件变更 / 空闲流量汇总,任务栏闪烁提醒 |
| 威胁情报 | 活跃远端端点(GeoIP 归属地),世界热力图(自由缩放/平移,中国大陆聚焦模式) |
| 抓包分析 | 免驱动全包捕获(raw socket + SIO_RCVALL),协议/对端/端口/会话聚合分析,导出 pcap(Wireshark 可直接打开) |
| 网络扫描 | /24 网段 ICMP 存活扫描 + ARP 合并 + 反向 DNS,秒级出结果 |
从 Releases 下载安装包(MSI 或 NSIS)。
需要管理员权限(WFP 写入与 ETW 内核会话的要求),双击会弹一次 UAC。无管理员运行时自动降级为演示模式(界面可用,数据为模拟)。
威胁情报页的 GeoIP 归属地默认未内置:在威胁情报页点「下载 GeoIP 库」即可一键拉取(DB-IP lite + GeoIP2-CN,本地解析,IP 不出本机)。
# 依赖:Rust stable, Node.js 20+, Windows 10/11, WebView2
npm install
npm run tauri dev # 开发模式(无管理员权限时降级为模拟数据)
npm run tauri build # 产出 MSI/NSIS 安装包(src-tauri/target/release/bundle/)后端测试(含真实局域网扫描、GeoIP 解析、注册表往返):
cd src-tauri && cargo test- 壳:Tauri 2(WebView2)+ React 18 + Tailwind CSS 4,前端等宽字体终端风 UI
- 采集:ETW 内核网络事件(ferrisetw,TcpIp/UdpIp provider,事件驱动,按 PID 聚合)
- 拦截:WFP 用户态过滤(wfp-rs),ALE 层按应用路径过滤;丢包事件订阅(FwpmNetEventSubscribe)实时回传警报
- 归属地:maxminddb 本地解析 MMDB(DB-IP lite / GeoIP2-CN / GeoLite2 任选)
- 存储:SQLite(rusqlite bundled),规则库 + 每分钟流量落库
- 地图:d3-geo 投影 + world-atlas 国界 + d3-zoom 交互
参考架构:simplewall(WFP 用户态过滤的标杆实现)的监控侧换成了更轻的 ETW 内核事件(TCP/UDP 通吃,零轮询)。
所有数据只存在本机(%APPDATA%\com.nekowire.app),没有任何外发遥测。GeoIP 解析全部本地完成,IP 地址不会发给任何第三方服务。
- simplewall —— WFP 用户态防火墙的参考架构
- ferrisetw —— ETW 的 Rust 封装
- wfp-rs —— Mullvad 出品的 WFP 安全封装
- DB-IP / GeoIP2-CN —— IP 归属地数据
- GlassWire —— 这个产品形态的开山鼻祖(以及我们要绕开的那些坑)
暂未指定,保留所有权利。仅供个人学习与研究使用。
