【已解决】请教如何自动随机修改网卡MAC地址?

遇到了问题?请先进行搜索(中文和英文),然后在此提问

Moderators: tmplinshi, arcticir

hunterlolo
Posts: 5
Joined: 12 Oct 2014, 09:28

【已解决】请教如何自动随机修改网卡MAC地址?

11 Mar 2016, 12:19

#NoEnv
#SingleInstance force

Msgbox % GetMac()
GetMac()
{
NetworkConfiguration:=ComObjGet("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")
for mo in NetworkConfiguration
{
if(mo.IPEnabled <> 0)
return mo.MacAddress
}
}

这个脚本可以查看网卡的MAC地址,但是如何实现修改网卡的MAC地址为随机的呢?请教大神答复啊!
Last edited by hunterlolo on 13 Mar 2016, 05:52, edited 1 time in total.
aamii
Posts: 47
Joined: 23 May 2014, 03:50

Re: 请教如何自动随机修改网卡MAC地址?

11 Mar 2016, 22:14

网卡的mac是写在网卡里面的,修改可以在注册表里面,如果你没改过,注册表里面是没有NetworkAddress这个项的。
请注意,下面的脚本里面写进注册表语句暂时被注释了,你先调试确认
另外那个ipenable的方法感觉不是很好,不过我这边刚好可用,也许没问题,最好是根据你要改的网卡的“描述名称”进行匹配
要生效的话,需要重启网卡,你可以下载一个可用的DevCon。

Code: Select all

网卡根路径:="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}"
网卡新地址:=GenerateMacAddress()
网卡所在分支:=网卡根路径 "\" GetMacIndex()
MsgBox %网卡所在分支% `n%网卡新地址%
; 调试好后再打开下面这个
; RegWrite, REG_SZ,%网卡所在分支%,NetworkAddress,%网卡新地址%
RegRead,var_MatchingDeviceId,%网卡所在分支%,MatchingDeviceId
var_MatchingDeviceId1:=RegExReplace(var_MatchingDeviceId,".*&DEV_(.*)&.*","DEV_$1")
重启网卡="C:\Program Files (x86)\Lenovo\OneLink Dock\devcon64.exe" restart *%var_MatchingDeviceId1%*
Runwait %comspec% /k %重启网卡%,,hide
return

GetMacIndex()
{
	NetworkConfiguration:=ComObjGet("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")
	for mo in NetworkConfiguration
	{
		if(mo.IPEnabled <> 0)  ;是这个意思,但是不很靠谱,如我的电脑里面虽然只经过无线上网,但是装了vm后,vm的网卡也是-1,所以未必准确定位,可自行改进
		{ ;我建议用网卡的“描述” 跟 mo.Description 进行比较,可准确定位
			return substr( "000" mo.Index ,-4)
		}
		return "Error"
	}
}
GenerateMacAddress()   ;来自https://autohotkey.com/board/topic/92743-mac-address-generator/page-2
{
	HexNum := "0123456789ABCDEF"
	StringSplit, Num, HexNum
	Loop, 12
		{
		Counter++
		Random, Rand, 1, 16
		MacAddress .= Num%Rand% (!mod(Counter,2) ? Separator : "")
		}
	return SubStr(MacAddress,1,-1)
}
hunterlolo
Posts: 5
Joined: 12 Oct 2014, 09:28

Re: 请教如何自动随机修改网卡MAC地址?

13 Mar 2016, 05:48

#NoEnv
#SingleInstance force
Msgbox % GetMac()

cardroot:="SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}"
cardaddressnew:=GenerateMacAddress()
cardline:=cardroot "\" GetMacIndex()
;MsgBox %cardline% `n%cardaddressnew%
RegWrite, REG_SZ,HKEY_LOCAL_MACHINE,%cardline%,NetworkAddress,%cardaddressnew%
sleep 1000
Runwait %comspec% /c netsh interface set interface 本地连接 disable,,hide
sleep 1000
Runwait %comspec% /c netsh interface set interface 本地连接 enable,,hide

sleep 5000
Msgbox % GetMac()

return

GetMacIndex()
{
NetworkConfiguration:=ComObjGet("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")
for mo in NetworkConfiguration
{
if(mo.Description == "Broadcom NetLink (TM) Gigabit Ethernet" ) ;是这个意思,但是不很靠谱,如我的电脑里面虽然只经过无线上网,但是装了vm后,vm的网卡也是-1,所以未必准确定位,可自行改进
{ ;我建议用网卡的“描述” 跟 mo.Description 进行比较,可准确定位

return substr( "00" mo.Index ,-4)
}
}
}
GenerateMacAddress() ;来自https://autohotkey.com/board/topic/92743-mac-address-generator/page-2
{
HexNum := "0123456789ABCDEF"
StringSplit, Num, HexNum
Loop, 13
{
Counter++
Random, Rand, 1, 16
MacAddress .= Num%Rand% (!mod(Counter,2) ? Separator : "")
}
return SubStr(MacAddress,1,-1)
}

GetMac()
{
NetworkConfiguration:=ComObjGet("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")
for mo in NetworkConfiguration
{
if(mo.IPEnabled <> 0)
return mo.MacAddress
}
}
hunterlolo
Posts: 5
Joined: 12 Oct 2014, 09:28

Re: 请教如何自动随机修改网卡MAC地址?

13 Mar 2016, 05:50

谢谢一楼指点,参照后,我已经改好了,不知还有问题没?

Return to “请求帮助”

Who is online

Users browsing this forum: No registered users and 16 guests