1

重複の可能性:
Javaで一意のコンピューター識別子(ディスクIDやマザーボードIDなど)を取得する方法

私は小さなJavaプログラムを作成しています。そこで、「James.txt」というファイルを作成しています。このファイルを使用して、プログラムがJamesコンピューターから移動されたかどうかを確認しています。私がそこで行ったことは、ジェームズのコンピューターのIPアドレスをそのファイルに書き込むことです。したがって、コンソールでプログラムを起動すると、最初にファイルがチェックされ、「Hey James!Suprise !!!」と表示され、IPがjamesに属していない場合は、「Sorry、This isforJames」と出力されます。パーティ"。

でも、同じパソコンでもIPアドレスは変えられるんですよね?では、どうすればJamesコンピューターを一意に識別できますか?助けてください!

4

6 に答える 6

2

NICを変更するとMACアドレスが変更されます。マザーボードが故障して交換される可能性があります。同じことがprocessorId、ハードディスクIDなどにも当てはまります。

結論-

  • アプリケーションの識別子を作成します
  • アプリケーションにユーザーのコンピューター上の識別子を維持させる
  • アプリケーションがユーザーにuserid/password / biometricsで自分自身を識別するように要求した場合は、識別子も検証してから、必要なメッセージ表示します。
于 2012-05-16T17:50:48.350 に答える
2

技術的には、すべてが「スプーフィング」される可能性があるため、コンピューターを一意に識別することはできません。方法を知っていれば、IP と同じくらい簡単に MAC アドレスを変更することもできます。

そうは言っても、一部のシステムは、一緒に使用して半固有のインスタンスを定義できる値の組み合わせを計算しようとします。通常、これらは次のようなハードウェア識別子から取得されます。

  • Macアドレス
  • ハードディスク識別子
  • CPUID

次に、これらは (ハードウェアのアップグレードなどの) 変更に対する許容度を備えた一意のキーを提供する方法でマッシュアップされます。ファイルシステムの構築時に作成される UUID と呼ばれる一部のシステムで使用される生成された識別子もあります。

これらの一部にアクセスするには、JNI を使用する必要がある場合があります。これらのいくつかは論争の的になっています (CPUID)。インターネット上で人々を追跡するために使用され、それによって匿名性が低下する可能性があるためです。

これらへのアクセスは、特定のアプリケーション (Web ブラウザーなど) から頻繁に利用できません。ログイン/パスワード形式のセキュリティを確立する方が簡単な場合があります。

于 2012-05-16T17:58:12.123 に答える
1

コンピュータが変更されていないことを保証する方法はありません。最善の代替策は、最初の実行時にマシンにキーファイルを書き込み、それを使用してチェックすることです。これを削除して、適切なハッシュアルゴリズムを使用してキーを生成している限り(つまり、他の誰もキーを生成できないと確信できる)、異なるように見える可能性がありますが、正しい一致が保証されていることを嬉しく思います。キーが一致したとき。この方法では、ポジティブIDに自信が持てますが、フォールスネガティブになりやすくなります。これは通常は問題になりません。参照として使用できるソルト入力に基づくSHAアルゴリズムのようなものを使用するように検討する必要があります。

于 2012-05-16T17:42:07.153 に答える
1

Java レジストリを使用して、単純な値をシステム レジストリに書き込むことができます。これは Linux と Windows で動作し、これを行うための非常に基本的な方法です。安全ではなく、かなりハッキング可能ですが、少なくとも移植可能です。

いくつかの優れた例については、Java を使用した Windows レジストリへの読み取り/書き込みを参照できます。

于 2012-05-16T17:39:50.703 に答える
1

純粋な Java でできることはすべて、故意に「システムを壊したい」技術に精通したユーザーに対してはあまり効果的ではありません。

それでも、純粋な Java で実行できるローテクなことは次のとおりです。

  • 先に進んで MAC アドレスを保存してください。完全に信頼できるわけではありませんが、実際のほとんどのユーザーは自分の MAC アドレスを変更しません。
  • ランダムな UUID を割り当て、Preferences アーキテクチャを使用してマシンに保存します。次に、その UUID またはその安全なハッシュをプログラムのローカル ディレクトリに保存します。

これらのシステムはどちらも、知識のあるユーザーが簡単に使用できます。しかし結局のところ、経験豊富なユーザーがクラス ファイルをいじくり回して、あなたが講じた手段を回避する可能性があります。

MAC アドレスの欠点は、ユーザーがネットワーク デバイスを変更する可能性があるため、MAC アドレスが変更される可能性があるプログラムの外部に「正当な」ケースがあることです。

于 2012-05-16T17:43:51.870 に答える
1

IP アドレスは頻繁に変更される可能性があります (DHCP を使用して割り当てられるなど)。ディスクまたはマザーボードのシリアル番号を識別に使用することをお勧めします。

WINDOWS でこれらのシリアル番号を取得する方法の例は、次の場所にあります。

http://www.rgagnon.com/javadetails/java-0580.html (ソースコードを含む、プラットフォームに依存)

于 2012-05-16T17:48:01.380 に答える