エンコード連鎖デコーダー
複数のエンコーダーを通ったテキストは特殊なケースではなく日常です:Base64 トークンの中の JSON ボディ、ログ行の中の URL、ヘッダーに乗せられるよう percent エスケープ後に Base64 化されたフォーム値。このページはそれらの層を 1 枚ずつほどき、各段階で使った方式に名前を付け、確信度とその理由を表示し、さらにその段階で
拒否した 方式も一覧するため、あなたはページに反論できます。
テキストがエンコードされているように見えなくなったとき、歩数上限に達したとき、次の歩がすでに見たテキストを戻してくるときに停止します。何も黙って推測しません:アルファベットが普通の単語と重なる方式は自力では適用されず、提示されるだけです。
すべての処理はブラウザー内でローカルに行われます — データがサーバーへアップロードされることはありません。
初めてですか? エンコード連鎖を平易な言葉で解説 — 層とは何か、なぜエンコードは暗号化ではないのか、なぜ歩順が重要なのか。
自動でほどく
手動で 1 ステップずつ進める
信頼度がこの値以上のときだけ、その層を自力で適用します:
0.85 — 慎重(明確なシグネチャーを持つ方式のみ)
0.70 — 標準(推奨)
0.20 — 攻撃的(普通の単語と重なる Base58、Base62、basE91 を加えます)
ここで停止:
1 層
2 層
3 層
4 層
5 層
6 層
7 層
8 層
例の連鎖を読み込む
セルフテスト
連鎖全体をほどく
もう 1 層
最初から
上の層数上限を一気に実行します。どちらでも同じテーブルが構築されるため、いつでも手動ステップ送りに切り替えられます。
次の層を適用
最後の層を取り消す
最初から
または方式を手動で選ぶ:
適用する
このリストはページが今のテキストに見ているものです。回転暗号はまったく検出できないため常に含まれます。また、折り返しテキストから空白を取り除いて初めて認識できるものも含まれ、その場合にはその旨の印が付き、自力では決して適用されません。
この入力は、このページが確認なしで実行したくない長さを超えており、上の推定では かかる可能性があります。それでも進むならもう一度 連鎖全体をほどく をクリックするか、先にテキストを短くしてください。
(ここに連鎖が表示されます)
コピーはその層が剥がれた直後のテキストを取ります。巻き戻しはその層とその上のすべての層を落とします。一度に複数の歩を取り消す方法です。
適用後の結果: 0 層
(まだ何もありません)
結果をコピー
結果を新しい入力に使う
レポートをダウンロード(JSON)
エンコード連鎖とは?なぜ専用デコーダーが必要なのか
層 とはテキストに適用された 1 つのエンコーダーです。連鎖 はそれが 2 つ以上順番に適用されたものです。日常の例はほぼすべてこうです:バイナリ — 画像、署名付きトークン — をテキストしか運べない場所に入れる必要があり、Base64 にする。その Base64 の結果を URL で運ぶ必要があり、percent エスケープされる。その URL 全体をログ行や設定ファイルに入れる必要があり、バックスラッシュや引用符もエスケープされる。問題にぶつかったとき見ているのは最外層で、読めない理由は単純に内側の層がまだ掛かったままだからです。
単一用途のデコーダーはこれに役立ちません。JTI2bHQlM0JiJTI2Z3QlM0JoaSUyNmx0JTNCJTJGYiUyNmd0JTNC を Base64 デコーダーに渡すと、完全に正しいのにまだ読めない答えが出ます — percent エスケープと文字参照が、欲しかったテキストの上にまだ乗っているからです。本当に必要なのは、各歩でどの エンコーダーを剥がすか決めるもの — そしてこのページはその決断を見える化したものです。
エンコードは暗号化ではありません。このページは何も破りません。 このページのすべての方式は、同じ情報を書き記す公開された可逆的な方法です。Base64 に鍵はありません。percent エスケープに鍵はありません。最内層が暗号化されていれば、このページは外側の層をデコードして暗文を渡し、それが結果であると偽らず、はっきりそう告げます。実行すべきものは何もなく、隠すものも何もありません。
このページの worked 例
下の各行はこのページのデータファイルからの実入力で、中間の列はページ自身のアンワインダーがそこに見つけたものです。最後の列は停止時に残るテキストです。
これらの行はページが自分のケースリストから描画し、訪問ごとに再実行されるため、コードの挙動からずれることはありません。下のセルフテストが各行をチェックします。
ページがどの層を剥がすかを決める方法
意味ではなく形を見る。 各方式にはシグネチャーがあります — percent エスケープ、偶数長の hex 数字の並び、Base64 に適合するアルファベットと長さ。ページはシグネチャーがテキストに一致するすべての方式を、0 から 1 の信頼度付きで一覧します。
デコードし、結果がテキストか確かめる。 方式は読めるものを生成する場合にだけ適用する価値があります。各候補は実際に実行され、出力は印字可能文字の割合で採点されます。
バーを越えたものだけを、信頼度順に適用する。 しきい値を超える最高信頼度の候補が適用され、その結果に対して処理が繰り返されます。しきい値未満の方式は一覧には載るが適用されません。
このページがその上に加える 1 つの規則。 方式がしきい値を越えても、結果が本当に読めるテキストでない限り自力では適用しません — 置換文字と制御文字は減点対象です。この規則がなければ、普通の単語 cafe は Latin-1 でしか印字可能でない 3 バイトとして正当にデコードされ、getUserName は 8 バイトのノイズとして正当にデコードされてしまいます。検出器が「その文字列はアルファベットに適合する」と言うのは正しい。このページは「アルファベットに適合するだけでは不十分」と判断するのです。手動で適用することはまだでき、候補リストは拒否したこととその理由を告げます。
意図的に停止する。 どの方式もバーを越えないとき、テキストが変らなくなったとき、歩数上限に達したとき、次の歩がこの連鎖にすでに現れたテキストを戻してくるとき。最後のものが重要です:ROT13 は自分自身の逆変換なので、その歩を 2 回許す連鎖は決して終わりません。
折り返しテキストは提示されるだけで適用されない。 テキストが複数行に切られていると、検出器は空白を見て、普通の文章を読み、何も見つけません。そこでページはテキストのコピーから空白を取り除き、検出器にもう一度尋ね、見つけたものを手動選択用の歩として提示します。テキストから空白を取り除くことはテキストの書き換えであり、このページは頼まれていない書き換えをしません。
このページが決してしないこと
デコードするだけで、それ以外は何もしません。 貼り付けたテキストは決して実行されません:eval も new Function も、スクリプト注入も文書を開くこともありません。どこにも送られません:アップロードも、リクエストも、解析もありません。ページ下部の広告スロットとシェアボタンの行(このページが読み込むサードパーティウィジェットはその 2 つだけ)を除き、フォントもスクリプトも別のホストから取得しません。デコード出力はテキストとしてページに書き込まれるため、層から出てきた HTML タグはタグとして変換されるのではなく、タグとして表示されます。すべて確認できます:セルフテスト を押すと、このページ自身のソースをそれらの構造がないか調べ、1 つでも見つかれば失敗します。
認識できるものとできないもの
このページで引用されるテキストは本サイトのために書かれたものです。Base64、Base32、Base58、Base91、quoted-printable のアルファベットと uuencode ブロック形式は公開されているものであり、デコードは特定のツールの癖ではなくそれらの定義に従います。アルファベットのリファレンスベクトルは RFC 4648 のテストベクトルを持つ兄弟ページにあります。
複数行に折り返して届くテキスト
メールメッセージ、PEM ファイル、ヘッダーのトークン、端末から貼り付けたハッシュを通った blob はたいてい折り返されています :エンコーダーが固定桁 — MIME の慣習では 76 文字 — で折り、桁が終わったところに改行を入れました。それらの改行はデータの一部ではありません。長い行が輸送に耐えるように存在するものであり、そのような blob を読むすべてのデコーダーは無視することが期待されます。
このページはそれを自力では無視しません。理由は他で使っているのと同じ規則です。空白は、文字列がデータではなく文章であることを示す最も強力な単独のサインであり、The quick brown fox jumps over the lazy dog. を何としても読ませないテストです。折り返された blob はそのテストには文章にしか見えないため、ページは何も見つけられず — そして正直な半分の仕事をします:空白を取り除いたら何が 見つかるかを計算し、先に空白を除去 の印付きで手動ピッカーに列挙し、そこで止まります。列挙されるだけで適用されないのは、空白の除去がテキストを変えるからであり、このページは変化の内容を証明できるときにしかテキストを変えません。ここでは変化の内容は証明できるのに、それでもあなたの代わりには行いません。値の途中に改行があるテキストと、2 つの項目の間に改行があるテキストは、内側からは同じに見えるからです。
ページが折り返しテキストで停止したときの 2 つの歩。 手動で 1 歩ずつ進める に切り替え、次の層を適用 を 1 回押し(これがページに加算先の連鎖を与え、何も変えません)、先に空白を除去 の印の付いたエントリーを選んで適用する を押します。剥がれた行は取り除かれた空白文字数を告げ、入力サイズは貼り付けたテキストとして報告するため、その行の 2 つのカウントの差がちょうど出ていった空白です。
同じ推論は逆方向のケースもカバーします。uuencode ブロックは begin 行と各行の長さ文字を運ぶため、届いたままの形で認識でき、自力で適用されます。quoted-printable のボディは独自のソフト改行を保持し、それを知っている独自のデコーダーで復号されます — 行末の単一の = はデータではなく継続です。形のテストが文章とデータを見分けられない場所では、ページは拒否し、代わりの案を提示します。
このページが実行することと拒否すること
下のテーブルはページが強制するのと同じ定数から構築されるため、このページの行と警告が矛盾することはありません。人を驚かせる 2 つの数字は Base58 と Base62 の行です:この 2 つの方式は長さの 2 乗に比例するコストの長除法で変換されるため、このページは短い文字列にしか実行せず、ハングしたように見せる代わりにその歩の中でそう告げます。
推定は意図的に悲観的です。タイミングハーネスから来ており、デスクトップブラウザーは通常、表示される数字の数倍速いです。