4

プロジェクトの過去の開発者によって暗号化されたままになっている DBF テーブルに char() フィールドがいくつかあります。

ただし、いくつかのレコードを復号化した平文の結果は知っています。元のデータを復号化するための関数/アルゴリズム/スキームを特定するにはどうすればよいですか? これらはいくつかのサンプル フィールドです。

暗号文の場合:

b5 01 02 c1 e3 0d 0a

平文は次のようにする必要があります。

3543921 or 3.543.921

暗号文の場合:

41 c3 c5 07 17 0d 0a

平文は

1851154 or 1.851.154

0d 0aパディングだけだと思います。win-1252エンコーディングで収集されたデータからのものでした(問題があるかどうかはわかりません)

編集:好奇心と学習のためです。プレーンテキストがわからないタプルのフィールドの値を回復するために使用される暗号化(バイナリデータですが、単純なもののように見えます)を理解できるようにしたいと考えています。

編集 2:いくつかのサンプルを追加しました。

4

7 に答える 7

3

一般的に簡単な方法はありません。この質問は一般的すぎます。これらのプレーン + 暗号化された文字列を投稿してみてください。

編集:

  • 学習のために、この記事を読むことができます :ウィキペディアの暗号化
  • 暗号化が単純であると本当に信じている場合は、バイト (またはワード) レベルの XOR であるかどうかを確認してください。次の擬似コードを参照してください。

    for (i in originalString) {
    newString[i] = originalString[i] ^ CRYPT_BYTE;
    }
    
于 2008-10-23T21:33:02.843 に答える
2

ご提供いただいた情報から、次のことがわかります。

  • いずれの場合も暗号文の長さが 7 バイトであるため、ブロック暗号である可能性は低いです (ブロック暗号は一度にブロックを暗号化するため、その長さはブロックサイズの倍数になり、ブロックサイズが 56 ビットになる可能性はほとんどありません*)。 .
  • 暗号文の長さと平文の文字数はどちらの場合も同じであるため、ストリーム暗号を適用して数値を ascii として直接エンコードできます。
  • 平文 (ascii として) と暗号文を一緒に XOR しても、単一の反復オクテットも同じ暗号ストリームも得られないため、自明な暗号ではありません。また、暗号文バイトの一部が IV でない限り、両方に同じキーを使用する単純なストリーム暗号ではありません。
  • 最後の 2 バイトは暗号文では同じですが、平文では同じではありません。これは偶然かもしれませんが、あなたが示唆するようにパディングを示している可能性もあります。パディングの場合は、他のエンコード メカニズムを使用する必要があります。

すべての暗号化された値が整数か、それとも他の値も可能か知っていますか?

于 2008-10-24T09:59:42.197 に答える
2

置換暗号 (頻度分析を試す) や不十分に適用された XOR (たとえば、キーを再利用する; 2 つの暗号文と既知の平文の XOR を試してから、結果が平文の XOR であるかどうかを確認する; または XOR を試す) のような単純なものではないと仮定します。いくつかのバイト数だけシフトされた暗号文)、おそらく未知のキー (ASCII 文字で構成される可能性が最も高い) を持つよく知られたストリーム/ブロック暗号であると想定する必要があります。暗号文と平文のペアのサンプルが十分にある場合は、最初の数文字/バイトが同じ平文に最初の文字/バイトが同じ暗号文があるかどうかを確認することから始めることができます。また、それがブロック暗号なのかストリーム暗号なのか、フィードバック メカニズムが関与しているかどうかも確認できます。パディングが存在する場合は、それも示唆している可能性があります。

于 2008-10-23T22:05:59.190 に答える
2

どれだけの努力をしたいかにもよりますが、どこかにたどり着くことができるはずです。暗号解読、特に暗号解読の方法を読むことから始めます。

このタスクがどれほど簡単かを決定するものは次のとおりです。

  • 使用されている暗号化方法の良さ。RSAやAESなどの最近の評判の良い方法である場合、おそらく運が悪い
  • 暗号文と平文の量 -- 多ければ多いほど良い
  • データの種類 -- 単純なテキストが最も簡単で、ランダム データが最も難しい
  • データがすべて同じキーで暗号化されているかどうか、または複数のキーが使用されているかどうか。

成功の鍵は落胆しないことです。暗号解読の歴史は、おそらく解読不可能なコードが解読されたという話でいっぱいです。おそらく最も有名なのは、第二次世界大戦のエニグマ マシンであり、そのクラッキングが現代のコンピューターの開発に貢献しました。

于 2008-10-23T22:16:26.983 に答える
1

対応するキーなしで使用されるアルゴリズムを決定することは、完全に役立つとは限りません。

テキストが十分に小さく、平文がある場合、なぜそれを理解しようとするのでしょうか? もちろん、好奇心のため以外に?

于 2008-10-23T21:29:36.657 に答える
1

決定論的な方法はありませんが、多くの場合、暗号文にヒントがあります。それは本当に暗号化されていますか (ある種の鍵で)? それとも、ハッシュ化されて(おそらく)ソルト化されているだけですか。

ハッシュ化されている場合は、事前にハッシュ化された辞書が既にオンラインにあるため、幸運にもグーグルで一致するペアを見つけることができます (辞書の単語があると仮定します)。

暗号文の例がある場合は、投稿できます。誰かが暗号形式を認識する可能性があります...

于 2008-10-23T21:30:28.340 に答える
0

XOR が簡単に解読できるスキームであるというのは誤解だと思います。理論的に最も強力な暗号化の形式は、ワンタイム パッドです。単純に、平文を xor する所定のビットの文字列です...

一方、有限XORは...

于 2008-10-24T16:58:46.783 に答える