#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地址为随机的呢?请教大神答复啊!
【已解决】请教如何自动随机修改网卡MAC地址?
Moderators: tmplinshi, arcticir
-
- Posts: 5
- Joined: 12 Oct 2014, 09:28
【已解决】请教如何自动随机修改网卡MAC地址?
Last edited by hunterlolo on 13 Mar 2016, 05:52, edited 1 time in total.
Re: 请教如何自动随机修改网卡MAC地址?
网卡的mac是写在网卡里面的,修改可以在注册表里面,如果你没改过,注册表里面是没有NetworkAddress这个项的。
请注意,下面的脚本里面写进注册表语句暂时被注释了,你先调试确认
另外那个ipenable的方法感觉不是很好,不过我这边刚好可用,也许没问题,最好是根据你要改的网卡的“描述名称”进行匹配
要生效的话,需要重启网卡,你可以下载一个可用的DevCon。
请注意,下面的脚本里面写进注册表语句暂时被注释了,你先调试确认
另外那个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)
}
-
- Posts: 5
- Joined: 12 Oct 2014, 09:28
Re: 请教如何自动随机修改网卡MAC地址?
#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
}
}
#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
}
}
-
- Posts: 5
- Joined: 12 Oct 2014, 09:28
Re: 请教如何自动随机修改网卡MAC地址?
谢谢一楼指点,参照后,我已经改好了,不知还有问题没?
Who is online
Users browsing this forum: No registered users and 20 guests