首页>经验心得>路由器MAC地址彻底修改永久修改DD-WRT/Tomato固件中的 MAC 地址
2019
02-18

路由器MAC地址彻底修改永久修改DD-WRT/Tomato固件中的 MAC 地址

路由器刷机交流Q群

路由器MAC地址彻底修改永久修改DD-WRT/Tomato固件中的 MAC 地址

朋友的办公室遇到一件怪事,有个无线路由器(刷了DD-WRT的),只要一开,整个无线网就没法用了,后来发现,原来他的这个路由器和主路由器的MAC地址居然是一样的,汗~~~由于是在淘宝上同时买的,估计当时淘宝卖家刷路由器FLASH的时候,就把所有的路由器刷成一个MAC地址了(山寨货就是这么山寨品质,汗~~)。

处理的办法很简单,只要修改掉路由器中的MAC地址就可以了,讲到这里先说一个概念,一般来说,无线路由器的整个Flash被称为wholeflash,其中除了包含我们常说的固件(比如DD-WRT或者Tomato)外,还有cfe、nvram、kernel,而MAC地址保存的位置有nvram和cfe。但是在nvram里面的MAC地址改掉后,只要RESET或者恢复出厂设置,就会被自动恢复。其实,nvram中的MAC地址是由cfe来生成的,每次RESET或恢复出厂设置后,cfe都会自动生成一份全新nvram。所以要一劳永逸的话,只有去修改cfe中的MAC地址了。


修改cfe的方法有两种,一种是利用JTAG线,这需要一定的硬件知识,而且要有专门的JTAG线和电脑上的并口配合使用才能完成,比较复杂。还有一种是利用Telnet登陆路由器后,用路由器内的mtd设备来完成。在这里我就说一下第二种方法。


1.用Telnet命令登陆路由器(要注意一点,用户名一定要写root,哪怕你自定义过用户名,但在这里也还是要用root才可以)。



2.输入:cat /proc/mtd,一般会返回如下信息:


dev:sizeerasesizename


mtd0:0004000000010000"cfe"


mtd1:003b000000010000"linux"


mtd2:002bd00000010000"rootfs"


mtd3:0001000000010000"nvram"


mtd4:0001000000010000"ddwrt"


从返回的信息中,我们可以看到cfe其实就是放在mtd0区内的。



3.现在我们先把cfe备份出来,使用命令:dd if=/dev/mtd/0 of=/tmp/cfe.bin,一般返回如下信息:


512+0recordsin


512+0recordsout


这样就把路由FLASH中的cfe备份到了/tmp/cfe.bin中去了。


4.获取现在路由的MAC地址,这个方法有很多种了,你可以访问一下http方式的管理页,然后把LanMAC记下来(必须是LANMAC,千万别记成WANMAC或者WLANMAC了),也可以用命令:ifconfigeth0来获取(命令中最后一个字符是数字0,别输入成字母o了)。


假设这里获取到的MAC地址是00:16:11:17:91:95。


5.用sed命令把cfe中的MAC地址改掉,假设改成00:16:11:17:81:95,改好后的cfe保存到cfe.new文件中。命令格式如下:sed "s/00:16:11:17:91:95/00:16:11:17:81:95/g" /tmp/cfe.bin > /tmp/cfe.new

由于该命令是没有回显的,所以只要运行结束显示提示符,就可以了。


6.最后用mtd命令把新的cfe内容写回cfe。


mtd write /tmp/cfe.new cfe


如果有提示错误,可以改用以下2条命令进行:


mtd unlockcfe


mtd write -f/ tmp/cfe.new cfe


如果提示信息是类似下面的这行,就说明更新完毕:

Writingfrom/tmp/cfe.bintocfe...[w]

7.完成,您可以在http方式的管理页面中,选择恢复出厂默认设置一下,也可以按路由器背后的RESET强制恢复。现在路由器的MAC地址已经是新的了。

可能有人会问,你只改了LANMAC地址,那路由器还有WANMAC和WLANMAC呢,这两个又怎么改?其实这两个根本不用改的,如果打开cfe看的话也可以发现,里面根本没有这两个MAC地址,只有LANMAC地址的。那这两个MAC地址怎么生成呢?其实很简单,cfe会自动用LANMAC地址+1和+2来自动生成WANMAC和WLANMAC地址的,所以你改掉了LANMAC就可以了。

免费支持本站

支付宝打赏支付宝打赏微信打赏微信打赏

本文》有 0 条评论

留下一个回复 (您的评论需要经过审核才能显示)