暗号識別子
CTF の問題やログファイル、古い文書で見つけた怪しい文字列が、Base64 なのか、16進数なのか、2進数なのか、モールス信号なのか、それとも別の何かなのか分からない。そんなときはテキストを貼り付けてください。識別ツールが文字セットと構造をチェックし、可能性の高いエンコーディングと暗号をランク付けします。専用のデコーダーに進む前の最初の一歩に最適です。
暗号識別子の仕組み
-
1
暗号文を貼り付けます
任意の長さ。非常に短い文字列 (< 20 文字) は弱い信号を与えます。テキストが長いほど、より強力な分類が可能になります。
-
2
文字セット分析
文字、数字、記号の分布によって候補が絞り込まれます (すべて 16 進数、すべて Base64 アルファベット、すべて大文字のラテン文字など)。
-
3
シグネチャ照合
b$) を既知のシグネチャと照合します。
-
4
ランク付けされた候補
一致した候補すべてを信頼度順に並べ、パーセンテージで表示するので、最初に試すデコーダーが分かります。
検出ヒューリスティック
| 手がかり | 可能性の高い暗号/エンコーディング |
|---|---|
A-Z a-z 0-9 + / = のみ、長さが 4 の倍数 |
Base64 |
0-9 a-f のみ、長さが偶数 |
16進数 (Hex) |
0-1 のみ、8 桁以上 |
2進数 |
| ドット、ダッシュ、スラッシュ、スペースのみ | モールス信号 |
| 大文字のラテン文字のみ、5 文字以上 | シーザー暗号または換字式暗号 |
| ラテン文字 20 文字以上、スペースなし | 単一換字式暗号 |
| 大文字と小文字の混在するラテン文字 | 平文の可能性が高い |
ドット区切りの 3 つのセグメント、eyJ で始まる |
JWT トークン |
$2a$、$2b$、$2y$ のいずれかで始まる |
bcrypt ハッシュ |
| ちょうど 32 文字の16進数 | MD5 ハッシュ |
| ちょうど 40 文字の16進数 | SHA-1 ハッシュ |
| ちょうど 64 文字の16進数 | SHA-256 ハッシュ |
文字種以外の手がかり
- Base64: 4 文字ごとのブロック、末尾に
=パディング、+と/を含む。 - シーザーまたは換字式: 大文字のラテン文字のみ、数字なし。頻度は平文と同じで、ずれているだけです。
- モールス: ドット、ダッシュ、スラッシュ、スペースのみ。
- JWT: ドット区切りの 3 つのセグメントで、通常は
eyJで始まります。 - ハッシュ (MD5/SHA): 固定長の16進数 (MD5 は 32 文字、SHA-1 は 40 文字、SHA-256 は 64 文字)。不可逆なので、識別ツールはこれを明示し、無駄に「デコード」を試さずに済むようにします。
- 2進数: 0 と 1 の長い並びで、8 桁ごとに区切られることが多い。
自動識別の限界
- 短い入力 (10 文字未満): どの候補も信頼度が低くなります。何である可能性もあります。
- ワンタイムパッドを使ったカスタム XOR: 鍵がなければランダムと区別できません。識別ツールは一致なしと表示します。
- 多重レイヤー: CTF の定番トリックは Base64 → 反転 → シーザー → 16進数。一度に 1 層ずつ剥がしましょう。
- 英語以外の原文言語: ラテン文字のチェックは引き続き有効ですが、「平文」はあくまで推測です。識別ツールは言語の検出は行いません。
信頼度スコア
各候補には、シグネチャの特異性に基づく固定の信頼度が付きます。80% 以上: 有力。50-80%: あり得る。50% 未満: 可能性は低め。複数が一致する場合は、入力が短いか、複数の暗号が組み合わされていることがほとんどです。
よくある質問
すべての暗号識別技術は統計的な規則性に依存しており、統計が信頼できるためには十分なデータが必要です。20 文字未満では多くの暗号が同じに見えますが、50 文字以上あれば確かなシグナルが得られます。
最も可能性の高い方式を示唆するだけです。デコードは専用のデコーダーツールで行います。一部のデコードには鍵の指定が必要です。
まず文字セット (どのような文字/記号が表示されるか) を確認し、次に長さと構造を確認します。それでも不明な場合は、一般的に疑わしいデコーダ (Base64、hex、Caesar) を 1 つずつ試してください。CTF では、周波数 + 推測により、通常は数回の試行以内に解読できます。
名前付きの一致としてはおそらく無理です。候補なし、または低い信頼度の推測を返します。上のヒューリスティック表と暗号文のアルファベットや構造を照らし合わせれば、単純な自作方式の逆解析ができます。
関連ツール
Atbash暗号エンコーダー
A-ZをZ-Aに対応させるヘブライ系の換字式暗号、Atbashでテキストをエンコードまたはデコードできます。同じ操作で暗号化と復号ができます。
AES暗号化 / 復号
OpenSSLのAES暗号方式で低リスクのテキストを暗号化・復号します。パスフレーズはSHA-256でハッシュされ、Base64出力はIVと暗号文です。
bcryptジェネレーター
平文パスワードからbcrypt hashを生成します。cost factorは4から13まで調整でき、Laravel、Django、Node、PHPと互換性があります。
Base64ファイルエンコーダー
あらゆるファイル(PDF、ZIP、画像、実行ファイル)をBase64テキストにエンコードし、JSON、メール、YAML、data URIへ埋め込めます。ブラウザ内でローカルに動作し、アップロードはありません。
Base32エンコーダー・デコーダー
RFC 4648アルファベットでBase32文字列をエンコード・デコードします。TOTPシークレット、大文字小文字を区別しないトークン、人が入力する識別子に便利です。
bcrypt Hashジェネレーター
bcrypt hashの生成、または平文パスワードと既存bcrypt hashの照合を行います。生成とverifyを1つのツールで並べて使えます。