
サイバー・スイスアーミーナイフ - 暗号化、エンコーディング、圧縮、データ解析のためのウェブアプリ
CyberChefは、ウェブブラウザ内であらゆる種類の「サイバー」オペレーションを実行するための、シンプルで直感的なウェブアプリです。これらのオペレーションには、XORやBase64などの単純なエンコーディング、AES、DES、Blowfishなどのより複雑な暗号化、バイナリやhexdumpの作成、データの圧縮と解凍、ハッシュとチェックサムの計算、IPv6およびX.509の解析、文字エンコーディングの変更などが含まれ、その他にも多数あります。
このツールは、技術者・非技術者を問わずアナリストが複雑なツールやアルゴリズムを扱うことなく、複雑な方法でデータを操作できるように設計されています。数年にわたり、アナリストが自身の10%のイノベーションタイムを使って考案、設計、構築し、段階的に改良してきました。
CyberChefの公式ウェブサイトはこちら - お楽しみください!
CyberChefはDocker(ツールチェーン不要)で実行するか、Node.jsでソースからビルドすることができます。
前提条件
docker build --tag cyberchef --ulimit nofile=10000 .
docker run -it -p 8080:8080 cyberchef
http://localhost:8080 にアクセスしますビルドプロセスを省略したい場合は、事前にビルドされたイメージを使用できます
docker run -it -p 8080:8080 ghcr.io/gchq/cyberchef:latest
前と同様に、ブラウザで http://localhost:8080 にアクセスしてください。
このイメージは、当社のGitHub Workflowsを通じてビルド・公開されています。
CyberChefを開発したい場合やDockerなしで実行したい場合は、Node.jsで直接ビルドできます。
前提条件
v24(Node.jsのサポートを参照)[!NOTE]
nvmを使用してNode.jsのバージョンを管理し、このプロジェクトの現在の開発バージョンを使うことで、マシン上の他のプロジェクトとの競合を回避できます。
セットアップ
git clone https://github.com/gchq/CyberChef.git
cd CyberChef
npm install
一般的なタスク
大きなレシピをビルドする際にメモリ不足エラーが発生した場合は、npm run setheapsize でNodeのヒープサイズを増やしてください。
CyberChefには主に4つのエリアがあります:
オペレーションは、シンプルにも複雑にも、好きなだけ自由に組み合わせて使用できます。いくつかの例は以下のとおりです:
CyberChefのURLハッシュを操作することで、ページが開くときの初期設定を変更できます。
形式は https://gchq.github.io/CyberChef/#recipe=Operation()&input=... です。
サポートされている引数は、recipe、input(Base64でエンコード)、theme です。
CyberChefは以下をサポートするように構築されています。
CyberChefはNode.js v24を完全にサポートするように構築されており、アクティブなLTSリリースとなる前にNode.js v26でもテストされています。詳細については、"Node API" wikiページを参照してください。
CyberChefセキュリティポリシーを参照してください。
CyberChefへの新しいオペレーションのコントリビュートはとても簡単です!クイックスタートスクリプトが手順を案内してくれます。基本的なJavaScriptが書けるなら、CyberChefオペレーションを書くことができます。
インストールのチュートリアル、新しいオペレーションやテーマの追加方法、リポジトリ構造の説明、利用可能なデータ型、コーディング規約はすべて、"Contributing" wikiページに記載されています。
CyberChefはApache 2.0ライセンスの下で公開されており、Crown Copyrightの対象です。
| コマンド | 説明 |
|---|
npm start | http://localhost:8080 でライブリロード対応の開発サーバーを実行します。 |
npm run build | build/prod ディレクトリに本番ビルドを生成します。 |
npm test | Node.jsおよびオペレーションのテストスイートを実行します。 |
npm run testui | ブラウザ(UI)テストを実行します。 |
npm run lint | コードをリンティングルールに照らしてチェックします。 |
npm run newop | インタラクティブなクイックスタートスクリプトで新しいオペレーションの雛形を作成します。 |