2009-05-26 16 views
15

C++を使用して簡単にスプーフィングできない(MACアドレスを変更するなど)Microsoft Windowsで一意のハードウェアIDを生成する最適な方法は何ですか?マシンキーを形成するために読んで組み合わせることができ、ハードウェアに割り当てられた様々なIDがありますWindowsでハードウェアIDを生成する

HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\MachineGuid 
+1

「簡単になりすます」ことを定義します。つまり、あなたの祖母はハッカーのエリートのみ、または誰もしませんか? – GalacticCowboy

答えて

16

Windowsは、レジストリ内のマシンごとに一意のGUIDを格納します。たとえば、ソフトウェアが格納されているハードドライブのID、proc IDなどを取得できます。これらのうちのいくつかは他のものより簡単に設定できますが、強度の一部は、十分に強い

+0

CAPIのHMACハッシュ関数のキーとして、プログラムの名前でこれを使用できます。 –

+2

このバージョンはWindowsのすべてのバージョンで標準ですか?モバイルWindowsはどうですか? – JoshBerke

+0

質問は「どれほど簡単にスプーフィングするのですか?」 – jesup

-1

Win32システムHDS APIを使用します。 レジストリを読まないでください。全く意味がありません。ここで

+0

リンクを共有しますか? HDSは何も起こさない。 –

1

さまざまな "トリック"がありますが、唯一の実際の "物理的回答"は "いいえ、解決策はありません"です。

「マシン」は、一部のハードウェアが周辺にあるパッシブバスに過ぎません。 各アイロンは何らかの有用な識別子を提供することができますが、すべてのアイロンは、あなたが完全に意識することができない悪いまたは正当な理由でユーザーに置き換えることができます(この機能に基づいている場合、ハードウェアの交換/再初期化/再構成などが必要になるたびに、自分自身に影響を与えます。

ここで、多くのマシンが相互に連携して動作しなければならないコンテキストでマシンを識別する問題がある場合、これはMACアドレスまたはIPアドレスまたはホスト名がうまく果たす役割です。しかし、長期間に渡って必ずしも一定ではないという考えに準備してください(起動時に「発見」する代わりに、ハードコードするのは避けてください)

問題がある場合は、ソフトウェアインスタンスやライセンスを特定する場合は、別の種類のソリューションに集中する方がよいでしょう。つまり、「ユーザー」(自分のコンピュータではなく、お金を持っているユーザー)にライセンスを販売し、あなたはあなたの許可なしに必要なときにいつでも自由に変更する必要があります。ハードウェアやOSのライセンスを取得していないので...)あなたの問題はマシンを特定するのではなく、ユーザーを特定することですマシンは多くのユーザーのためのホストになることができ、同じユーザーがさまざまなマシンで作業できるようになります。遅かれ早かれ問題が発生することなく、1:1の関係を仮定/強制することはできません。このイディオムifsそれ以上は適合しないと判明した)。

ユーザーは多少の到達可能なサイトにユーザーを登録し、ユーザーが生成するキーを与え、同じユーザー/キーのペアが所定の時間内に同意回数以上使用されていないことを確認する期間。違反を超えたり、キーが古くなると、ユーザーをブロックして更新を待つだけです。

お分かりのように、答えは主に疑問の背後にある理由によります。

関連する問題