質問

私が取り組んでいるプログラムは、Windows RPC API呼び出しUuidCreateSequential()によって生成されたUUIDにプライマリイーサネットアダプターのMACアドレスが含まれていることを前提としています。この仮定は正しいですか、またはMACアドレスを取得するために別の方法を使用する必要がありますか?

役に立ちましたか?

解決

これに依存しません-UuidCreateSequentialがMACアドレスを持っている唯一の理由は、UUIDがネットワーク全体で一意であることを保証しようとしていることです。さらに、なぜこのような奇妙な方法でMACアドレスを取得するのでしょうか? UUID作成関数の副作用の代わりに、WMIを使用し、実際に にMACアドレスを要求します。

他のヒント

これは有効な仮定のようです。 MSDN のドキュメントには、具体的にはこれにイーサネットのアドレスが含まれると書かれています。マシン上のカード。マルチカードのシナリオについては何も言及していませんが、プライマリカードを選択することは論理的な飛躍のようです。

マネージコードを記述している場合、 NetworkInterface クラスを呼び出し、 GetAllNetworkInterfaces()を呼び出します。または、C ++コードから、 GetAdaptersInfo 。これはマネージ実装で使用されます。

UuidCreateSequential がこれで機能する場合でも、情報を取得するのはかなりあいまいな方法であり、コンピューターに複数のアダプターがあるような潜在的な問題を隠します。

バージョン1 UUIDのみにMACアドレスが含まれ、元のジェネレーターが最初からMACアドレスにアクセスできた場合のみ。元のジェネレーターがMACアドレスにアクセスできなかった場合、RFC 4122のセクション4.5にあるように、暗号で保護された乱数ジェネレーターから供給された6つのランダムバイトを使用していました。このため、MACアドレスUUIDで指定されるのは実際にはMACアドレスです。

ほとんどの場合、UUIDからMACアドレスを解析する必要がある唯一の理由は、法医学的な目的のためです。たとえば、MelissaウイルスのWordドキュメントペイロードに埋め込まれたUUIDを参照してください。調査員はこれらのIDからMACアドレスを抽出し、容疑者のプライマリネットワークアダプターのMACアドレスと照合しました。

自分のコンピューターのMACアドレスを取得しようとしている場合、これを実行するはるかに良い方法があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top