Windows 给出奇怪的 8 字节硬件地址

Windows gives strange 8-byte hardware addresses

我在 Windows 和 Ubuntu Linux 上使用 Qt 获得了 MAC 地址列表。使用以下代码:

QString getMacAddresses()
{
    QString text;
    foreach(QNetworkInterface interface, QNetworkInterface::allInterfaces())
        if(!(interface.flags() & QNetworkInterface::IsLoopBack))
            text += interface.hardwareAddress() + ",";
    return text;
}

我在几台电脑上试过了。

它在 Ubuntu Linux 上工作正常:正确的 MAC 地址是 returned。

下面是 Windows 上的示例输出(为方便起见格式化):

00:FF:B0:9B:AA:10
00:A0:C6:00:00:17
EC:F4:BB:6F:DD:3D
00:00:00:00:00:00:00:E0
00:00:00:00:00:00:00:E0
00:00:00:00:00:00:00:E0

那些奇怪的 8 字节 "MAC addresses" 是什么? 它们肯定不是真正的 MAC 地址,因为它只有 6 个字节长。

使用的 Windows 版本是 Windows 7.

在不同的机器上,奇怪地址的数量可以从2个到6个不等。这个地址数量甚至可以在Windows更新后发生变化。而且它们总是在列表的末尾,在真实 MAC 地址之后。

此示例 ipconfig /all 的输出是(出于安全原因删除了一些行):

Ethernet adapter Local Area Connection* 11:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : XXXXXXXXX
   Physical Address. . . . . . . . . : 00-FF-B0-9B-AA-10
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes

Mobile Broadband adapter Mobile Broadband Connection 2:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card #2
   Physical Address. . . . . . . . . : 00-A0-C6-00-00-17
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes

Ethernet adapter Local Area Connection:

   Description . . . . . . . . . . . : Intel(R) Ethernet Connection I217-LM
   Physical Address. . . . . . . . . : EC-F4-BB-6F-DD-3D
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::3de4:95c1:524a:19ab%11(Preferred)
   IPv4 Address. . . . . . . . . . . : 10.33.203.146(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 10.33.203.1
   NetBIOS over Tcpip. . . . . . . . : Disabled

Tunnel adapter isatap.{D7CEA001-3A2F-4ACA-BB3F-3237AACB4DA6}:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Microsoft ISATAP Adapter
   Physical Address. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes

Tunnel adapter isatap.{6285C284-8B28-4616-83AE-23E2DDA9DCBE}:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Microsoft ISATAP Adapter #2
   Physical Address. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes

Tunnel adapter isatap.{576DFB96-0921-4F13-A7F8-956896780357}:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Microsoft ISATAP Adapter #4
   Physical Address. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes

QNetworkInterface::hardwareAddress() 上的文档说:

Returns the low-level hardware address for this interface. On Ethernet interfaces, this will be a MAC address in string representation, separated by colons.

Other interface types may have other types of hardware addresses. Implementations should not depend on this function returning a valid MAC address.

所以,这个方法可以return"other types of hardware addresses"。这些是什么?为什么它总是相同的字符串“00:00:00:00:00:00:00:E0”?

您的问题与 Qt 无关,因为 ipconfig returns 相同。这是Vista和Windows 7的已知问题。

例如,您可能想阅读此内容:

http://www.sevenforums.com/network-sharing/108910-problem-find-out-mac-address.html