
CyberChef v11.3.0
网络瑞士军刀 - 用于加密、编码、压缩和数据分析的网络应用
CyberChef
网络瑞士军刀
CyberChef 是一款简单直观的 Web 应用,用于在浏览器中执行各种“网络(cyber)”操作。这些操作包括 XOR 和 Base64 等简单编码,AES、DES 和 Blowfish 等更复杂的加密,生成二进制和十六进制转储,数据压缩与解压缩,计算哈希和校验和,解析 IPv6 和 X.509,更改字符编码,以及更多功能。
该工具旨在让技术型和非技术型分析人员都能以复杂的方式处理数据,而无需应付复杂的工具或算法。它由一位分析人员利用其 10% 的创新时间,历经数年构思、设计、构建并逐步改进而成。
目录
官方网站
CyberChef 的官方网站在这里 — 尽情使用吧!
本地运行
你可以通过 Docker(无需工具链)运行 CyberChef,或使用 Node.js 从源码构建。
使用 Docker
前置要求
- Docker
- Docker Desktop 必须在你的机器上打开并运行
选项 1:自行构建 Docker 镜像
- 构建 docker 镜像
docker build --tag cyberchef --ulimit nofile=10000 .
- 运行 docker 容器
docker run -it -p 8080:8080 cyberchef
- 在浏览器中导航到
http://localhost:8080
选项 2:使用预构建的 Docker 镜像
如果你希望跳过构建过程,可以使用预构建镜像
docker run -it -p 8080:8080 ghcr.io/gchq/cyberchef:latest
与之前一样,在浏览器中导航到 http://localhost:8080。
此镜像通过我们的 GitHub Workflows 构建并发布。
从源码构建
如果你想开发 CyberChef 或在没有 Docker 的情况下运行它,可以直接使用 Node.js 构建。
前置要求
- Node.js
v24(参见 Node.js 支持)
[!NOTE]
设置
git clone https://github.com/gchq/CyberChef.git
cd CyberChef
npm install
常见任务
| 命令 | 说明 |
|---|---|
npm start | 在 http://localhost:8080 启动带有实时重载的开发服务器。 |
npm run build | 在 build/prod 目录中生成生产构建。 |
npm test | 运行 Node.js 和操作测试套件。 |
npm run testui | 运行浏览器(UI)测试。 |
npm run lint | 根据 lint 规则检查代码。 |
npm run newop | 通过交互式快速启动脚本生成一个新操作。 |
如果在构建大型配方时遇到内存不足错误,请使用 npm run setheapsize 增加 Node 的堆大小。
工作原理
CyberChef 中有四个主要区域:
- 右上角的输入框,你可以在其中粘贴、输入或拖入要操作的文本或文件。
- 右下角的输出框,用于显示处理结果。
- 最左侧的操作列表,你可以通过分类列表或搜索找到 CyberChef 能执行的所有操作。
- 中间的**配方(recipe)**区域,你可以拖入要使用的操作并指定参数和选项。
你可以以简单或复杂的方式使用任意数量的操作。下面是一些示例:
- 解码 Base64 编码的字符串
- 将日期和时间转换到其他时区
- 解析 Teredo IPv6 地址
- 从十六进制转储转换数据,然后解压缩
- 解密并反汇编 shellcode
- 将多个时间戳显示为完整日期
- 对不同类型的数据执行不同的操作
- 将输入的部分内容用作操作的参数
- 执行 AES 解密,从密文流开头提取 IV
- 一种更简单的执行相同 AES 解密的方法
- 自动神奇地检测多层嵌套编码
特性
- 拖放
- 操作可以拖入和拖出配方列表,也可以重新排列。
- 最大 2GB 的文件可以拖到输入框上,直接加载到浏览器中。
- 自动烘焙(Auto Bake)
- 每当你修改输入或配方时,CyberChef 都会自动为你“烘焙”并立即生成输出。
- 如果它影响性能(例如输入非常大),可以将其关闭并手动操作。
- 自动编码检测
- CyberChef 使用 多种技术 尝试自动检测你的数据使用了哪种编码。如果它找到能解读你数据的合适操作,就会在输出字段中显示 'magic' 图标,点击即可解码数据。
- 断点
- 你可以在配方的任何操作上设置断点,以便在运行前暂停执行。
- 你还可以一次一个操作地逐步执行配方,查看每个阶段的数据。
- 保存和加载配方
- 如果你制作了一个很棒的配方,并且知道自己以后还会用到,只需点击 “Save recipe” 并添加到本地存储。下次访问 CyberChef 时,它会在那里等着你。
- 你也可以复制包含配方和输入的 URL,轻松与他人分享。
- 搜索
- 如果你知道所需操作的名称或与之相关的词语,只需在搜索字段中输入,匹配的操作就会立即显示。
- 高亮
- 当你在输入或输出中高亮文本时,将显示偏移量和长度值;如果可能,对应的数据将分别在输出或输入中高亮(示例:在输入中高亮 'question' 一词,查看它出现在输出的哪个位置)。
- 保存到文件并从文件加载
- 你可以随时将输出保存到文件,或将文件拖放到输入字段来加载文件。支持最大约 2GB 的文件(取决于你的浏览器),但某些操作处理这么多数据可能需要很长时间。
- CyberChef 完全在客户端运行
- 需要注意的是,你的配方配置和输入(无论是文本还是文件)都不会发送到 CyberChef 的 Web 服务器——所有处理都在你自己的计算机上的浏览器内完成。
- 由于这一特性,CyberChef 可以下载并在本地运行。你可以使用应用左上角的链接下载 CyberChef 的完整副本,放入虚拟机、与他人分享,或在封闭网络中托管。
深度链接
通过操作 CyberChef 的 URL 哈希值,你可以更改页面打开时的初始设置。
格式为 https://gchq.github.io/CyberChef/#recipe=Operation()&input=...
支持的参数有 recipe、input(以 Base64 编码)和 theme。
浏览器支持
CyberChef 旨在支持
- Google Chrome 50+
- Mozilla Firefox 38+
Node.js 支持
CyberChef 旨在完全支持 Node.js v24,并且还在 Node.js v26 成为活动 LTS 版本之前对其进行了测试。更多信息,请参见 “Node API” wiki 页面
安全性
请参阅 CyberChef 安全策略。
贡献
为 CyberChef 贡献一个新操作非常简单!快速启动脚本将引导你完成整个过程。如果你能编写基本的 JavaScript,你就能编写一个 CyberChef 操作。
安装演练、如何添加新操作和主题的指南、仓库结构描述、可用数据类型和编码规范,都可以在 “Contributing” wiki 页面 中找到。
- 将你的更改推送到你的 fork。
- 提交 pull request。如果你是第一次这样做,系统会提示你通过 pull request 上的 CLA assistant 签署 GCHQ 贡献者许可协议。它还会询问你是否愿意让 GCHQ 联系你,以感谢你的贡献,或向你提供 GCHQ 的工作机会。
许可
CyberChef 以 Apache 2.0 许可证 发布,并受 英国皇家版权 保护。