这周GitHub挖到5个安全工具 有一个能看清家里流量去了哪
原创
紫禁
紫禁
紫禁玄科
2026年10月12日 10:49
四川
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
SECURITY · INTELLIGENCE
这周GitHub挖到5个安全工具 有一个能看清家里流量去了哪
2026年10月11日 · 8 min
网络安全#开源工具#一周精选#隐私保护
01
又到周日晚上 说说这周我翻仓库翻出来的东西
本周开源安全精选:从家里的流量到网站的门锁
这周过得像开了倍速:白天看漏洞、写方案,晚上照例翻 GitHub。翻仓库这件事我坚持好几年了,跟逛旧货市场一个道理——大部分东西看一眼就知道跟自己没关系,但每周总有那么一两个,会让你停下来把 README 从头读到尾。今天是周日,按惯例把这周的收获归拢一下,只留下我真想装进自己电脑的五个。
先交代我挑东西的四把尺子,免得你觉得我是看星标下菜:一是能不能解决真问题,不解决实际痛点的工具再炫也是玩具;二是有没有暗坑,闭源核心、偷偷收集数据、强制注册的直接出局;三是文档和社区活不活跃,我实测每个仓库的最近推送时间,死了半年的项目不敢推荐给读者;四是我自己会不会长期用,我自己都不用的东西没资格占你手机内存。
这周上百个仓库过下来,最后站在这儿的只有五个。星标数都是今天(10 月 11 日)晚上我用 GitHub API 实时拉的,保真。五个项目从「看清家里的流量」到「给网站上锁」再到「全家人的安全清单」,普通读者和安全从业者各取所需。废话少说,开工。
02
sniffnet 你家的流量去哪了 它会一五一十画给你看
先说这个最接地气的。家里 WiFi 上挂着七八台设备是常态:老人的手机、孩子的平板、电视盒子、扫地机器人、摄像头。你有没有想过一个问题——这些设备每天在跟谁说话?我见过太多案例:电视盒子半夜偷偷上传十几个 G,老人手机里某个清理软件全天候往外发心跳包,摄像头固件隔三差五往厂商服务器传缩略图。
sniffnet 干的就是把这件事画明白。它是用 Rust 写的网络流量监控工具,图形界面,Windows、macOS、Linux 三平台都有,界面自带中文(一共 22 种语言)。装好以后选中网卡,它就开始实时画流量图:哪个进程在连外网、连到哪个域名哪个国家、上传下载各多少,还能按流量设通知,比如「某设备一小时上传超过 500MB 就弹窗提醒」。四万一千多颗星,协议 Apache-2.0,完全免费。
我实测它仓库的时候特意看了推送时间:最近一次提交是 10 月 10 日,就是昨天。一个个人维护的开源项目能保持这个更新频率,不容易。另外提一嘴它的定位:sniffnet 是「看清」而不是「拦住」——它告诉你流量去了哪,但不替你拦。这跟本周那篇用开源 DNS 拦广告钓鱼的文章正好是一对:先用 sniffnet 看清谁在乱连,再决定在 DNS 层拦谁。先诊断后开药,顺序别反。
看清家里的流量去向:哪台设备、连到哪、传了什么
03
SafeLine 给自己的网站上一把不花钱的锁
第二个推荐给所有自己搭过网站的人。哪怕你只是用开源程序搭了个博客,被扫描器扫都是分分钟的事——我自己的小站上线第一周就被境外 IP 按着目录字典扫了一遍,日志里密密麻麻全是探测请求。以前想上 WAF,商业的按年收费动辄几万,开源的 ModSecurity 规则调起来能让人头秃。
SafeLine(雷池)是长亭科技开源的自托管 WAF,Go 写的,两万两千多颗星,GPL-3.0 协议。它以反向代理的方式部署在你网站前面,所有 HTTP 流量先过它这一关再进后端,默认规则集就能拦 SQL 注入、XSS、命令注入、目录穿越、CC 攻击、恶意爬虫这些最常见的东西。它拿过 GitHub Trending 总榜第一,文档是中文的,Docker 一条命令起服务,新手教程从零写到上线。
说两句实在话。第一,WAF 是兜底,不是免死金牌——它能拦住通用攻击流量,但你代码里自己写出的逻辑漏洞,WAF 看不懂也拦不住,该修的洞还得修。第二,对没有专职安全团队的个人站长和小团队来说,这把锁的性价比高到离谱:花半小时部署,换来的是扫描器、爬虫和脚本小子的绝大多数噪音被挡在门外。协议是 GPL-3.0,商用场景注意一下开源协议的边界,个人用随便造。
04
ente 照片和验证码终于能自己做主了
第三个是这周我个人最动心的一个。之前那篇《你的用户密码正在数据库里裸奔》聊的是服务端怎么存密码,后台有读者留言问:那我自己这一侧呢?相册、证件照片、两步验证码这些东西,难道只能赌网盘厂商的良心?今天补上答案:不用赌,端到端加密就是那个答案,而 ente 是我目前见过做得最完整的一个。
ente 是一个全开源的端到端加密平台,两万九千多颗星,AGPL-3.0 协议,上面长了三个应用:Ente Photos 加密云相册,功能对标 Google 相册和 iCloud 照片,人脸检测、语义搜索、家庭相册都在,但照片在你手机上就加密完才上传,服务器只看得见密文;Ente Locker 存证件、合同这类最重要的文件;Ente Auth 是两步验证码器,接的是已经停更的 Authy 的班。全平台覆盖,连 F-Droid 都有,免费给 10GB 存储,技术宅还可以整个自托管。
「端到端加密」这四个字不是自己说了算的——ente 请了三家外部安全公司做过审计,其中德国的 Cure53 在圈子里是顶级招牌,审计报告公开可查。这一点很重要:敢把源码和审计报告一起摊开的,才叫真加密;只在官网写一句「军工级加密」的,一律按没加密处理。
顺带给个实在建议:验证码器比你想的重要。短信验证码在补卡劫持面前基本是摆设,这几年被补卡洗库的案子判了不止一起;而存在本地的验证器密钥一旦丢了就进不去账号,所以不管你用哪个验证器,恢复密钥一定离线备份两份。工具是好工具,备份习惯才是命根子。
照片和密码自己做主:加密发生在你的设备上
05
strix 让AI替你干渗透测试 这事得两面看
第四个项目争议最大,也最值得说。strix 是开源的 AI 渗透测试工具,Apache-2.0 协议,我今天实测它的星标是六万七千多,是这五个里涨得最猛的。它干的事说白了就是「AI 黑客」:动态运行你的代码,自己找漏洞,找到以后给出能真实复现的 PoC,而不是丢给你一百条「可能存在风险」让你自己筛。它还支持多代理协作,能直接挂进 GitHub Actions,每个 PR 过一遍,不安全的代码拦在上线之前。
看到它的第一反应,我想起这周三那篇聊谷歌 AI 挖洞的稿子。当时我的结论是:挖洞会被商品化,最值钱的不是发现而是验证。strix 把「可复现 PoC」写进核心卖点,恰好印证了这个判断——市面上一大把扫描器被诟病的就是误报刷屏,而「我给你一条能跑通的利用链」和「我告诉你有个可疑参数」是两个物种。所以这次我不泼冷水了,方向是对的。
但另一面必须说透:工具越强,授权边界越要写在最前面。渗透测试和网络攻击之间隔的不是技术,是一纸授权书。对你自己的项目、你公司书面授权的资产,放心用;对着别人的网站「试试它有没有洞」,那就不是测试,是非法侵入,刑法条文不跟你讲 prompt 怎么写。这句丑话我每期都说,因为它每周都有人栽跟头。
还有一句给同行:AI 不会淘汰安全工程师,但会淘汰不学 AI 的安全工程师,同时把「验证和担责」的分量抬得更高——机器可以跑出一百个洞,签字确认哪个是真、哪个能上生产,还是得人来。
06
personal-security-checklist 全家人的数字安全清单
第五个画风一转,不写给技术人,写给所有人。personal-security-checklist 是 Lissy93 维护多年的项目,两万两千多颗星,干的事特别朴素:把一个人的数字生活安全整理成 300 多条可执行的建议,按账号安全、网络、手机、电脑、家庭防护这些主题分好类,每条都写清楚该做什么。
它好用在配套的网站 digital-defense.io:清单可以按你自己的威胁模型过滤——你是普通人、记者、开发者,需要做的事不一样——做完一条勾一条,进度图表还挺治愈。数据是 YAML 存的,还开了免费 API,想自己折腾的可以直接把清单接进家庭群机器人里。
我的用法很土但有效:周末打印出来,拉着家人过一遍,从里面挑 10 条先做——密码管理器换上、重要账号开两步验证、手机锁屏别用生日、按 3-2-1 规则备份照片(三份、两种介质、一份离线)、路由器改掉默认密码。一小时做完,家庭数字安全水平能超过九成家庭。两句实话:清单是英文的,浏览器翻译完全够用;它是地图不是杀毒软件,帮你查漏补缺,不替你挡子弹。
07
动手环节 两个脚本 把今天的内容变成动作
推荐类的文章我最怕写成「收藏夹吃灰」,所以照例配两个能直接跑的脚本,Python 标准库就行,不用装任何依赖。第一个是「验明正身」:装任何工具前先核对官方仓库的协议、星标和活跃度,顺便看看有多少同名项目在蹭名字。
week\_repos\_check.py — 仓库验明正身(Python,只读)
week\_repos\_check.py — 本周5个项目的官方仓库验明正身(只读 GitHub API)
import json, urllib.request, datetime
REPOS = [\"GyulyVGC/sniffnet\", \"chaitin/SafeLine\", \"ente/ente\",
\"usestrix/strix\", \"Lissy93/personal-security-checklist\"]
def now():
return datetime.datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\")
def gh(path):
req = urllib.request.Request(
\"https://api.github.com\" + path,
headers={\"User-Agent\": \"week-check\",
\"Accept\": \"application/vnd.github+json\"})
with urllib.request.urlopen(req, timeout=15) as r:
return json.loads(r.read().decode(\"utf-8\"))
print(f\"[{now()}] 开始核对 5 个官方仓库\")
for repo in REPOS:
info = gh(\"/repos/\" + repo)
lic = (info.get(\"license\") or {}).get(\"spdx\_id\", \"未标注\")
print(f\"[{now()}] {repo:<40} 星标 {info['stargazers\_count']:<6} \"
f\"协议 {lic:<12} 最近推送 {info['pushed\_at'][:10]}\")
data = gh(\"/search/repositories?q=sniffnet+in:name&per\_page=8\")
print(f\"[{now()}] 名字带 sniffnet 的仓库共 {data['total\_count']} 个,认准作者名再装:\")
for it in data[\"items\"][:5]:
mark = \"官方\" if it[\"full\_name\"] == \"GyulyVGC/sniffnet\" else \"!! 同名项目,装前多看一眼\"
print(f\"[{now()}] {it['full\_name']:<30} {mark}\")
实测输出(节选):五个仓库全部核对通过——sniffnet 四万一千多星、SafeLine 两万两千多星、ente 两万九千多星、strix 六万七千多星、安全清单两万两千多星,最近推送都在一两周内,全部健在。更有意思的是最后一段:名字带 sniffnet 的仓库一共 32 个,除了官方那个,还有大写小写变体、加后缀的、纯蹭名的。搜出来第一个就装,是普通人最容易踩的供应链坑。
第二个脚本管好自己的机器:看看这台设备上到底有哪些端口开着门。Linux 用 ss、macOS 用 lsof、Windows 用 netstat,脚本自动适配,只读不改任何东西:
listen\_audit.py — 本机监听端口审计(Python,只读)
listen\_audit.py — 看看这台机器上谁开着门(只读系统命令,Linux/macOS/Windows 通用)
import platform, subprocess, datetime
def now():
return datetime.datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\")
osname = platform.system()
print(f\"[{now()}] 本机系统: {osname} {platform.release()}\")
if osname == \"Linux\":
try:
out = subprocess.run([\"ss\", \"-tlnp\"], capture\_output=True, text=True, timeout=10)
rows = out.stdout.strip().splitlines()
except FileNotFoundError:
out = subprocess.run([\"netstat\", \"-tlnp\"], capture\_output=True, text=True, timeout=10)
rows = out.stdout.strip().splitlines()
elif osname == \"Darwin\":
out = subprocess.run([\"lsof\", \"-iTCP\", \"-sTCP:LISTEN\", \"-n\", \"-P\"],
capture\_output=True, text=True, timeout=10)
rows = out.stdout.strip().splitlines()
else:
out = subprocess.run([\"netstat\", \"-ano\"], capture\_output=True, text=True, timeout=15)
rows = [r for r in out.stdout.splitlines() if \"LISTENING\" in r]
print(f\"[{now()}] 正在监听的端口共 {max(0, len(rows) - 1) if osname == 'Linux' else len(rows)} 条,逐条过目:\")
for r in rows[:12]:
print(f\"[{now()}] {r[:110]}\")
print(f\"[{now()}] 看到不认识的进程名就复制名字搜一下,不用的端口直接关掉对应服务\")
我拿自己的服务器跑了一遍,输出 25 条监听记录:nginx 占着 80 和 443、sshd 占着 22,都在预期内;但中间有一串 python 进程开着 8020 到 8027 一排端口,我还是逐个核对了一遍才放心——是我自己跑的服务,虚惊一场,但这个「逐个核对」的动作恰恰是脚本存在的意义:你不数一遍,永远不知道自家门后面站着谁。顺带提醒:代码里的空行是个不间断空格,复制后如果报非法字符 U+00A0,把行内空格重打一遍就好。
08
一周小结 三句大实话和一条自查流程
工具自查流程:从核对仓库到长期复查
五个项目讲完,最后把丑话和实话都放这儿。先是一人一条的使用边界,装之前过一眼:
1. sniffnet:监控自己的网络没问题,抓别人的流量是另一回事,公司网络别私自装
2. SafeLine:WAF 拦得住通用攻击,拦不住你自己写的逻辑漏洞,两边都要管
3. ente:端到端加密的代价是忘了密码谁也救不了,恢复密钥必须离线备份
4. strix:只扫自己和书面授权的资产,越强的工具越要敬畏授权边界
5. 安全清单:挑 10 条先做比收藏 300 条强,安全是习惯不是收藏量
三句大实话收尾。第一句:工具不等于安全,看清资产才是——今天这五个都只是镜子和锁,真正的起点是你知道自己有什么、要防谁。第二句:开源的免费是最贵的,你不花钱,花的是部署和维护的精力,换来的是没人偷看你的数据,这笔账我认为怎么算都划算。第三句:这周装一两个就够了,别五个全装然后集体吃灰,安全习惯是一点点长出来的。
周日的一周精选就到这儿。这周我自己动手最多的其实是第一个和第五个:一个看清了家里流量,一个拉着家人过了清单。下周接着翻仓库,看到值得挖的还在这儿讲给你听。
觉得有用?点个「在看」让更多人看到
紫禁玄科
专注网络安全 · 深度分析
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论