跳转至

小工具

站上的文章说明怎么保护自己,小工具区放的是可以直接按的东西。共同的规则有四条:

  • 全部在你的浏览器里运算,不送出任何数据
  • 存进设备之后没有网络也能用,断网可用本身就是「没有偷送东西」的证明
  • 源代码在 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,涵盖五年份的内容,里面有数据库密码、云端密钥与企业内部账号。两站的政策都写着不要拿它存机密数据,看到的人不多。

所以这一区的规则没有为了方便开的侧门。要把结果给别人,自己存档再用你信得过的渠道传。