通过注册表更改MAC地址不起作用

时间:2011-02-25 09:37:57

标签: c++ visual-c++ mac-address

我通过bootcamp在macbook上使用visual studio 2010和Windows XP。

我意识到我无法通过注册表更改MAC地址(通过 RegSetValueEx ),如果我选择的适配器是集成到笔记本电脑的适配器,例如:用于macbook的Broadcom无线适配器。但是请确定像AA-BB-CC-DD-EE-FF这样的值有效。

然而,如果我插入一个无线USB网络适配器,它可以完美地工作。我猜是不是我的代码有问题,因为我尝试了其他从互联网上下载的它是同一件事情。谁能解释为什么会这样?

2 个答案:

答案 0 :(得分:2)

感谢您的回答,我设法解决了这个问题。 AA-BB-CC-DD-EE-FF-GG因运气好而起作用。这个想法是Windows 7强加了一些限制,你可以在维基百科页面上http://en.wikipedia.org/wiki/MAC_spoofing。因此,“在Windows 7下,无线和有线网络适配器可以设置可以设置的欺骗地址的可能范围。要被Windows 7使用,欺骗性MAC地址应该具有0作为最低有效位(单播)和1作为第二个半字节中的第二个最低有效位(本地管理)。因此,第二个半字节的可能值限制为2,6,A和E.“正如我在页面http://en.wikipedia.org/wiki/MAC_address中看到的那样,两个指定的位对应于MAC地址的第二个字符,因此,任何具有第二个字符2,6,A或E的地址都可以工作。没有其他人可以。

Ť

答案 1 :(得分:0)

自定义 MAC 地址可能需要符合以下格式:

  • x2-xx-xx-xx-xx-xx-xx
  • x6-xx-xx-xx-xx-xx-xx
  • xA-xx-xx-xx-xx-xx-xx
  • xE-xx-xx-xx-xx-xx-xx

x 可以是 0 到 F 之间的任何数字。


原因如下:

  1. MAC address - I/G bit

    MAC 地址的第一个八位字节的最低有效位称为 I/G(个人/组)位。

    • 0:单播 MAC 地址
    • 1:多播 MAC 地址

    自定义mac地址的I/G位需要设置为0。

  2. MAC address - U/L bit

    MAC 地址的第一个八位字节的第二个最低有效位称为 U/L(通用/本地)位。

    • 0:通用管理 MAC 地址
    • 1:本地管理的 MAC 地址

    自定义 mac 地址的 U/L 位需要设置为 1。