エンコード。デコード。識別。 あらゆるデータのためのスマートデコーディング。
プレリリースですが、すでに実用可能です。 ワークベンチは動作し、検出エンジンは階層化された ペイロードを展開し、分析レポートも完成しています。
今後の予定: アクセシビリティ監査と国際化対応。ディスアセンブラと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
2つ目の検出事項は6層下にあり、最後のホップはあるJSONフィールド内のBase64ブロブから来ていました。元のブロブをgrepするものは何もそれを見ることができず、単一の線形チェーンを展開するものもそこには到達しません。
Base64 → Base64 → MD5)によって、JWT署名のようなデコードできない残り部分によって、または制限に達したためさらに下に何かがあるかもしれないという正直な申告によって終了します。宣言されたものが入力を説明しない場合、DecodeBoxはすべての単一バイトXORキーとすべてのローテーションを試し、各結果を可読性についてスコアリングします — それは一致ではなく探索であったことを明確に示す信頼度で。
DecodeBoxは設計上、信頼できない、意図的に不正な形式の入力を処理します。
connect-src 'none'とscript-src 'self'、および唯一のインラインスクリプト用のハッシュを含むContent Security Policyを同梱します。フォントはフェッチされるのではなくバンドルされ、出力に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
インターフェースは、7つの関数 — 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つの1.2 MBのファイルに収められています — インターフェース、504個の操作すべて、フォント、スタイル。ダブルクリックすれば動作します。サーバーもnpmもネットワークも不要で、インストールするものは何もありません。これは、ビルドツールチェーンを持ち込む方が1つのファイルを持ち込むより難しいエアギャップ環境のマシンでは重要な点です。
npm run build はサイトと一緒にこれを生成するので、どのデプロイでも配信されます:
dist/index.html the site
dist/decodebox.html the same build, in one file
フォルダではなく単一ファイルである必要があります。ブラウザは file:// URL からの ES モジュールの読み込みを拒否します。オリジンが不透明であるためリクエストが CORS チェックに失敗し、つまりディスクから開いた通常の dist/ フォルダは真っ白な画面になります。すべてをインライン化すれば、失敗するリクエスト自体が残りません。唯一諦めるのは Web Worker で、これは定義上2つ目のファイルを必要とするため、スタンドアロンビルドは非常に大きな入力に対してメインスレッド上で動作し、それ以外は同一です。
サイトは公開中なので、今すぐできる最も価値のあることは実際に使って壊してみることです。コントリビュートを歓迎します。特に以下の分野でお待ちしています:
まずは OWASP コントリビュートガイドラインをご覧ください。 すべての参加者は OWASP 行動規範に従うことが求められます。
Apache License 2.0 の下でライセンスされています。OWASP Foundation Incubator プロジェクトであり、Tool として分類されています。