CyberChef 配置与模块体系详解

CyberChef 配置与模块体系:无服务端配置文件的三层配置模型、浏览器端选项实测、16 大分类 539 个 Operation 挂载点详解、Magic 识别机制与官方测试 17/17 实测、构建期定制与 Node API。

CyberChefCyberChef安全网络工具2026/10/27

CyberChef 配置与模块体系详解

目标:讲透 CyberChef 的「配置」与「模块/Operation」体系——它没有传统服务端配置文件,本文按其真实形态展开:浏览器端运行时选项、源码 src/core/config 构建期配置、16 大功能分类共 539 个 Operation 挂载点的分类详解、Magic 自动识别机制与实测,以及基于官方 Node.js 模块的程序化调用与 REPL。全部分类清单取自 v11.5.0 源码 Categories.json,配置键取自 v11.5.0 构建产物 main.js 与 package.json 实测,操作行为经官方 Node API(与 Web 界面同一套实现)逐条实测。

一、环境信息

项目值
操作系统Ubuntu 22.04(x86_64)
CyberChef 版本v11.5.0(官方最新稳定版,2026-09-18 发布)
静态发布包CyberChef_8cd426dd4f40f1423912d5fad91b578a86a65112.zip(解压目录 /var/www/cyberchef,80 MB)
Node.js(程序化形态)v22.23.4 + cyberchef npm 包 11.5.0(npm install cyberchef)
源码取证对象v11.5.0 tag 的 src/core/config/Categories.json、package.json
分类清单口径16 个功能分类、539 个 Operation 挂载点(Categories.json 实查)

⚠️ 网络说明:npm 安装官方 cyberchef 包时直连 registry 超时,经代理完成(npm config set proxy/https-proxy 后安装成功);分类与构建脚本取自 GitHub 官方源码仓库 v11.5.0 tag。部署过程本身见《CyberChef 安装与初始化实战》。

二、前置条件

  1. 已完成一份可访问的 CyberChef 部署(自托管见《CyberChef 安装与初始化实战》,或直接使用官方在线实例 gchq.github.io/CyberChef);
  2. 程序化调用形态需 Node.js ≥ 17(官方 Wiki 口径),本文实测环境为 Node v22.23.4;
  3. 了解 Operation / Recipe / Dish 三个核心名词:Operation 是单个数据处理步骤(如 From Base64),Recipe 是一串按序执行的 Operation 列表,Dish 是数据在链路中流转的载体(输入 Dish 经每个 Operation 变换后传给下一个)。

三、配置体系总览:为什么「没有配置文件」

CyberChef 与常规服务端软件最大的认知差异是:它没有进程、没有数据库、没有用户体系,因此不存在 cyberchef.conf 这类服务端配置文件。它的「配置」分布在三层,各自生效时机不同:

层位置生效时机典型内容
Web 服务器层Nginx 站点配置(如 /etc/nginx/sites-available/cyberchef)部署期,改后 reload端口、根目录、gzip_static、缓存、访问控制
浏览器端运行时层界面 Options(齿轮)面板,持久化在浏览器 localStorage用户使用期,即时生效主题、自动烘焙、日志级别、分类计数显示等
构建期层源码 src/core/config/(Categories.json、Operations.json 等)npm run build 时固化进产物操作注册与分类、界面文案、默认环境参数

理解三层分工后就能回答「想改 X 该动哪里」:想换端口/加 HTTPS → 改 Web 服务器层;想改界面行为偏好 → 浏览器 Options;想裁剪操作、改默认参数、做内部分发定制 → 构建期层(第七章)。

💡 技术拓展:应用配置的常见加载模式有「配置文件(启动读取)」「环境变量(进程注入)」「数据库(运行时可变)」「前端本地存储(每浏览器独立)」四类。CyberChef 作为纯前端应用,运行时配置只能落在最后一种——这决定了它的配置是每用户、每浏览器独立的,无法由管理员统一下发;需要全员统一偏好的团队只能走构建期定制或默认值改造。

四、浏览器端运行时配置详解

浏览器端选项通过界面右上角 Options(齿轮图标)面板调整,保存在浏览器 localStorage,换浏览器/换电脑不跟随。以下键名与默认值全部从 v11.5.0 构建产物 assets/main.js 中实查取证(源码压缩后形态,!0 即 true):

配置键实测产物证据含义
themetheme:"classic"界面主题,默认 classic(另有 dark 等变体)
autoBakeautoBake_ 系列代码(Auto-baking 日志、输入变化触发 bakeAll)自动烘焙开关:输入或 Recipe 变化即自动重算输出,默认开启
updateUrlupdateUrl:!0把当前 Recipe 与输入编码进 URL hash,默认开启(分享能力的底层开关)
imagePreviewimagePreview:!0输入/输出面板的图片预览,默认开启
showCatCountmain.js 实查存在操作分类旁显示操作数量
showHighlightermain.js 实查存在输入/输出语法高亮
logLevelmain.js 实查存在前端调试日志级别

两处常用开关的实操含义:

  • Auto Bake(自动烘焙):默认开启,输入一变即刻全链重算,适合中小数据;粘贴大文件或跑耗时操作(如爆破、大哈希集)时建议点掉 Auto Bake 改手动 Bake,避免界面假死。v11.5.0 的安全修复(CHANGELOG:SECURITY: prevent autobake on loaded recipe if any operation has manualBake set)正是针对「带手动烘焙标记的操作被自动执行」的边界加固。
  • updateUrl(URL 状态化):开启后当前输入与 Recipe 都编码在页面 URL 的 hash 段里(形如 #input=…&recipe=…&args=…),复制地址栏即可把整条处理链发给同事,对方打开即复现——这是 CyberChef 分享协作的核心机制,也意味着 URL 本身可能携带敏感数据,发链接前要过一遍数据分级。

五、Operation 分类体系详解

v11.5.0 源码 src/core/config/Categories.json 是操作分类的权威清单:16 个功能分类、合计 539 个挂载点(同一操作可挂多个分类,去重后实际操作数约 500 个)。逐类给出定位与代表操作(清单为 Categories.json 实查):

分类挂载数定位与代表操作
Data format(数据格式)80各进制/编码表示互转:To/From Hex、To/From Charcode、To/From Decimal、To/From Hexdump、Base32/Base64/Base85、URL Encode、PEM to Hex
Encryption / Encoding(加密与编码)95对称与古典加密:AES/Blowfish/DES/Triple DES 加解密、RC4、ChaCha20、ROT13、ROT47、Vigenère、XOR Brute Force
Public Key(公钥体系)32证书与密钥解析:Parse X.509 certificate、PEM to JWK(v11.5.0 新增 Parse PGP Key)、Parse ASN.1 hex string、Object Identifier 互转
Arithmetic / Logic(算术与逻辑)31位运算与集合运算:XOR、Bit shift、Rotate right、Set Union/Intersection/Difference、Cartesian Product
Networking(网络)38报文与网络数据解析:HTTP request、DNS over HTTPS、Strip HTTP headers、Parse IP range、Parse IPv6 address、Parse User Agent、Parse Ethernet frame
Language(语言)7文本语言层处理:Encode text、Unicode Text Format、Remove Diacritics、Convert to NATO alphabet
Utils(通用工具)52文本级杂项:Diff、Remove whitespace、Remove null bytes、To Upper case、Head/Tail、Shuffle
Date / Time(日期时间)10From/To UNIX Timestamp、Parse DateTime、Windows Filetime 互转、DateTime Delta、Extract dates
Extractors(提取器)20从大文本中抽信息:Strings、Extract IP addresses/URLs/domains/email addresses/MAC addresses/file paths
Compression(压缩)21Gzip/Gunzip、Zip/Unzip、Zlib Deflate/Inflate、Raw Deflate/Inflate、Bzip2(v11.4.0 起新增 XPRESS/MS-XCA 解压)
Hashing(哈希)50MD2/MD4/MD5/MD6、SHA0/1/2/3、CRC 系列校验、Analyse hash(识别哈希类型)、Generate all hashes
Code tidy(代码整理)30JSON/XML/JavaScript Beautify 与 Minify、Syntax highlighter、Generic Code Beautify
Forensics(取证)12Detect File Type、Scan for Embedded Files、Extract Files、YARA Rules、Extract/Remove EXIF
Multimedia(多媒体)29Render Image、Optical Character Recognition(内置 Tesseract)、Play Media、Split Colour Channels、View Bit Plane
Other(其他)22分析型:Entropy、Frequency distribution、Index of Coincidence、Chi Square、Disassemble x86/ARM
Flow control(流程控制)10Magic、Fork、Subsection、Merge、Register、Label、Jump、Conditional Jump、Return

三类特别值得展开的机制:

1. Flow control 让 Recipe 具备编程性。 Fork 可把输入按行/字符拆开并行过链(相当于对每行各跑一遍 Recipe),Merge 合并分支,Register/Label/Jump/Conditional Jump 支持「提取某个值存起来 → 满足条件跳转到某标签」的逻辑,Return 提前结束。配合起来,CyberChef 可以表达「逐行解码 → 按值分流 → 分别处理」的批处理逻辑,而不只是单条流水线。

2. 多媒体/取证类操作依赖按需加载模块与 WASM。 操作实现按领域打包在发布包 modules/ 目录(实测 v11.5.0:Encodings.js 2.6 MB、Code.js 2.7 MB、Jq.js 2.6 MB、Shellcode.js 5.6 MB 等),OCR 等能力基于 WebAssembly(assets/tesseract/ 下含 tesseract-core.wasm.js 与 eng.traineddata.gz 语言包)。这就是为什么发布包必须整体解压——删掉 modules/ 下任何文件都会让对应操作在执行时报加载失败。

3. 哈希分类自带「分析」能力。 Analyse hash 会按长度/字符集猜测给定哈希串的类型(MD5/SHA-1/SHA-256 等),Generate all hashes 一次性生成全部算法摘要,配合 Extractors 是日志中定位密码哈希的常用组合。

💡 技术拓展:编码与加密是两回事——编码(Base64/Hex/URL)是表示形式的可逆变换,无密钥、无保密性;加密(AES/ChaCha20)依赖密钥、具备保密性;哈希(MD5/SHA)单向不可逆。CyberChef 把三者放在同一界面常被新手误用,判断口诀:能不靠密钥还原的是编码,需要密钥的是加密,还原不回的是哈希。

六、Magic 自动识别机制与实测

Magic 是 Flow control 分类中的明星操作:对未知输入自动探测「它是什么」,直接给出可执行的解码建议。其工作机制(官方 Wiki 口径):对输入做特征采样——检查文件魔数(magic bytes)、可打印率、熵值、常见编码(Base64/Hex/Gzip 等)的试解成功率、语言检测结果,按置信度排序生成候选,默认探测深度 3 层(Depth 参数可调,另支持 Intensive mode 与已知明文 Crib 参数)。

Magic 属于 Flow control 类操作,Web 界面中以交互列表呈现(每条建议带「应用该操作」按钮),而官方 Node API 的 chef.bake 明确禁止运行 Flow control 类操作,实测报错(Node.js v22.23.4 + cyberchef@11.5.0):

flowControl operations like Magic are not currently allowed in recipes for chef.bake in the Node API

因此 Magic 的权威验证方式是跑官方操作测试套件。v11.5.0 发布的测试集中 Magic 子测试共 17 条,实测(在安装 cyberchef 包的目录下执行,Node v22.23.4):

node --no-warnings --no-deprecation --openssl-legacy-provider magictest.mjs

实测回显(运行器加载官方 tests/operations/tests/Magic.mjs 并复用官方 TestRegister 执行):

Running operation tests...

TOTAL	17
PASSING	17

17 条全部通过。官方测试断言的典型样本(取自官方测试源码,即 Web 界面 Magic 的真实行为):

输入Magic 实际行为(官方测试断言)
41 42 43 44 45(Hex 字节串)建议配方 From Hex('Space'),识别输出 ABCDE
空/无特征输入提示 Nothing of interest could be detected about the input data. 并建议调整参数
中文 mojibake 字节串识别出 UTF-8 错位编码并给出修复配方,还原出正确中文

生产用法:把 Magic 放在链首做「第一眼判断」,再手工把推荐操作固化成正式 Recipe;多层嵌套样本(如 Base64(Gzip(JSON)))加大 Depth 后可逐层识别。

七、构建期配置与定制(src/core/config)

需要「裁剪操作、预置默认 Recipe、改品牌」的内部分发场景,走源码构建路径。v11.5.0 源码的关键配置位(从官方仓库 v11.5.0 tag 实查):

文件作用
src/core/config/Categories.json操作分类定义(本文第五章清单的数据源)
src/core/config/Operations.json全量操作的注册与默认参数
src/core/config/OperationConfig.json操作 UI 参数元数据
src/core/config/Categories.json 中的 Favourites默认收藏分类(空)

构建与开发命令(v11.5.0 package.json scripts 实查):

命令实际执行用途
npm startnpx grunt dev开发服务器(热更新调试)
npm run buildnpx grunt prod生产构建(产出与官方 Releases 同构的静态发布包)
npm run nodenpx grunt node构建 Node.js 形态产物
npm run replnode --no-warnings src/node/repl.mjs交互式 REPL(见第八章)
npm testgrunt configTests + tests/node + tests/operations配置与操作全量测试

典型定制流程:fork 仓库 → 改 Categories.json(删减分类/操作)或 Operations.json(改默认参数)→ npm install && npm run build → 用产物替换自托管目录。注意两点:其一,官方产物中 assets/main.js 等文件名带内容指纹,替换后需同步替换整个目录而非单个文件;其二,GPL-3.0-or-later 许可要求二次分发时提供源码,内网使用不分发不受影响。

⚠️ 注意:环境变量方面,CyberChef 的 Web 形态没有运行时环境变量注入机制(纯静态无进程);Node.js 形态下数据经 stdin/参数传入,行为由代码控制。所谓「环境变量定制」在这两个形态都不存在,需走构建期路径。

八、程序化调用与 REPL(Node.js 形态)

官方 npm 包 cyberchef 把全部操作开放给 Node.js,用于脚本化批处理。安装与首个调用(实测环境 Node v22.23.4):

mkdir -p /opt/cyberchef-node && cd /opt/cyberchef-node
npm init -y
npm install cyberchef@11.5.0        # registry 不可达时:npm config set proxy/https-proxy

单次烘焙:

node -e '
const { bake } = require("cyberchef");
bake("Hello CyberChef", [{ op: "To Base64", args: ["A-Za-z0-9+/="] }])
  .then(d => console.log(d.toString()));'

实测回显:

SGVsbG8gQ3liZXJDaGVm

交互式 REPL(官方 package.json 提供 npm run repl,在源码仓库内使用)加载全部操作到全局,命令行交互逐条试操作,适合把 Web 界面的探索迁移到终端。更多 Recipe 链路的 Node 实测(压缩令牌还原、日志提取、哈希计算等)见《CyberChef 实战用法详解(Recipe 体系核心篇)》。

九、常见问题(FAQ)

Q1:为什么找不到 cyberchef.conf 之类的配置文件? CyberChef 是纯静态应用,无服务进程,不存在服务端配置文件。配置分三层(见第三章总览):Web 服务器层、浏览器 localStorage、构建期 src/core/config。

Q2:界面改了偏好,换台电脑就没了? 浏览器端配置存 localStorage,不跟随账号(本来也没有账号)。统一团队偏好需走构建期定制(第七章)。

Q3:某个操作执行报「模块加载失败」? 发布包必须整体解压使用:操作实现按领域打包在 modules/ 目录,按需加载;缺文件即对应分类操作全部不可用。逐文件核对解压结果(对照发布包清单)后重试。

Q4:升级 v11.x 后浏览器行为异常(操作列表为空等)? 浏览器缓存了旧版 main.js。静态资源文件名带内容指纹,正常升级不会撞缓存;若经反向代理改写过资源路径需检查缓存策略,或在浏览器强制刷新(Ctrl+F5)验证。

Q5:可以删掉用不到的 modules/ 文件减体积吗? 技术上可行(对应分类操作将不可用),但没有官方支持路径;需要正式裁剪请走源码构建定制,保证产物一致性与可维护性。

Q6:Magic 没识别出来怎么办? Magic 依赖特征强度:纯文本、无编码特征的输入识别不到属正常。可尝试加大 depth(多层嵌套如 Base64(Gzip(JSON)) 建议 depth ≥ 4)、开启 extensive language support 参数,或人工按「文件头 → 熵值 → 试解」排查(配合 Entropy、Detect File Type 操作)。

十、参考链接