编码。解码。识别。 面向任意数据的智能解码。
预发布阶段,且已可使用。 工作台可运行,检测引擎可逐层拆解分层载荷,分析报告已完整。
仍待完成:无障碍审计和国际化处理。反汇编器和 OCR 引擎被有意排除在范围之外——它们是独立项目,而非操作。
此类工具的常见模型假定你已经知道自己的数据是什么:你挑选操作、串联操作、反复迭代。当你一眼就能认出格式时这没问题,但当你认不出时就毫无用处——而分析师面对新事物时,大多数情况正是如此。
DecodeBox 从另一端出发。你粘贴数据,它推断出自己手中拿的是什么:每一层都被拆解,每一个指标都被提取,每一项安全发现都被解释,且每项结论的证据都可见,而非仅凭断言。
一切都在你的浏览器中运行。任何输入、配方和文件都不会离开你的机器——根本没有可发送到的服务器。
来自测试套件的一个真实载荷:Base64 套 Base64 套 gzip 套 JSON,其中一个字段内含 PowerShell 加载器。
Findings 4 Indicators 7 Layers 8 257 ms
CRITICAL Cloud or service credential CWE-798
Input → Base64 → Base64 → gzip
AKIAIOSFODNN7EXAMPLE
CRITICAL PowerShell download-and-execute CWE-94
Input → Base64 → Base64 → gzip → JSON → Base64 → UTF-16LE
IEX (New-Object Net.WebClient).DownloadString
第二个发现位于向下六层,而最后一跳来自某个 JSON 字段内的一个 Base64 数据块。任何对原始数据块进行 grep 的方法都看不到它,任何只解开单一线性链条的方法也无法到达它。
Base64 → Base64 → MD5)、遇到无法解码的剩余部分(如 JWT 签名),或诚实承认已触及限制且下面可能还有更多内容。当没有任何已声明的解释能说明输入时,DecodeBox 会尝试每一个单字节 XOR 密钥和每一种旋转,并对每个结果的可读性评分——其置信度会明确表明这是一次搜索而非一次匹配。
DecodeBox 按设计处理不可信的、故意畸形的输入。
connect-src 'none' 和 script-src 'self',外加针对唯一内联脚本的哈希。字体是打包的而非远程获取的,如果输出中一旦出现 CDN 引用,构建就会失败。eval、new Function 以及任何将输入渲染为 HTML 的路径都被 lint 规则禁止,而非靠约定。style-src 确实允许 'unsafe-inline',因为 React 会写入内联 style 属性;而真正风险所在的 script-src 则保持严格。要报告漏洞,请参阅 SECURITY.md——请不要为安全报告开启公开 issue。
DecodeBox/
├── .github/workflows/ # CI, CodeQL, SBOM, markdown quality, Pages deployment
├── public/ # Bundled fonts, favicon, CNAME
├── src/
│ ├── engine/ # The analysis engine — the only half that knows about data
│ │ ├── index.ts # THE SEAM — the only module the interface imports from
│ │ ├── operations/ # One self-contained module per transformation
│ │ ├── detection/ # Entropy, charset, magic bytes, structural validity
│ │ ├── analysis/ # Recursive exploration, indicators, security findings
│ │ ├── ctf/ # Flag search, cipher key recovery, ranked hints
│ │ ├── core/ # Recipe executor, byte handling, ciphers, codecs
│ │ └── worker/ # The engine off the main thread, past a size threshold
│ ├── components/ # The interface: workspace, report, CTF mode
│ ├── store/ # One zustand store
│ ├── hooks/ # Interaction logic shared across components
│ ├── lib/ # Share links, saved recipes, recipe text format
│ ├── i18n/ # Every user-facing string
│ └── styles/ # Design tokens and themes
├── SECURITY.md
└── LICENSE
界面通过一个窄门面访问引擎,该门面暴露七个函数——
listOperations、bake、detect、autoDecode、identify、analyse 和 hints。两半
可以独立开发、测试和替换;工作区曾从零重建
而引擎一行未改。添加一个操作绝不应需要改动 UI。
需要 Node.js 22.12 或更高版本。CI 在 22 和 24 上构建;.nvmrc 将开发环境固定为 22。
npm install
npm run dev # development server
npm run test # 1,109 tests
npm run build # static site in dist/
构建输出完全静态——没有运行时、没有服务器、没有环境变量。任何静态托管服务都能提供它。
运行中的应用程序头部有一个 Download DecodeBox 按钮。它会给你 decodebox.html:整个东西都在一个 1.2 MB 的文件里——界面、全部 504 个操作、字体、样式。双击它就能运行。没有服务器、没有 npm、没有网络、无需安装任何东西,这正是气隙机器上的关键所在——在那样的机器上,引入一套构建工具链比引入一个文件要难得多。
npm run build 会将它连同站点一起生成,因此任何部署都会提供它:
dist/index.html the site
dist/decodebox.html the same build, in one file
它必须是一个文件而不是一个文件夹。浏览器拒绝从 file:// URL 加载 ES 模块——该来源是不透明的,因此请求无法通过其 CORS 检查——这意味着从磁盘打开的普通 dist/ 文件夹会显示为空白。将所有内容内联后就不会有请求失败。唯一放弃的是 Web Worker,它按定义需要第二个文件,因此独立构建在处理超大输入时仍运行在主线程上,除此之外完全相同。
该网站已上线,因此你现在能做的最有价值的事情就是使用它并尝试破坏它。欢迎贡献,尤其是在以下方面:
请从 OWASP 贡献指南 开始。所有参与者都应遵守 OWASP 行为准则。
根据 Apache License 2.0 授权。这是一个 OWASP Foundation 孵化器项目,归类为工具。