告别手动解码:用 CyberChef 把多层编码数据 3 分钟还原成明文
2026/9/1 13:32:11 网站建设 项目流程

告别手动解码:用 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(输出),改输入、拖操作,输出会即时重算

最小可复现案例,四步:

  1. 在右侧 Input 粘入SGVsbG8gV29ybGQ=
  2. 左侧搜索框输入 From Base 64,把命中的操作拖进中间 Recipe 区
  3. 无需任何按钮,Output 立刻显示Hello World
  4. 偷懒版:跳过第 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 解码或正则提取——截图从此变成了数据流的一环。

效率加成 & 容易踩的坑

三个进阶用法

  1. 把 Recipe 当交付物:整个流程会编码进 URL,把链接发给同事,流程原样复现;本地存档用 Save。URL 与流程的互转逻辑在 src/web/waiters/RecipeWaiter.mjs。
  2. 长流程设断点:点某个操作右上角的停止图标,再按 Step 单步执行,逐段核对中间结果,排错时比从头看输出快得多。
  3. 用 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询