[英]Extracting MAC addresses from UUIDs
我工作的程序假定由Windows RPC API調用UuidCreateSequential()生成的UUID包含主以太網適配器的MAC地址。 這個假設是正確的還是我應該使用不同的方法來獲取MAC地址?
我不會依賴於此 - UuidCreateSequential擁有MAC地址的唯一原因是它試圖保證UUID在整個網絡中是唯一的。 另外,為什么你會用這種奇怪的方式來獲取MAC地址? 使用WMI並實際請求MAC地址而不是UUID創建功能的副作用。
這似乎是一個有效的假設。 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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.