aixisstudio/Snitch
aixisstudio/Snitch has 801 GitHub stars and 53 forks. GitHot measured +38 stars in 24 hours and +129 in 7 days. Last checked 2026-11-06 19:42 UTC. Last push 2026-11-01.
Real-time network monitor + outbound firewall — see & block every connection. Privacy-first, local-first, Rust fleet agent, SIEM exports, 8 languages. / Moniteur réseau temps réel + pare-feu sortant, agent de flotte Rust, exports SIEM. 100 % local.
可以做什么
- Force Graph - Live node graph — your machine at the center, every connection as a node
- World Map - Geolocated IPs with animated arcs on an interactive globe
- 15/30/60-min Timeline - Sliding history stored locally in SQLite (24 h retention)
- Anomaly Detection - Flags port scans, beaconing (regular-interval C2), potential exfiltration
实测星标增长
- 24小时
- +38
- 7天
- +129
- 15天
- 更新延迟
- 1个月
- 更新延迟
各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。
README.zh-CN.md
原文Snitch
追踪每一个隐藏的网络连接。
English | Français | Español | Deutsch | Русский | 日本語 | Português | 中文
⭐ 如果 Snitch 对你有帮助,一颗 Star 意义重大! ⭐

Snitch 是一款实时网络流量可视化工具。 看清电脑的每一个连接——连接了谁、对方在哪里、由哪个应用发起。
整个界面提供 English、Français、Español、Deutsch、Русский、日本語、Português (BR) 和 简体中文:使用右上角工具栏中的语言选择器切换。
为什么选择 Snitch?
- 对比 Little Snitch / Lulu —— 同样的思路(按应用可视化+出站阻断规则),但 Snitch 跨平台、免费且开源。阻断通过操作系统原生防火墙(
netsh/iptables/pf)编排——Snitch 绝不在用户态做包过滤。 - 对比 GlassWire —— Snitch 免费、开源(AGPL)、无需账号,且默认零对外请求;连地理定位都是离线的。
- 对比 Wireshark —— Snitch 提供任何人都能读懂的实时高层概览,而不是原始数据包剖析。
- 对比云端监控方案 —— 一切运行在
127.0.0.1并受令牌保护;你的流量数据永远不会离开本机。
功能特性
| 功能 | 说明 |
|---|---|
| 力导向图 | 实时节点图——你的机器居中,每个连接是一个节点 |
| 世界地图 | 地理定位的 IP 在可交互地球仪上以动画弧线展示 |
| 15/30/60 分钟时间线 | 本地 SQLite 滑动历史(保留 24 小时) |
| 异常检测 | 标记端口扫描、beaconing(固定间隔 C2)、潜在数据外泄 |
| 高级检测 | DNS 隧道启发式、明文端口、按应用的国家基线偏离 |
| 防火墙编排 | 阻断规则(IP/CIDR/域名/进程/端口)下发到 OS 防火墙——netsh/iptables/pf,持久化,按规则计数被拦次数 |
| Lockdown 模式 | 应急开关——标记并阻断所有出站公网流量,局域网保持可用 |
| 事件响应 | 结束/挂起进程、阻断 IP——从连接详情一键操作 |
| 威胁情报 | 选择性开启的信誉查询(AbuseIPDB / AlienVault OTX / VirusTotal),使用你自己的 API 密钥——默认关闭,结果本地缓存 |
| 安全审计 | 内置加固报告——评分、发现项、通俗语言建议 |
| 取证导出 | 一键调查包——进程树+二进制 SHA-256、历史与关联告警(JSON/CSV/STIX) |
| Webhook 告警 | 选择性开启将 warning/critical 告警实时转发到 Discord、Slack、Telegram 或任意端点 |
| 进程归属 | 知道哪个应用产生了哪份流量(每个连接 Top 5) |
| LAN 扫描器 | 通过系统 ARP 表被动发现(无广播扫描) |
| 隐私评分 | 出站流量暴露度的实时评分 |
| 按应用视图 | 按进程展示目的地、流量与 60 分钟历史 |
| 告警抑制 | 持久化的「忽略主机/类型」规则,可在 UI 中管理 |
| 设置面板 | 语言、保留期、过滤器、需同意的 GeoIP 下载、诊断 |
| 跟踪器检测 | 后缀匹配域名列表,以可编辑数据文件提供(backend/classifier/lists/) |
| 带宽监控 | 实时 MB/s 迷你曲线 |
| 8 语言 UI | EN · FR · ES · DE · RU · JA · PT-BR · ZH-CN——一键切换,语言包位于 frontend/src/locales/ |
| 浅色/深色主题 | 默认跟随系统,手动切换会被记住 |
| 自动更新 | 桌面应用检查 GitHub Releases(可在设置中关闭;SNITCH_NO_UPDATE=1) |
| QUIC / HTTP/3 | UDP/443 流如实标注——QUIC 的 SNI 已加密,绝不读取 |
| 监视列表 | 固定 IP/域名——流量一旦触碰立即发出专属告警 |
| 上传峰值告警 | 按进程 MB/分钟上限,阈值可调 |
| 网卡选择器 | 选择监听哪块网卡——无需环境变量 |
| Wi-Fi 上下文 | 当前 SSID 显示在工具栏 |
| 导出 | 图+告警一键导出 JSON/CSV |
下载
| 平台 | 安装包 |
|---|---|
| macOS (Apple Silicon) | brew install --cask aixisstudio/tap/snitch —— 或从最新发布获取 Snitch.app zip/dmg |
| Linux | 从最新发布获取 Snitch AppImage / .deb / .rpm / .snap —— 或 sudo docker compose up --build,见 Docker (Linux) |
| 无头模式(任意 OS) | brew install aixisstudio/tap/snitch → snitchd 守护进程(服务器/虚拟机,无 GUI) |
| Windows | Snitch Setup .exe —— 一键 NSIS 安装器(原生应用,启动时 UAC 提示,内置 Npcap 检查),来自最新发布。轻量替代:Snitch-Lite-Setup(后端+浏览器 UI)。需要 Npcap |
| 全部(一键) | Pinokio —— 安装依赖、启动后端、打开 UI |
或直接下载最新发布:github.com/aixisstudio/Snitch/releases
macOS 首次运行 —— Snitch 采用 ad-hoc 签名、未经公证(没有付费 Apple Developer ID)。
brew install --cask会自动移除隔离标记。手动 zip:右键 → 打开,或运行xattr -dr com.apple.quarantine /Applications/Snitch.app。首次启动会一次性要求管理员密码——抓包需要权限,与 tcpdump/Wireshark 相同;UI 本身保持非特权。Windows 代码签名 —— Windows 构建将使用 SignPath Foundation 通过 SignPath.io 提供的免费开源证书进行 Authenticode 签名(已提交申请,待批准)。在首个签名版本发布前,SmartScreen 可能仍会警告——点击更多信息 → 仍要运行。
技术栈
| 层次 | 技术 |
|---|---|
| 数据包捕获 | ctypes → libpcap —— Npcap (Windows) / libpcap (Linux/macOS) —— 自研解析器(IPv4/IPv6/TCP/UDP/DNS/TLS-SNI) |
| 后端 API | FastAPI —— WebSockets —— SQLite |
| 前端 | React 19 —— Vite —— D3.js v7 —— TopoJSON |
| 桌面封装 | Electron 44 |
| 地理定位 | 仅离线 —— DB-IP Lite (CC BY 4.0) 以 gzip 随附于 backend/data/geo/,首次运行自动解压;同时支持 MaxMind GeoLite2 .mmdb |
安全与隐私
- API 令牌 —— 每个 REST 端点和 WebSocket 都要求令牌。Electron 每次启动生成;Docker/浏览器模式下在后端日志中打印一次并保存到
data/api_token.txt。通过http://localhost:8000/?token=<令牌>打开 UI。 - 默认仅回环 —— API 在所有模式下绑定
127.0.0.1。只有明确需要 LAN 访问时才设置SNITCH_BIND=0.0.0.0(令牌仍然必需)。 - CORS/WebSocket Origin 白名单 —— 仅
localhost:5173、后端自身来源和 Electronfile://页面可以连接。 - 地理定位 100% 离线 —— 没有任何在线查询。DB-IP Lite(CC BY 4.0)自动解压到
<data_dir>/geo/;你也可以放入更新的.mmdb或在设置中下载 DB-IP Lite(明确同意;其他可选出站调用——威胁情报、webhook、更新检查——见 PRIVACY.md)。 - 所有数据留在本地 ——
snitch.db(24 小时滑动窗口,retention_hours可调)和data/logs/snitch.log永不离开本机。无遥测。每一个出站调用都需要你选择开启。 - 设置持久化 —— 端口过滤、排除进程、IP 白名单、防火墙规则、语言和保留期存入 SQLite 并在重启后恢复。
- 防火墙规则尽力而为 —— 后端驱动 OS 防火墙(
netsh advfirewall、iptables、pf锚点);权限不足时规则保留并用于可见性匹配(BLOCKED_ATTEMPT 告警),如实标记「未应用」而非假装生效。Lockdown 保留回环+LAN,UI 依然可达。 - 威胁情报与 webhook 为可选 —— 默认关闭;启用提供商或 webhook 会产生出站调用,已在 PRIVACY.md 中说明。
- 告警抑制 —— 每条告警可「忽略此类型/此主机」;规则持久化(
alert_suppressions),通过POST|DELETE|GET /alerts/ignore管理。 - 历史 —— 按分钟的按主机/按进程字节与包聚保存在 SQLite(
host_history、process_history),驱动按应用视图与GET /history/*。 - 诊断 ——
GET /diagnostics返回不含机密的运行时 JSON 快照;可在设置面板导出。 - LAN 设备 通过系统 ARP 表被动发现——无主动广播扫描。设备名来自设备自身广播:mDNS
*.local、LLMNR/NetBIOS、DHCP hostname、完整离线 IEEE OUI 厂商表;网关自动识别为路由器。 - 完整威胁模型见 docs/threat-model.md,安全套件见 docs/FIREWALL.md。
Docker (Linux)
Docker 部署面向不想安装 Docker 以外任何东西的 Linux 用户。
通过 network_mode: host 抓包——容器能看到宿主机的真实流量。
预构建镜像 —— 无需克隆或编译:
sudo docker run --network host --cap-add NET_ADMIN --cap-add NET_RAW \
-v snitch-data:/app/data ghcr.io/aixisstudio/snitch
注意: Mac/Windows 上的 Docker Desktop 运行在 VM 内,无法捕获宿主机流量。这些平台请使用 Electron 应用。
获取 API 令牌(启动时打印一次,或 cat data/api_token.txt),然后在浏览器打开 http://localhost:8000/?token=令牌。
后台运行:sudo docker compose up -d --build
Docker 限制:进程归属仅限容器内进程;LAN 扫描器在某些网络配置下可能不可用。
开发
要求:Python 3.11+、Node.js 18+、Npcap(仅 Windows)、后端需要管理员终端。
演示模式 ——
SNITCH_DEMO=1让合成流量走真实管线:无需 root、无需 libpcap、不接触真实包。适合截图与测试。
cd backend && pip install -r requirements.txt && python run_backend.py
cd frontend && npm install && npm run dev # http://localhost:5173/?token=令牌
cd electron && npm install && VITE_DEV=1 npx electron .
测试:
cd backend && pip install -r requirements-dev.txt && python -m pytest tests/ -v
cd frontend && npm test
项目结构
snitch/
├── backend/ FastAPI + libpcap 捕获(ctypes,自研解析器)
├── frontend/ React + D3.js UI(8 种语言)
├── electron/ Electron 封装(main、splash、preload)
├── data/ 运行时数据(SQLite、geo/ 下的 .mmdb)
└── dist/ 编译产物(后端 exe、安装器)
企业版与集群
Snitch 也可以无头模式运行用于 SOC 部署 —— 全部文件驱动且免费:
- Security-as-Code —— 一个
snitch.toml(或$SNITCH_CONFIG)在启动时覆盖所有设置;通过 Ansible(deploy/ansible/)、Puppet、Salt 或 GPO 批量部署集群。 - Rust 代理 —— 零依赖守护进程(
agent/)将套接字流式发送到POST /ingest/events,Linux 上通过/proc→PID 归因;POST /ingest/enroll签发一次性sagt_…令牌(哈希存储、可撤销)。 - SIEM 原生 —— CEF 或 RFC 3164 syslog、通用 webhook,以及
GET /forensics/export?format=ecs(ECS NDJSON),开箱接入 Wazuh、Splunk、Graylog、Loki 和 Elastic。Sigma 导入(POST /alerts/rules/sigma)、YARA-L 导出(GET /alerts/rules/yaral)。 - 集群视图 ——
GET /remote/fleet汇总所有节点的加固审计;Helm chart(deploy/helm/snitch)在集群内运行采集器。 - 免费威胁情报源 ——
POST /firewall/blocklist导入域名(StevenBlack)和 IP(Blocklist.de、URLhaus/Feodo)列表;ti_feeds调度自动刷新。
详细步骤见 docs/INTEGRATIONS.md。
许可证
AGPL v3 —— 见 LICENSE。可自由使用、学习和修改;衍生作品必须以 AGPL v3 保持开源。
Star 历史
探索相关项目
trimstray/the-book-of-secret-knowledge
汇集各类启发灵感的清单、手册、速查表、博客、技巧、单行命令、CLI/Web 工具等内容。
256,558 星标Hack-with-Github/Awesome-Hacking
面向黑客、渗透测试人员与安全研究人员的各类 Awesome 清单合集。
124,831 星标swisskyrepo/PayloadsAllTheThings
一份用于 Web 应用安全以及渗透测试/CTF 的实用 payload 与绕过方法列表。
82,444 星标caddyserver/caddy
快速、可扩展的跨平台 HTTP/1-2-3 Web 服务器,支持自动 HTTPS
78,857 星标