2

古いソフトウェアのシリアル番号とそれに対応するアクティベーション キーがたくさんあります。それらを最初にインストールして以来、いくつかのアクティベーションキーを紛失しました(ただし、シリアル番号はまだあります)。私はまだ約 20 個のキーのデータ セットを持っており、目で見ても、アクティベーション キーを決定する方法が狂っていることがわかります。私の大規模なデータセットを考えると、私が失った情報のアクティベーションキーを見つけるためにバックソルブできる方法があります.

シリアル番号の例: 14051 アクティベーション キー: E9E9F-9993432-45543

4

2 に答える 2

1

あなたがしようとしているのは、シリアル番号をアクティベーション キーにマップする関数を考え出すことです。関数の性質について詳しく知らなくても、これは非常に簡単なもの (数項のみの多項式) から非常に難しいもの (多数のブロック XOR、置換テーブル、複雑なキー スケジュールなどを含む多層関数) までさまざまです。 .)。

キー検証ルーチンにアクセスできる場合 (例: 逆アセンブル -ほとんどの場合、商用ソフトウェアの EULA に対して)、特定のアクティベーション キーが特定のシリアル番号に対して正しいかどうかを返すルーチンがあります。シリアル番号のアクティベーション キーを計算してこれを行った場合は、実質的に完了です。これが鍵の逆関数を計算することによって行われた場合、タスクは少し難しくなります。その関数を逆にして、鍵派生アルゴリズムを取得する必要がありますが、これはそれほど簡単ではない可能性があります。スキームが公開鍵暗号に依存しているためにいくつかの難しい数学的問題 (離散対数問題など) を解決しなければならなくなった場合、扱っている値がブルートフォースできるほど十分に小さいことを望んでいます。または、既知のアルゴリズム (Pollard の rho アルゴリズムなど) を計算可能な時間内に使用します。

いずれにせよ、逆アセンブルとデバッグに慣れる必要があり、デバッガー対策が講じられていないことを願っています。

そうしないと、問題はさらに難しくなります。経験に基づいた推測を行い、それらを試して (たとえば、多項式の当てはめを試みることによって)、最善の結果が得られることを期待する必要があります。入力と出力の任意のセットに適合する可能性のある関数は非常に多種多様であるため (数学的に数えることはできませんが、実際にはソース コードのサイズによって制限されます)、アルゴリズム自体に対して既知の平文攻撃を試みることは一般的に実行不可能です。

于 2012-08-15T20:34:35.917 に答える
0

そもそも計画がどれだけばかだったかにもよりますが、私の推測では、そうではないと思います。固定された方法論はありませんが、一般的なドメインはコード解読と同じです。

于 2012-08-15T20:25:21.430 に答える