如何获得真正的硬件 MAC 地址 [关闭]
Posted
技术标签:
【中文标题】如何获得真正的硬件 MAC 地址 [关闭]【英文标题】:How to get TRUE hardware MAC address [closed] 【发布时间】:2011-01-06 13:22:34 【问题描述】:我知道,这个问题被创建了很多次,但它仍然是开放的
问题如下:
我的应用程序需要为计算机生成一些 UID,它正在运行。 我需要它来实现真正的保护。
MAC 地址是一个很好的候选者,因为它对于每个以太网卡都是唯一的。
许多文章使用 GetAdaptersInfo、WMI、NetBios 或套接字。
这是其中之一:Three ways to get your MAC address.
他们,岸,返回一个 MAC 地址,但这个地址可以通过适配器属性手动设置
Control Panel > Network and Internet > Network and Sharing Center > Change Adatper Settings > right click on adapter > Properties > click "configure" button > go to "Advanced" tab > chose "Network Address" and change it
所有提到的方法都不符合我的需要,因为使用驱动程序设置的MAC地址比真正的硬件MAC地址具有更高的优先级。我知道,所有 Win API 函数都会返回这个“假”地址,因此,真正的保护很容易被打破。
你们的任何帮助,伙计们,将不胜感激。
谢谢。
【问题讨论】:
如果 PC 有两个以太网卡,或者没有怎么办?网卡坏了需要更换怎么办? 你不会得到“真正的保护”。您无法进行最终不会被破坏的复制保护。最后,您可能最终会给您的客户带来不便并激怒一些人。 您可能需要找到其他一些唯一的 PC 标识符。我相信微软有他们设计的一种方法来确定 PC 的配置是否发生了变化,所以谷歌搜索可能会有所帮助。 许多 NIC 支持通过低级实用程序更改 MAC 地址。我有一张来自 SMC 的基于 RealTek 8139 的卡,它提供了这种能力。如果您修改了 MAC,那么它将成为卡的唯一 MAC 地址。 【参考方案1】:Windows 必须访问 MAC 地址的唯一方法是询问驱动程序。
这就是驱动程序的用途 - 与硬件对话,这样 Windows 就不必为任何人可能想出的每一个设备都包含代码。
如果驱动程序告诉 Windows MAC 地址是什么,那么这就是 MAC 地址。
【讨论】:
我只是在我的电脑上翻了一下,发现我无法使用 OP 描述的方法更改 MAC 地址,所以我怀疑它“更改”的能力取决于驱动程序,并且可能在带有 MAC 接口的网络适配器上。 虽然没那么简单。该驱动程序可能是以太网驱动程序。但是对于 IP 等更高级别的协议,需要支持 ARP,这需要真正的 MAC。如果发送的 ARP 消息包含“仅适用于操作系统”MAC,其他计算机将使用该 MAC,而以太网卡不会接收它。 您可以通过将设备设置为混杂模式并在您看到的数据包中查找“欺骗”MAC 来解决此问题。 我注意到,当我不在适配器首选项中手动触摸 MAC 地址时(将网络地址切换为“不存在”),上面提到的所有 WinAPI 函数都会返回 MAC 地址,烧成硬件。我认为,必须以编程方式完成以下步骤: 1. 存储当前 MAC 地址,手动更改 2. 以某种方式,以编程方式设置 MAC 地址的“不存在”状态 3. 可能,重新启动 NIC 4. 使用获取 MAC 地址的方法,描述在提到的主题中 5. 设置存储的地址 6. 可能,重新启动 NIC 但是第 2 步呢?【参考方案2】:MAC 地址是一个很好的候选者, 因为它对于每个以太网都是唯一的 卡。
恐怕不会。首先,我读过客户收到整批具有相同 MAC 地址的机器的报告(显然这会在构建集群时造成痛苦)。
我还亲眼看到了一台在重启时会更改其 MAC 地址的机器。每次。这是一台运行 Windows XP 的旧 IBM Thinkpad。
我的建议:如果要生成唯一 ID,请远离 MAC 地址。
【讨论】:
【参考方案3】:我不认为您提到的“网络地址”是指 MAC 地址。有些设备允许您出于 ISP 的目的“欺骗” MAC 地址,但您应该能够使用您找到的方法获取真实的 MAC。
【讨论】:
网络地址 - 是一个 MAC 地址,因为所有方法都返回我在此字段中输入的值 嗯,奇怪,物理设备的MAC地址应该是烧录进去的……以上是关于如何获得真正的硬件 MAC 地址 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 7 上查找 MAC 地址? [关闭]