CyberChef 实战指南:如何在浏览器里完成 505 个数据加解密与分析操作
【免费下载链接】CyberChefThe Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis项目地址: https://gitcode.com/GitHub_Trending/cy/CyberChef
CyberChef 是英国 GCHQ 出品的浏览器端数据处理工具,支持编解码、加密、压缩、协议解析等 505 个操作。它面向安全分析师、逆向工程师和普通开发者。读完本文,你能把它部署到本地、完成一次多层编码的自动剥离,并用 Node API 把处理流程写进脚本。
🧰 能力全景:CyberChef 能替你做什么
src/core/operations/下共有 505 个操作,按类别归组。最高频的十类能力如下:
| 能力分类 | 典型任务 | 对应操作 |
|---|---|---|
| 编解码 | Base64、十六进制、莫尔斯、Punycode 互转 | From Base64 / To Hex / From Morse Code |
| 对称加密 | AES、RC4、Salsa20 加解密 | AES Decrypt / RC4 |
| 哈希与指纹 | 计算 MD5/SHA、生成 TLS 指纹 | SHA2 / JA3Fingerprint |
| 数据提取 | 从日志里抽 IP、邮箱、URL | Extract IP Addresses / Extract Email Addresses |
| 协议解析 | 解析 IPv6、TCP 头、X.509 证书 | Parse IPv6 Address / Parse X.509 Certificate |
| 压缩打包 | gzip、bzip2、zip、tar | Gzip / Bzip2Compress / Zip |
| 格式转换 | JSON↔CSV↔YAML、代码美化 | JSON to CSV / JSON Beautify |
| 自动检测 | 一键识别多层嵌套编码 | Magic |
| 图像分析 | OCR 文字识别、二维码解析 | Optical Character Recognition / Parse QR Code |
| 流程控制 | 按行拆分分支、条件跳转 | Fork / Conditional Jump |
左侧搜索框支持按名称或描述即时过滤,找不到的操作多半换个关键词就能搜到。看完这张地图,接下来用最短的路径跑起来。
最短上手路径:三步完成第一次解码
第一步,部署。Docker 是最短路径,直接用官方预构建镜像:
docker run -it -p 8080:8080 ghcr.io/gchq/cyberchef:latest然后打开 http://localhost:8080。若想从源码跑,准备 Node.js v24(官方支持>=24 <27),执行npm install后再npm start,同样落在 8080 端口。
第二步,认识四个区域。界面分四块:右上是输入区,粘贴文本或拖入文件,最大约 2GB;右下是输出区,结果实时显示;最左是操作列表,按类别浏览或搜索;中间是Recipe 区,把操作拖进来就组成处理链。
第三步,做最小转换。在输入区粘贴SGVsbG8=,左侧搜索From Base64并拖入 Recipe 区,输出区立刻显示Hello。全程自动“烘焙”(Auto Bake),改一个参数就重算一次,不用点运行。
从日志里捞干净全部 IP
你手里有什么:一段几百行的 Apache 访问日志,IP 混在 UA 串和请求路径里。
操作步骤:
- 日志整体粘贴进输入区。
- 拖入Extract IP Addresses,它把全部 IPv4/IPv6 逐行列出。
- 需要换算就追加Change IP Format,转成十进制或十六进制。
- 最后加Sort按地址排序。
你得到什么:一份干净、可排序的 IP 清单,排查来源时不用再和 grep 互相校对。提取逻辑可对照 src/core/operations/ExtractIPAddresses.mjs 阅读。
把多层嵌套编码一层层剥开
你手里有什么:一段确认被编码过多次、但说不出层序的字符串,比如VTI4Z2JHOXV...这类。
操作步骤:
- 字符串粘贴进输入区。
- 拖入Magic,它靠字符统计与校验推断可能的编码。
- 层数多就把 Depth 参数调大,允许更深的递归探测。
- 命中后点击输出区提示,逐层应用解码。
你得到什么:原始文本,外加每一层被识别出的编码类型。原来要开好几个工具手试,现在一个页面走完。检测算法在 src/core/lib/Magic.mjs。
从图片里读出文字
你手里有什么:一张扫描单据或含文字的截图,内容无法选中复制。
操作步骤:
- 把图片直接拖进输入区,或点击上传。
- 添加Optical Character Recognition操作。
- 选择识别引擎与目标语言。
- 在输出区查看识别出的文本。
你得到什么:可继续参与后续处理的纯文本。识别由浏览器本地的 tesseract 引擎完成,图片不出机器。仓库自带一张可试的样例图:
效率进阶:想要 X 时怎么办
想看到每一步的数据形态?在 Recipe 里任意操作上设断点,执行会在那一步之前暂停,配合单步执行逐个查看中间数据。
想把流程分享给同事?直接复制页面 URL——hash 里携带recipe和input(Base64 编码)参数,对方打开即还原整个处理;也可以点 Save recipe 存进浏览器本地存储。
想让不同数据走不同逻辑?先用Fork把输入按行拆成多支,再用Conditional Jump按条件跳转,就能搭出“IP 走一条支路、域名走另一条”的流水线。
想把处理流程写进脚本?Node.js 包把每个操作都暴露成函数:
const chef = require('cyberchef'); chef.toBase32('input').to('string'); // NFXHA5LU多个操作也能用bake(input, recipe)串起来执行,入口见 src/node/api.mjs。
🛠 排坑速查
| 症状 | 可能原因 | 解法 |
|---|---|---|
| 处理 GB 级输入时页面卡死 | Auto Bake 反复触发 | 关掉 Auto Bake,手动烘焙 |
| 构建时内存溢出 | Node 堆内存不足 | 构建前执行npm run setheapsize |
| npm install 报版本错误 | Node 版本不符 | 使用>=24 <27的 Node.js(v24 为官方支持版) |
| Node 环境缺某个操作 | 该操作仅限浏览器端 | 改用浏览器版,或查 src/node/config/excludedOperations.mjs |
| Magic 识别不出编码 | 数据不匹配任何已知格式 | 开 intensive 模式,或用 crib 正则缩小候选 |
📋 下一步清单
- 把调好的 Recipe 存成 JSON 存档,交给团队复用
- 运行
npm run newop,按交互模板搭一个自定义操作 - 翻一遍 tests/operations/tests/ 里的操作测试样例,看配方怎么写
- 阅读 CONTRIBUTING.md 的开发指南,把自用的操作贡献回去
- 把所有处理都留在客户端的整套应用下载到内网机器,在断网环境里照样工作
【免费下载链接】CyberChefThe Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis项目地址: https://gitcode.com/GitHub_Trending/cy/CyberChef
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考