
CyberChef v11.4.0
サイバー・スイスアーミーナイフ - 暗号化、エンコーディング、圧縮、データ解析のためのウェブアプリ
CyberChef
サイバー版スイスアーミーナイフ
CyberChefは、ウェブブラウザ内であらゆる種類の「サイバー」オペレーションを実行するための、シンプルで直感的なウェブアプリです。これらのオペレーションには、XORやBase64などの単純なエンコーディング、AES、DES、Blowfishなどのより複雑な暗号化、バイナリやhexdumpの作成、データの圧縮と解凍、ハッシュとチェックサムの計算、IPv6およびX.509の解析、文字エンコーディングの変更などが含まれ、その他にも多数あります。
このツールは、技術者・非技術者を問わずアナリストが複雑なツールやアルゴリズムを扱うことなく、複雑な方法でデータを操作できるように設計されています。数年にわたり、アナリストが自身の10%のイノベーションタイムを使って考案、設計、構築し、段階的に改良してきました。
Contents
- Official website
- Running Locally
- How it works
- Features
- Deep linking
- Browser support
- Node.js support
- Security
- Contributing
- Licencing
Official website
CyberChefの公式ウェブサイトはこちら - お楽しみください!
Running Locally
CyberChefはDocker(ツールチェーン不要)で実行するか、Node.jsでソースからビルドすることができます。
With 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を通じてビルド・公開されています。
From source
CyberChefを開発したい場合やDockerなしで実行したい場合は、Node.jsで直接ビルドできます。
前提条件
- Node.js
v24(Node.jsのサポートを参照)
[!NOTE]
nvmを使用してNode.jsのバージョンを管理し、このプロジェクトの現在の開発バージョンを使うことで、マシン上の他のプロジェクトとの競合を回避できます。
セットアップ
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 | コードをリンティングルールに照らしてチェックします。 |
npm run newop | インタラクティブなクイックスタートスクリプトで新しいオペレーションの雛形を作成します。 |
大きなレシピをビルドする際にメモリ不足エラーが発生した場合は、npm run setheapsize でNodeのヒープサイズを増やしてください。
How it works
CyberChefには主に4つのエリアがあります:
- 右上にある入力ボックス。操作したいテキストやファイルを貼り付け、入力、またはドラッグできます。
- 右下にある出力ボックス。処理結果が表示されます。
- 左端にあるオペレーションリスト。CyberChefが対応するすべてのオペレーションをカテゴリ別リストまたは検索で見つけられます。
- 中央にあるレシピエリア。使用したいオペレーションをドラッグし、引数やオプションを指定できます。
オペレーションは、シンプルにも複雑にも、好きなだけ自由に組み合わせて使用できます。いくつかの例は以下のとおりです:
- Base64エンコードされた文字列をデコードする
- 日付と時刻を別のタイムゾーンに変換する
- Teredo IPv6アドレスを解析する
- hexdumpからデータを変換し、その後解凍する
- シェルコードを復号して逆アセンブルする
- 複数のタイムスタンプを完全な日付として表示する
- 異なるタイプのデータに対して異なるオペレーションを実行する
- 入力の一部をオペレーションの引数として使用する
- 暗号ストリームの先頭からIVを抽出してAES復号を実行する
- 同じAES復号を実行するより簡単な方法
- ネストされた複数層のエンコーディングを自動的に検出する
Features
- ドラッグ&ドロップ
- オペレーションはレシピリストにドラッグイン/ドラッグアウトしたり、並べ替えたりできます。
- 最大2GBのファイルを入力ボックスにドラッグして、ブラウザに直接読み込むことができます。
- オートベイク
- 入力またはレシピを変更するたびに、CyberChefが自動的に「ベイク」して、すぐに出力を生成します。
- パフォーマンスに影響がある場合(入力が非常に大きい場合など)は、これをオフにして手動で操作できます。
- 自動エンコーディング検出
- CyberChefはさまざまな手法を使用して、データがどのエンコーディングであるかを自動的に検出しようとします。データを理解できる適切なオペレーションが見つかった場合、出力フィールドに「magic」アイコンが表示され、クリックするとデータをデコードできます。
- ブレークポイント
- レシピ内の任意のオペレーションにブレークポイントを設定して、実行前に一時停止できます。
- レシピをオペレーションごとにステップ実行して、各段階のデータの状態を確認することもできます。
- レシピの保存と読み込み
- また使いたいと思う素晴らしいレシピを作成したら、「Save recipe」をクリックしてローカルストレージに追加するだけです。次回CyberChefにアクセスしたときに保存されています。
- レシピと入力を含むURLをコピーして、他の人と簡単に共有することもできます。
- 検索
- 使用したいオペレーションの名前や関連する単語を知っている場合は、検索フィールドに入力し始めると、一致するオペレーションがすぐに表示されます。
- ハイライト表示
- 入力または出力でテキストをハイライトすると、オフセットと長さの値が表示され、可能であれば対応するデータがそれぞれ出力または入力でハイライトされます(例:入力で「question」という単語をハイライトすると、出力のどこに表示されるかを確認できます)。
- ファイルへの保存とファイルからの読み込み
- いつでも出力をファイルに保存したり、ファイルを入力フィールドにドラッグ&ドロップして読み込んだりできます。ブラウザにもよりますが最大約2GBのファイルがサポートされています。ただし、この量のデータに対して一部のオペレーションは非常に長い時間がかかる場合があります。
- CyberChefは完全にクライアントサイドで動作
- レシピ設定や入力(テキスト・ファイルのいずれも)がCyberChefのウェブサーバーに送信されることは一切ありません。すべての処理はお使いのブラウザ内、つまり自分のコンピューター上で実行されます。
- この機能により、CyberChefはダウンロードしてローカルで実行できます。アプリの左上隅にあるリンクを使用してCyberChefの完全なコピーをダウンロードし、仮想マシンに入れたり、他の人と共有したり、閉じたネットワークでホストしたりできます。
Deep linking
CyberChefのURLハッシュを操作することで、ページが開くときの初期設定を変更できます。
形式は https://gchq.github.io/CyberChef/#recipe=Operation()&input=... です。
サポートされている引数は、recipe、input(Base64でエンコード)、theme です。
Browser support
CyberChefは以下をサポートするように構築されています。
- Google Chrome 50+
- Mozilla Firefox 38+
Node.js support
CyberChefはNode.js v24を完全にサポートするように構築されており、アクティブなLTSリリースとなる前にNode.js v26でもテストされています。詳細については、"Node API" wikiページを参照してください。
Security
CyberChefセキュリティポリシーを参照してください。
Contributing
CyberChefへの新しいオペレーションのコントリビュートはとても簡単です!クイックスタートスクリプトが手順を案内してくれます。基本的なJavaScriptが書けるなら、CyberChefオペレーションを書くことができます。
インストールのチュートリアル、新しいオペレーションやテーマの追加方法、リポジトリ構造の説明、利用可能なデータ型、コーディング規約はすべて、"Contributing" wikiページに記載されています。
- 変更を自分のフォークにプッシュします。
- プルリクエストを提出します。初めての場合は、プルリクエスト上のCLAアシスタントを通じてGCHQコントリビューターライセンス契約への署名を求められます。また、コントリビューションへの感謝の印としてGCHQが連絡することや、GCHQでの就職機会について連絡してもよいかも尋ねられます。
Licencing
CyberChefはApache 2.0ライセンスの下で公開されており、Crown Copyrightの対象です。