小工具¶
站上的文章说明怎么保护自己,小工具区放的是可以直接按的东西。共同的规则有四条:
- 全部在你的浏览器里运算,不送出任何数据
- 存进设备之后没有网络也能用,断网可用本身就是「没有偷送东西」的证明
- 源代码在 anoni-net/docs,看得懂的人可以自己验
- 都需要浏览器开着 JavaScript,因为运算是在你的设备上做的
用 Tor Browser 的话有一个冲突要知道¶
Tor Browser 的安全等级调到 Safest 会把 JavaScript 全部关掉,小工具区的工具就整页不动。
冲突在于,安全等级页的指引写的是在「来路不明的钓鱼链接、不熟悉的域名」时把等级调高,而收到可疑链接正是最需要用隐形字符检测或 QR code 读取器查一下的时候。
处理方式是把两件事分开。可疑的网站用高安全等级去开,把要查的文字或图片复制出来之后切回 Standard,查完再调回去。小工具区的工具不连外,在 Standard 等级下打开它们不会增加你在该可疑网站上的暴露。
目前有的¶
要防什么¶
把「要保护什么、要防谁、愿意付出多少」三题答成一份可复制的清单,并标出答案里的错配。答案预设不存,要留的话用 passkey 加密存在你的设备上。
把站上的行动建议收成一份可勾的清单,勾了用 passkey 加密存在你的设备上,下次按一次指纹就看得到进度。没有账号、没有服务器,站上什么都不存。
密码与加密¶
用 asian-diceware 的 7776 字词表抽密语,或从你选的字符集抽随机密码。随机数来自浏览器的 crypto.getRandomValues,并且会显示生成出来的密码熵有多少。
选一个文件或贴一段文字,用密语、passkey 或收件人的 age 公钥在浏览器里加密成 age 格式,或把 age 文件解回来。密文可以输出成文字,跟密语一起存进你的密码管理器就能跨设备。加密完先用同一组密语解回来比对才给下载。输出是公开格式,任何装了 age 命令行工具的电脑都能解开,不需要这个网站。
创建一把这个网站的 passkey,存进你的密码管理器或钥匙串。只用清单的话按一次「创建 passkey」就够,要用文件加密才需要再试一次解锁、生成备援密钥。之后本机文件加密可以用它当钥匙,不用记密语,准备清单、威胁模型的存档与收件人簿也用它加密存在你的设备上。没有账号、没有服务器,站上什么都不存。
当面传东西¶
把 onion 网址、Tor bridge 等很长又容易打错的字符串变成 QR code,让眼前的人用相机读走,中间不经过任何服务器。可以下载成 SVG 印出来。
读出图片里 QR code 的内容,图片不离开设备。解出来是网址时把主机独立标出来,并且不提供打开按钮。
手机里的东西要送进旁边那台笔记本,而现场的 Wi-Fi 不是你的。把文件切成一连串 QR code 轮流播放,另一台用摄像头读回来拼成原文件。两台设备之间没有配对、没有共用网络、没有服务器。
算出文件的 SHA-256,跟对方给的那一串比对。U 盘带过去、托人带过去、下载回来的安装包,都靠这一步确认取得的跟原本那份一样。几 GB 的文件也算得动,过程中显示进度。
发出去之前¶
合并好几份 PDF、抽出或删掉某几页、换顺序、转方向。输出是新建的文件,来源的标题、作者、制作软件与创建时间都不会跟过来,交给你之前会重新读一次确认页数与方向都对。
拿掉照片、视频、录音、Office 文档与 PDF 里的 EXIF、GPS、设备型号、制作软件、作者与注释字段,全程在本机处理。照片、视频与录音的压缩数据一个比特都没动,每一段的去留都列给你看。
在截图或照片上拉方框,把不该外流的名字、头像与对话填成实心黑色,全程在本机处理。输出重新编码,原文件的 metadata 与文件名都不会带过去,交给你之前会逐像素确认每一处都是纯黑。
收到之后¶
把网址里的追踪参数挑出来并移除,每一个都说明是谁在追。拆掉 Google 与 Facebook 的转址包装,并把真正的注册域名单独标出来,品牌放在子域名、旁边加字、用长得像的字母冒充都会说明。
找出文字里看不见的零宽字符、方向控制、标签字符与同形字,标出位置并说明每一类是什么。文件外流追踪、钓鱼网址,还有藏给 AI 读的指令,都会利用看不见的字符。
列出任何网站不必问你就拿得到的信息,并标出 Tor Browser 会把哪些统一掉。换个浏览器再看一次,就知道 Tor Browser 实际上防住了什么。
工具怎么接起来¶
上面每一个工具负责一个动作,而你手上的一件事通常要走过两三个。下面这几条是常走的顺序。
| 你手上的事 | 走的顺序 |
|---|---|
| 第一次坐下来,要先厘清该做什么 | 威胁模型清单答三题并看错配,我的准备清单勾出接下来要做的,passkey 钥匙把进度加密存在你的设备上 |
| 想知道网站不必问就拿得到你什么 | 你的浏览器透露了什么看一次,换一个浏览器再看一次做对照,网址清理器查链接尾巴带着谁的标识码 |
| 照片或截图要交给别人 | 画面上有要遮的东西,用截图遮蔽,输出已经不带原文件的 metadata。画面干净、只要去掉拍摄信息的,用文件 metadata 清除器 |
| 要交一份 PDF 出去 | PDF 页面整理排好页面,再用同一页的「看里面有什么」搜索不该留下的字 |
| 收到来路不明的链接或 QR code | QR code 读取器解出内容,网址清理器看注册域名,隐形字符检测查文字里的同形字 |
| 收到别人给的文件,要确认也要看清楚 | 文件哈希比对确认跟对方手上那份一样,文件 metadata 清除器或 PDF 页面整理的「看里面有什么」列出里面带着什么,隐形字符检测查夹带的字符 |
| 东西要给眼前的人或旁边那台设备 | 很长的字符串用 QR code 生成器,让对方用相机读走。几 KB 的文件用 QR code 影格串流,收齐时它自己比对 SHA-256 |
| 文件要托人带走或放进 U 盘 | 密语与密码生成器抽一组密语,本机文件加密封起来,文件哈希比对让收的人核对 |
| 临时要一组之后找得回来的密码 | 密语与密码生成器抽,passkey 钥匙当钥匙,我的准备清单记下已经做到哪里 |
走完一整条路径长什么样,用九件具体的事各写一篇。日常场景那组不需要你先有特殊身份或特别的处境,工作场景那组对着站上服务的几种工作写。
日常场景¶
刚在别的地方看过的东西,转头就出现在信息流的广告里。任何网站不必问就拿得到你哪些信息、那些值加起来为什么足以认出你,以及链接尾巴带着谁的标识码。
截止只剩一个晚上,简历是旧版改的,作品集分成三个文件,其中一页是前公司还没公开的画面。导出的 PDF 为什么带着你电脑的账号名称,黑色方块盖住的字为什么还在文件里。
搬家前拍了十四张照片要上架,背景有门牌、对面大楼的招牌与桌上的账单。截图遮蔽与 metadata 清除器什么时候该用哪一个,以及买家要你出示证件时该怎么回。
小区群转来一则限时登记的消息,附一个看起来像官网的网址与一张 QR code 图。注册域名为什么是唯一该看的部分,看不见的字符能查到什么、查不到什么。
工作场景¶
新人下周报到,权限开好了,而没有人跟他谈过设备该怎么准备。为什么三题要有人在旁边问,错配清单为什么比答案本身有用,以及进度为什么存在他自己的设备上。
年度申报要把捐款人名单交给会计师,往年都当附件发出去。密语为什么要走另一个渠道,加密过的文件为什么还要算一次哈希。
场地的 Wi-Fi 是主办方的,二十个人的设备各不相同。哪些东西该印成 QR code、哪些用屏幕跟镜头传、哪些只能靠 U 盘。
来源发来一份内部简报,你要核实它、要引用它,而且不能让提供的人被指认出来。文件外泄追踪怎么运作,为什么引用要靠重打与遮蔽。
四十几张对话截图要整理成一份送出去的附件,画面上有第三人的名字与头像。遮蔽、合并与确认的顺序,以及交出去之前最后那一步要查什么。
要离线带着走¶
工具的程序与数据会跟页面一起存下来。QR code 生成器、读取器、影格串流与密语生成器四页跟核心章节一起自动存进设备,理由是它们在断网现场会用到,见网络中断时的准备与应对。其余几页在离线阅读的清单里勾起来,之后没有网络也可以打开。
用了谁的程序¶
小工具区大部分的程序是自己写的,放在 anoni-net/docs 底下。有几样东西来自别人,原封不动放进来,不做任何修改:
| 组件 | 用在 | 授权 | 授权文字在哪 |
|---|---|---|---|
| qrcode-generator 1.4.4 | QR code 生成器、影格串流 | MIT | 文件开头的标头 |
| jsQR 1.4.0 | QR code 读取器、影格串流 | Apache-2.0 | jsQR-LICENSE.txt |
| pdf-lib 1.17.1 | 文件 metadata 清除器的 PDF 部分 | MIT | pdf-lib-LICENSE.txt |
| asian-diceware 的 7776 字词表 | 密语与密码生成器 | 词表数据 CC-BY-4.0,程序 MIT | 上游的 repo |
| typage(npm 的 age-encryption)0.3.1 | 本机文件加密 | BSD-3-Clause | LICENSE |
| typage 相依的 noble-ciphers 2.1.1、noble-curves 2.0.1、noble-hashes 2.0.1、noble-post-quantum 0.5.3、scure-base 2.0.0 | 本机文件加密 | MIT | noble-ciphers、noble-curves、noble-hashes、noble-post-quantum、scure-base |
pdf-lib.min.js 里面还打包了微软的 tslib(Apache-2.0),它的版权信息跟着留在文件里,没有被压缩工具剥掉。
不做修改是刻意的。改过就失去可对照上游版本的可审性,读者要验的时候只能相信我们的说法。文件都在 utils/vendor/ 底下,可以自己跟上游的版本比对。typage 与它的相依是 ES module,没有单一文件的发行版,所以连同 package.json 与授权原封不动放进 vendor/age/,页面用 import map 接起来,每一个文件都能跟 npm 上同版本的 tarball 逐字节比对,哈希记在 vendor/README.md。
为什么不自己写,各页最后一节都有说明。共通的理由是外部函数库写错不会崩溃,只会产生看起来正常但实际上错的结果,比坏掉更难发现,QR code 生成器那一页就记了一次实际遇到的例子。
没有收进来的东西¶
需要连到外部服务才能运作的功能不会收进小工具区,因为连接本身就违反「离线可用」与「不送出数据」两条规则。网络测量请用 OONI Probe,它是设计来做网络测量的工具,数据的处理方式也公开。
分享链接也不会有。把结果存起来给别人看,听起来只是方便,实际上是把内容送到服务器,而工具本体仍然在浏览器里运算,画面上看不出差别。JSONFormatter 与 CodeBeautify 这两个粘贴型工具站就是这样,政策里写着九成九的工具在浏览器里处理,那句话是真的,但同时有一颗存档按钮,存下来的内容默认公开,搜索引擎索引得到。安全团队 watchTowr Labs 在 2025 年从那里取得八万多份提交、超过 5 GB,涵盖五年份的内容,里面有数据库密码、云端密钥与企业内部账号。两站的政策都写着不要拿它存机密数据,看到的人不多。
所以这一区的规则没有为了方便开的侧门。要把结果给别人,自己存档再用你信得过的渠道传。