告别手动解码:用 CyberChef 把多层编码数据 3 分钟还原成明文
【免费下载链接】CyberChefThe Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis项目地址: https://gitcode.com/GitHub_Trending/cy/CyberChef
从同事手里拿到一句"这是 Base64,好像还套了一层"的字符串,你打开三个不同的在线工具挨个试。我之前也这样。后来换成了 CyberChef——GCHQ(英国政府通信总部)维护的网络安全数据处理 Web 应用,把字符串粘进去,它自己识别编码、逐层解开,全程不用换工具。
能力速览:它能干什么
- 解码:Base64、Hex、二进制、ROT13 等二十多种编码,一键正转反转
- 解密:AES、ChaCha 等对称加密,RSA、ECDSA、PGP 等密钥与签名操作
- 分析:从文本里提取 IP、哈希、URL、MAC 地址,自动识别文件类型
- 处理:ZIP/Gzip 压缩解压、JSON 与 SQL 格式化、图片转文字(OCR)
5 分钟用 Docker 跑通第一个 Recipe
最短路径是 Docker,在项目仓库根目录敲两条命令:
docker build --tag cyberchef --ulimit nofile=10000 . docker run -it -p 8080:8080 cyberchef打开http://localhost:8080就能用。不想本地构建的话,官方站点有浏览器 Demo 可以直接试;要改代码则npm start起开发服务器,同样在 8080 端口。
打开页面,你第一步只需要认三个位置:
- 左侧:400 多个操作的列表,顶部有个搜索框,这是你找工具的主入口
- 中间:Recipe 区(Recipe 就是"菜谱"),拖进去的操作按顺序串成处理流程
- 右侧:上面是 Input(输入),下面是 Output(输出),改输入、拖操作,输出会即时重算
最小可复现案例,四步:
- 在右侧 Input 粘入
SGVsbG8gV29ybGQ= - 左侧搜索框输入 From Base 64,把命中的操作拖进中间 Recipe 区
- 无需任何按钮,Output 立刻显示
Hello World - 偷懒版:跳过第 2 步,直接点 Output 上方的魔术棒图标,它会自动替你把流程配好
揭开引擎盖:Magic 是怎么自动识别编码的
刚才那个魔术棒背后是 Magic 模块,逻辑可以拆成输入→处理→输出三步:
- 输入:一段来源不明的字节。
- 处理:先算香农熵(衡量数据"多随机",Base64 文本熵低,压缩后的数据熵高);然后逐个比对各操作注册过的识别条件——熵区间加字符正则,比如 Base64 就是"只含 A–Z、a–z、0–9、+/="且长度对齐。命中之后它还会试探性执行解码,用结果是否像有意义的文本来打分,而不只是猜。
- 输出:一份按可信度排序的候选操作,或直接自动应用。
每个操作在代码里声明自己的输入特征,Magic 按序遍历匹配,具体实现见 src/core/lib/Magic.mjs。所以"它怎么知道这是 Base64"的答案是:不是 Magic 内置了 Base64 规则,而是 Base64 操作自己认领了这类输入。
两个真实工作流
日志里捞 IP,顺手归并网段
你要解决什么:一份几百行的访问日志,想快速知道流量来自哪些 /24 网段,重复地址要去重。
拖哪几个操作:Extract IP Addresses 把地址抠出来 → Group IP addresses 做归并。提取逻辑在 src/core/operations/ExtractIPAddresses.mjs。
关键参数:Group 的 Subnet (CIDR) 默认 24,改一个数字就能切 /16 或 /32;勾上 Only show the subnets 就只留网段清单。
得到什么:按网段分好组、无重复的 IP 列表,归并规则实现在 src/core/operations/GroupIPAddresses.mjs,IPv4/IPv6 都支持。
把截图里的终端文字变成可搜索的文本
你要解决什么:报错信息在一张终端截图里,复制不到、也搜不了,想把它喂给后续的解码操作。
拖哪几个操作:把 png/jpg 直接拖进 Input(支持 png、jpg、bmp、pbm),再拖入 Optical Character Recognition。OCR 基于 tesseract.js 跑在浏览器里,源码在 src/core/operations/OpticalCharacterRecognition.mjs。
关键参数:语言选 eng(中文要另选语言包);勾 Show confidence 能看到每行识别置信度,低于 80 的段落基本不可信。
得到什么:纯文本,可以继续往下接 Base64 解码或正则提取——截图从此变成了数据流的一环。
效率加成 & 容易踩的坑
三个进阶用法
- 把 Recipe 当交付物:整个流程会编码进 URL,把链接发给同事,流程原样复现;本地存档用 Save。URL 与流程的互转逻辑在 src/web/waiters/RecipeWaiter.mjs。
- 长流程设断点:点某个操作右上角的停止图标,再按 Step 单步执行,逐段核对中间结果,排错时比从头看输出快得多。
- 用 Node API 脚本化:同一套操作可以从 Node 调用,适合批量和自动化任务,入口在 src/node/api.mjs:
const {Chef} = require("cyberchef"); const out = Chef.bake("SGVsbG8=", [{op: "From Base 64", args: {}}]); console.log(out.toString()); // Hello新手高频坑
- 大文件卡死浏览器 → 数据全在浏览器内存里处理,Auto Bake 每次改动都重算 → 关掉 Auto Bake,手动点 Bake。
- 个别操作报错或不可用 → 依赖较新的浏览器能力(如 WebAssembly)→ 换 Chrome 90+ 或 Firefox 88+。
- 拿"加密"结果当保护手段 → 这里的加密算法面向数据处理与互操作,不是经过安全审计的实现 → 敏感数据的最终加密请交给专业密码学库。
带走什么 & 去哪继续
记住三样东西就够了:Output 上方的魔术棒、左侧操作的搜索框、"URL 就是 Recipe"。
- 开发流程与新操作模板:CONTRIBUTING.md(
npm run newop由 src/core/config/scripts/newOperation.mjs 生成骨架) - 每个操作的真实输入输出样例:tests/operations/tests/
下一步你可以试:翻出最近一次收到的"看着像编码"的字符串,丢进 Input,按一下魔术棒——如果明文出来了,你已经算会用 CyberChef 了 🍳
【免费下载链接】CyberChefThe Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis项目地址: https://gitcode.com/GitHub_Trending/cy/CyberChef
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考