0

パスワードをmssqlデータベースに保存するアプリケーションがあります。これらのパスワードの生成に使用されるアルゴリズムを複製したいと思います。

私は、次に何を試みるべきかについて、私が少し迷っていることを認めなければなりません。

Str in => Output 
0      = 0x81
00     = 0x81 0x95 
000    = 0x81 0x95 0x83
001    = 0x81 0x95 0x82
002    = 0x81 0x95 0x81
100    = 0x80 0x95 0x83
900    = 0x88 0x95 0x83
ddddddddd  = 0x55 0x41 0x57 0x5E 0x4E 0x48 0x4F 0x57 0x40
dddddddddd = 0x55 0x41 0x57 0x5E 0x4E 0x48 0x4F 0x57 0x40 0x42

出力で見つかった文字=>0x21から0x9A

xorを試しましたが、結果が得られませんでした。それぞれのキャラクターはどういうわけか前のものに依存しているに違いないと思いますが、それらをつなぐものは何も見つかりません。

これを理解しようとしているときに確認する必要があるプロセスまたは順序はありますか?誰かが私にヒントを与えるか、それを解決するための正しい方向に進んでください。どんな助けでも大歓迎です。

編集あなたの考えをテストするSeanAは正確であることが証明されているようです...

dddddddddd = 0x55 0x41 0x57 0x5E 0x4E 0x48 0x4F 0x57 0x40 0x42
ddddd0dddd = 0x55 0x41 0x57 0x5E 0x4E 0x9C 0x4F 0x57 0x40 0x42
dd0ddddddd = 0x55 0x41 0x83 0x5E 0x4E 0x48 0x4F 0x57 0x40 0x42
1234567890123456...   0x80 0x97 0x80 0x8E 0x9F 0x9A 0x9C 0x8B 0x9D 0x96 0x9A 0x98.... 

確かに、各文字には文字列内の位置に応じた値があるように見えます。パスワードのサイズに制限はありません。より多くの時間が経過すると、サンプルサイズを大幅に増やすことになりますが、関係を見つける可能性を高めるためにテストする必要のある特定の値はありますか?

編集2

提案されたように表(xls)を完成させました。http://www.filedropper.com/result_1からダウンロードできます 。 これは、入力と出力の違いを小数で表したものです。16進値として表示される入力と差の値の間には強いパターンがあります。各文字の場所には、チャートに続く非常に一貫したパターンがあります(その位置のすべての文字)。また、各位置の可能な範囲は、入力値の最上位桁の変化に合わせて、16個の値の各グループ全体で一貫しています。 16進数で表示されます。

ただし、表から、アルゴリズムと同じ結果でパスワードをエンコードできることがわかったので、私たちの理論は成り立つようです。

引き続きアルゴリズム自体を調査して見つけたいと思います。正しい方向を見つけるのに役立つポインタを本当に感謝しています。

4

4 に答える 4

1

これを100%の精度で行うことは、理論的には不可能です。

これは、実際には、任意の有限数の点に適合することができる無限の数の曲線がある場合に、「どの数学曲線がこれらすべての点に適合するか」と尋ねるようなものです。

アルゴリズムに制限を設けることができれば、明確な答えを得ることができるかもしれません。たとえば、信号とシステムのクラスでは、線形時不変システム(LTIシステム)が「インパルス応答」によって完全に特徴付けられることを学びます。つまり、LTIシステムがどのように応答するかをテストすることで、LTIシステムを完全に決定できます。インパルス(瞬間的な「強打」)と呼ばれる特別な入力に。ただし、そのような制限がなければ、可能性は無限にあります。

于 2011-04-05T01:32:19.047 に答える
1

同じ位置にいる同じキャラクターが常に同じ出力を生成するように見えます。おそらく、アルゴリズムはテーブルルックアップにすぎませんか?最大サイズのパスワードはありますか?

位置1からnのすべての文字出力を出力するコードを記述して、アルゴリズムを解決し、作成したルックアップを使用してパスワードをさらにエンコードすることができます。

于 2011-04-05T01:38:29.270 に答える
1

関係を見つける可能性を高めるためにテストする必要がある特定の値はありますか?

未知の暗号化アルゴリズムを解読することは、入手可能な証拠に基づいて理論を開発し、それらが機能するかどうかを確認することです。この場合、これは単純な置換シファーであり、文字位置ごとに異なる置換テーブルがあるという理論があります。

これを次のように証明してみてください。

  • 1番目の位置にある可能性のあるすべての文字を調べ、対応する暗号化された文字を「読み取り」、1番目の位置の置換テーブルを作成します。

  • 2番目、3番目などに繰り返します

  • すべての置換テーブルがキャプチャされたら、ランダムなパスワードをいくつか試して、アルゴリズムとテーブルが正しく推測されていることを確認します。

最後のステップが成功した場合、実用的な目的で暗号化アルゴリズムを解読したことになり、復号化アルゴリズムを簡単に導き出すことができます。たとえば、置換テーブルを反転します。


私は言わなければなりません:これがうまくいくなら、これはひどく不完全な暗号化アルゴリズムです。正確に正しく理解していなくても、予測可能性が高すぎます。

于 2011-04-05T03:20:50.930 に答える
0

このアプリケーションのコードやドキュメントを見ることができませんか?何らかの強力な暗号化を使用している場合は、キーをリバースエンジニアリングするのに苦労するでしょう。以前の文字が暗号化に影響を与えるため、ある種の暗号フィードバックメカニズムを使用しているように見えます。一方、同じ開始文字が同じ出力を生成するため、初期化ベクトルのようなものを使用しているようには見えません。そこにあるいくつかの手がかりについては、おそらくブロック暗号動作モードを参照してください。

おそらく、どのキーがすでに使用されているか知っていますか?もしそうなら、あなたはアルゴリズムとそのパラメータを推測してみることができます。特に、それが一般的またはよく知られているソフトウェアである場合は、おそらくインターネットで検索して見つけることができます。または、それが独自のソフトウェアである場合は、コードを掘り下げて、それがどのように行われるかを確認する必要があります。また、強力な暗号化ではなく、隠すことによるセキュリティでさえない単純なアルゴリズムである可能性もあります。その場合、あなたや他の誰かがいくつかの実験でそれをリバースエンジニアリングできるかもしれません。

于 2011-04-05T03:07:03.357 に答える