CyberChef
网络瑞士军刀
CyberChef 是一款简洁直观的 Web 应用,可在 Web 浏览器中执行各种“网络”操作。这些操作包括简单的编码(例如 XOR 和 Base64)、更复杂的加密(例如 AES、DES 和 Blowfish)、创建二进制和十六进制转储、数据压缩和解压缩、计算哈希值和校验和、IPv6 和 X.509 解析、更改字符编码等等。
该工具旨在使技术和非技术分析师都能以复杂的方式操作数据,而无需处理复杂的工具或算法。它是由一位分析师在数年时间里,利用 10% 的创新时间构思、设计、构建和逐步改进的。
现场演示
CyberChef 仍在积极开发中。因此,它不应被视为成品。仍有测试和错误修复工作要做,需要添加新功能,还需要编写其他文档。请贡献力量!
在任何情况下,都不应依赖 CyberChef 中的加密操作来提供安全性。我们不保证其正确性。
使用 Docker 在本地运行
先决条件
- Docker
- Docker Desktop 必须在您的计算机上打开并运行
选项 1:自行构建 Docker 镜像
- 构建 Docker 镜像
docker build --tag cyberchef --ulimit nofile=10000 .
- 运行 docker 容器
docker run -it -p 8080:80 cyberchef
- 在浏览器中访问
http://localhost:8080
选项 2:使用预构建的 Docker 镜像
如果您不想执行构建过程,可以使用预构建的镜像
docker run -it -p 8080:80 ghcr.io/gchq/cyberchef:latest
和之前一样,在浏览器中访问 http://localhost:8080
。
此镜像是通过我们的 GitHub Workflows 构建和发布的。
工作原理
CyberChef 主要分为四个区域:
- 右上角的输入框,您可以在其中粘贴、输入或拖动要操作的文本或文件。
- 右下角的输出框,您的处理结果将显示在此处。
- 最左侧的操作列表,您可以在其中通过分类列表或搜索找到 CyberChef 支持的所有操作。
- 中间的配方区域,您可以在其中拖动要使用的操作并指定参数和选项。
您可以根据需要使用任意数量的操作,并设置简单或复杂的操作方式。以下是一些示例:
- 解码 Base64 编码的字符串
- 将日期和时间转换为不同的时区
- 解析 Teredo IPv6 地址
- 转换十六进制转储数据,然后解压缩
- 解密并反汇编 Shellcode
- 将多个时间戳显示为完整日期
- 对不同类型的数据执行不同的操作
- 将输入的部分内容用作操作的参数
- 执行 AES 解密,从密码流的开头提取初始向量
- 自动检测多层嵌套编码
功能
- 拖放
- 操作可拖入或拖出配方列表,或重新组织操作。
- 可将最大 2GB 的文件拖到输入框上,直接加载到浏览器中。
- 自动烘焙
- 每当您修改输入或配方时,CyberChef 都会自动为您“烘焙”并立即生成输出。
- 如果此功能影响性能(例如,当输入数据非常大时),您可以关闭此功能并手动操作。
- 自动编码检测
- CyberChef 使用多种技术尝试自动检测数据所采用的编码。如果它找到适合您数据的操作,它会在“输出”字段中显示“magic”图标,您可以点击该图标来解码数据。
- 断点
- 您可以在配方中的任何操作上设置断点,以便在运行之前暂停执行。
- 您还可以逐个操作地执行配方,查看每个阶段的数据。
- 保存和加载配方
- 如果您想出了一个很棒的配方,并且知道您会想再次使用,只需点击“保存配方”并将其添加到本地存储即可。下次您访问 CyberChef 时,它就会等着您。
- 您还可以复制包含配方和输入的 URL,以便轻松与他人分享。
- 搜索
- 如果您知道所需操作的名称或与其相关的单词,请在搜索栏中输入该名称,任何匹配的操作都会立即显示出来。
- 突出显示
- 当您突出显示输入或输出中的文本时,将显示偏移量和长度值,并且如果可能,相应的数据也会分别在输出或输入中突出显示(例如:[突出显示输入中的单词“question”以查看它在输出中出现的位置][11])。
- 保存到文件并从文件加载
- 您可以随时将输出保存到文件,或通过拖放文件到输入字段来加载文件。支持最大约 2GB 的文件(取决于您的浏览器),但是,某些操作可能需要很长时间才能处理如此大的数据量。
- CyberChef 完全是客户端应用程序。
- 需要注意的是,您的任何食谱配置或输入(无论是文本还是文件)都不会发送到 CyberChef 网络服务器 - 所有处理都在您的计算机上的浏览器中进行。
- 由于此功能,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 v16
。更多信息,请参阅 “Node API” wiki 页面
贡献
向 CyberChef 贡献新操作非常简单!快速入门脚本将引导您完成整个过程。如果您会编写基本的 JavaScript,就能编写 CyberChef 操作。
您可以在 “贡献”wiki 页面 中找到安装指南、添加新操作和主题的操作指南、代码库结构描述、可用数据类型和编码规范。
- 将更改推送到您的 fork 分支。
- 提交拉取请求。如果您是首次执行此操作,系统将提示您通过拉取请求中的 CLA 助手签署 GCHQ 贡献者许可协议。这还会询问您是否愿意让 GCHQ 与您联系,以感谢您的贡献,或提供 GCHQ 的工作机会。
许可
CyberChef 采用 Apache 2.0 许可证 发布,并受 英国皇家版权 保护。