居然被信息办的老湿查水表了,想一想还有点小激动呢……

虽然没啥大事,但还是有点郁闷—— 大意了 Orz

事后推断大概是因为长时间用某个老湿的校园网帐号导致他上不了网,信息办的老湿就在IMC系统查帐号的此刻对应的MAC地址,然后查到对应的楼层交换机,然后查到对应的寝室…… 我还傻乎乎的 ipconfig /all 给他们看自己的MAC地址(查水表的老湿说自己是来检查交换机故障的)。

所以百度了下写了两个批处理改MAC保护水表……


将这个脚本加入开机启动可以每次重启后自动随机生成新的MAC地址和计算机名/组:

::随机化MAC地址
set/a qa_mac=%random%+10000
set/a bro_mac=%random%+10000
set/a tap_mac=%random%+10000
::随机化计算机名后缀
set/a name=%random%+10000

set qa_mac=0C2C46F%qa_mac%
set bro_mac=0D4B81A%bro_mac%
set tap_mac=0A2E47D%tap_mac%
set name=WIN-12%name%

::网络连接名称(需根据自己的网络适配器修改)
set qa_nic=以太网
set bro_nic=WLAN
set tap_nic=本地连接

::修改注册表中的MAC地址(需根据自己的注册表修改)
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0000" /v "NetworkAddress" /t reg_sz /d %qa_mac% /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0002" /v "NetworkAddress" /t reg_sz /d %bro_mac% /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0003" /v "MAC" /t reg_sz /d %tap_mac% /f

::修改计算机名
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v ComputerName /t reg_sz /d %name% /f
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d %name% /f
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v Hostname /t reg_sz /d %name% /f
::修改工作组
wmic computersystem where Name="%COMPUTERNAME%" call JoinDomainOrWorkgroup Name="%name%"

::重启网卡
netsh interface set interface name="%qa_nic%" admin=disable
netsh interface set interface name="%qa_nic%" admin=enable

netsh interface set interface name="%bro_nic%" admin=disable
netsh interface set interface name="%bro_nic%" admin=enable

netsh interface set interface name="%tap_nic%" admin=disable
netsh interface set interface name="%tap_nic%" admin=enable

echo 初始化完成
pause

然后考虑到查水表的或许会用 ipconfig /all 这个命令看MAC地址(什么一上来就用取证工具的那就算了…… 我是好孩子),于是想把 ipconfig.exe 替换掉。

起初准备把 ipconfig.exe 改名为 ifconfig.exe ,然后写个 ipconfig.bat 直接输出假的信息。
但是MAC地址其实没有变,于是改了下:


把 C:\Windows\System32 下的 ipconfig.exe 和 ipconfig.exe.mui 的 ipconfig 都改成 ifconfig,再建个名为 ipconfig.bat 的批处理:

@echo off
::传入参数
set input=%1%

::随机化MAC地址
set/a qa_mac=%random%+10000
set/a bro_mac=%random%+10000
set/a tap_mac=%random%+10000

set qa_mac=0C2C46F%qa_mac%
set bro_mac=0D4B81A%bro_mac%
set tap_mac=0A2E47D%tap_mac%

::网络连接名称
set qa_nic=以太网
set bro_nic=WLAN
set tap_nic=本地连接

::修改注册表中的MAC地址
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0000" /v "NetworkAddress" /t reg_sz /d %qa_mac% /f >null
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0002" /v "NetworkAddress" /t reg_sz /d %bro_mac% /f >null
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\0003" /v "MAC" /t reg_sz /d %tap_mac% /f >null

::重启网卡用时有点长,输出个假的错误信息误导下
echo Windows IP Configuration
echo An internal error occurred : 不支持请求
echo Please Contact Microsoft Product Support Services for further help

::重启网卡
netsh interface set interface name="%qa_nic%" admin=disable
netsh interface set interface name="%qa_nic%" admin=enable

netsh interface set interface name="%bro_nic%" admin=disable
netsh interface set interface name="%bro_nic%" admin=enable

netsh interface set interface name="%tap_nic%" admin=disable
netsh interface set interface name="%tap_nic%" admin=enable

::调用真的 ipconfig
ifconfig %input%

最后把 cmd 的默认执行权限改成管理员,以后运行 ipconfig 的时候就直接改了MAC地址了……


在 OS X Yosemite 下修改mac地址

在Yosemite里修改mac地址和在其他Linux系统下的修改方式不太一样……
参看这个问题,需要 disassociate the device before changing the MAC address

mac="00:"`echo $RANDOM | md5 | sed 's/\(..\)/&:/g' | cut -c1-14`
echo $mac
sudo /System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -z
sudo ifconfig en0 ether $mac
networksetup -detectnewhardware

参考

(因为wooyun zone需要登录就用了核总的转载,都是些作大死的黑阔啊…):

保护水表:关于tor和mac地址
全方位在互联网中保护自己