网卡的 MAC 地址是固化在网上 EPROM 中的物理地址,是一块网卡的“身份证”,通常为 48 位。
在平常的应用中,有很多方面与 MAC 地址相关,如有些软件是和 MAC 地址绑定的,没有允许的 MAC 地址,软件就无法运行;或者在局域网里,管理人员常常将 IP 与客户机的 MAC 地址绑定,以方便管理,万一用户的网卡坏掉了,自行更改网卡后必须向管理人员申请更改绑定的 MAC 地址,这样就比较麻烦。在这种时候,如果我们能够更改一下网卡的 MAC 地址,那就方便多了。
实际上,修改网卡的 MAC 地址是很容易的,我们既可以在操作系统中通过软件来修改网卡的 MAC 地址,而实际的网卡 MAC 地址不变,以达到欺骗软件的目的;也可以用工具直接更改网卡的实际 MAC 地址。
修改注册表
几乎所有的网卡驱动程序都可以被 NdisReadNetworkAddress 参数调用,以便从注册表中读取一个用户指定的 MAC 地址。当驱动程序确定这个 MAC 地址是有效的,就会将这个 MAC 地址编程入其硬件寄存器中,而忽略网卡固有的 MAC 地址。我们通过手工修改 Windows 的注册表就可以达到目的。
在 Winodws98 下运行 Windows 的注册表编辑器,展开“HKEY_LOCAL_MACHINESystemCurrentControlSetServicesClassNet”,会看到类似“0000”、“0001”、“0002”的子键。从“0000”子键开始点击,依次查找子键下的“DriverDesc”键的内容,直到找到与我们查找的目标完全相同的网卡注册表信息为止。
当找到正确的网卡后,点击下拉式菜单“编辑/新建/字符串”,串的名称为“Networkaddress”,在新建的“Networkaddress”串名称上双击鼠标就可以输入数值了。输入你想指定的新的 MAC 地址值。新的 MAC 地址应该是一个 12 位的十六进制数字或字母,其间没有“-”,类似“000000000000”的这样的数值(注意,在 Windows98 和 Windows2000/XP 中具体键值的位置稍有不同,大家可通过查找功能来寻找)。
在“NetworkAddress”下继续添加一个名为“ParamDesc”的字串值,它将作为“NetworkAddress”项的描述,数值可以取为“MACAddress”。再把它的内容修改为你想设定的内容。
这样,我们就成功地修改了网卡的 MAC 地址,重新启动计算机即可。
修改网卡属性
大部分的网卡都可以通过在控制面板中修改网卡属性来更改其 MAC 地址,笔者的 3COM3C905B-TX 和 RTL8139 芯片的网卡都可以这样轻松修改。
在“设备管理器中”,右键点击需要修改 MAC 地址的网卡图标,并选择“属性/高级”选项卡。在“属性”区,就可以看到一个称作“NetworkAddress”或其他相类似名字的的项目,点击它,在右侧“值”的下方,输入要指定的 MAC 地址值。要连续输入 12 个十六进制数字或字母,不要在其间输入“-”。重新启动系统后设置就会生效了。
釜底抽薪另类修改
假如用户使用的是 RealTek 公司的 RTL8139A/B/C/D 系列芯片的网卡,有一种更简单的方法修改 MAC 地址。RealTek 公司设计的 PG8139 软件可以直接修改 RTL8139 系列网卡的 MAC 地址,甚至可以让每次启动后网卡的 MAC 地址都不相同。具体操作如下:
把 pg8139.zip 解压缩到一个文件夹下,以 8139C 芯片为例,用记事本打开该目录下的 8139c.cfg 文件,修改 8139c.cfg 文件的第一行,将“NodeID”(网卡号)后改为所需要的新值,建议初始值为“00E04C000001”,修改时注意每两位之间至少要留一个空格。
保存后再进入 MS-DOS 方式(注意,要在纯 DOS 模式下),在 DOS 提示符后输入“pg8139/pci8139c.cfg”后再按回车键,此时系统如果提示“ProgrammingEEPROMissuccessful”则说明更改成功。PG8139 程序每成功运行一次,在相应的 8139c.cfg 文件中,系统会自动将“NodeID”的值加 1,也就是说,第一次运行时给当前工作站网卡分配的 MAC 地址为“00E04C000001”,第二次运行时,系统会自动分配为“00E04C000002”,第三次运行时,会自动为“00E04C000003”……,依此类推,就可以批量地修改网卡的 MAC 地址,不再需要重复修改 8139c.cfg 文件了。
如果用户的网卡是 RTL8139 其他版本的芯片,只要找到相应的.cfg 文件修改就行了。
另外,还有一种极端的办法,通过烧录网卡的 EEPROM 来达到克隆 MAC 地址的目的。但这样做风险很大,而且操作复杂,即使是有经验的用户也难免在操作中出现错误,我们不推荐进行这种操作。