どの Web ツールを使えばよいか
| 手元にあるもの | 見た目 | ツール |
|---|---|---|
| JSON Web Token | eyJhbGci….eyJzdWIi….sig | JWT デコーダー、JWT エンコーダー |
| Authorization ヘッダー | Basic dXNlcjpwYXNz | Basic 認証デコーダー、Basic 認証ヘッダー |
- と _ を含み = のない Base64 | SGVsbG8_d29ybGQ | Base64URL デコーダー、Base64URL エンコーダー |
| 2 つのアルファベット間の変換 | Base64 を Base64URL に、Base64URL を Base64 に | |
| data URI | data:image/png;base64,… | Data URI パーサー、Data URI 生成ツール |
| SAML メッセージ | SAMLResponse=PHNhbWxwOl… | SAML デコーダー |
| Kubernetes Secret | YAML 内の data: の値 | Kubernetes Secret デコーダー |
| イメージプルシークレット | eyJhdXRocyI6… | .dockerconfigjson デコーダー |
| 圧縮された Base64 | H4sI… または eJ… | gzip Base64 デコーダー。作成は gzip、zlib |
| エンコードされたフィールドを含む JSON 文書 | "body": "eyJ…" | JSON 内の Base64 |
| エンコードされた PowerShell コマンド | powershell -enc JABzAD0A… | PowerShell -EncodedCommand |
| メールの生のソース | Content-Transfer-Encoding: base64 | メールデコーダー、Quoted-Printable |
| URL エンコードされたテキスト | q=caf%C3%A9%20menu | URL デコード、URL エンコード |
| HTML エスケープされたテキスト | <p>Café</p> | HTML エンティティ |
何重にも重なるレイヤー
Web のペイロードは何重にも包まれていることが多く、レイヤーごとに専用のツールが必要です。よくある組み合わせをいくつか挙げます。
- プルシークレット:Kubernetes の Base64 の中に Docker の JSON があり、その中に Base64 の
user:passwordがあります。.dockerconfigjson デコーダーは 3 つすべてを展開します。 - SAML Redirect:XML、raw deflate、Base64、URL エンコードの順です。SAML デコーダーはこの連鎖全体を逆にたどります。
- Helm のリリース:JSON、gzip、Base64、さらに Kubernetes の Base64 です。
- リダイレクト URL:クエリパラメータの中に URL エンコードされた URL があり、二重にエンコードされていることもあります。URL デコーダーの 繰り返しデコード オプションで対応できます。
- Flask のセッション Cookie:JSON を必要に応じて zlib で圧縮し(先頭の
.がその印です)、Base64URL にして、タイムスタンプと署名をドットでつないだものです。
デコードした結果がまだエンコードされているように見えたら、先頭の文字を上の表と照らし合わせ、対応するツールで続けてください。
エンコードは保護ではない
これらの形式はどれも何も隠しません。JWT のペイロード、Basic 認証ヘッダー、Kubernetes Secret、SAML アサーションは、目にした人なら誰でも読めます。セキュリティを加えるのは署名か本物の暗号化だけです。ここにあるデコーダーが役立つのはまさにそのためで、同じ理由から、こうした文字列はログ、スクリーンショット、チケットに残さないようにすべきです。詳しくは エンコードと暗号化の違い を参照してください。
証明書、SSH 鍵、ハッシュについては 鍵と証明書 を、普通の文字列と文字コードについては テキストツール を参照してください。
よくある質問
手元のエンコードされた文字列の種類を見分けるには?
形を見ます。eyJ で始まりドットで区切られた 3 つの部分なら JWT、% と16進数 2 桁なら URL エンコード、& なら HTML エスケープ、H4sI なら gzip、Base64 に - や _ があれば Base64URL です。このページの表には、ほかのパターンとそれぞれの行き先も載っています。
本番環境のトークンやシークレットに使っても安全ですか?
ツールはブラウザ内で動作し、ページの Content Security Policy が Cloudflare のページビュー計測を除くすべてのネットワーク通信をブロックするので、貼り付けたデータがどこかに送られることはありません。それでも有効なトークンは慎重に扱い、ほかの場所で露出したシークレットはローテーションしてください。
URL エンコードと Base64URL の違いは何ですか?
URL エンコードは個々の文字を %XX にエスケープし、残りは読める形のまま残します。Base64URL は任意のバイト列を英字、数字、-、_ に変換します。テキストの値には URL エンコードを、バイナリデータやトークンには Base64URL を使ってください。