无线论坛

找论坛
ybd74202
Lv5 太平洋舰队上尉
太平洋舰队上尉 贡献913,距离下一级还需187贡献
楼主
2010-11-21 23:29 0 6 只看楼主
电梯直达 
上周在朋友的办公室遇到一件怪事,有个无线路由器(刷了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: size erasesize name

mtd0: 00040000 00010000 "cfe"

mtd1: 003b0000 00010000 "linux"

mtd2: 002bd000 00010000 "rootfs"

mtd3: 00010000 00010000 "nvram"

mtd4: 00010000 00010000 "ddwrt"

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



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

512+0 records in

512+0 records out

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



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

假设这里获取到的 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 unlock cfe

mtd write -f /tmp/cfe.new cfe



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

Writing from /tmp/cfe.bin to cfe ... [w]



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



可能有人会问,你只改了 LAN MAC 地址,那路由器还有 WAN MAC 和 WLAN MAC 呢,这两个又怎么改?其实这两个根本不用改的,如果打开 cfe 看的话也可以发现,里面根本没有这两个 MAC 地址,只有 LAN MAC 地址的。那这两个 MAC 地址怎么生成呢?其实很简单,cfe 会自动用 LAN MAC 地址 + 1 和 +2 来自动生成 WAN MAC 和 WLAN MAC 地址的,所以你改掉了 LAN MAC 就可以了。
txtaj
Lv4
太平洋舰队中尉 贡献689,距离下一级还需11贡献
2010-11-22 16:29
只看该作者
沙发
非常好。太给力了楼主
纳米阳光
Lv1
太平洋舰队新兵 贡献38,距离下一级还需42贡献
2010-11-22 22:09
只看该作者
板凳
先夺板凳
lcf001122
Lv1
太平洋舰队新兵 贡献10,距离下一级还需70贡献
2010-11-24 13:50
只看该作者
地板
水草猪
Lv2
太平洋舰队下士 贡献168,距离下一级还需32贡献
2010-11-28 13:56
只看该作者
地下室
好文章,不错
壹夜爆褲
Lv6
太平洋舰队少校 贡献1301,距离下一级还需199贡献
2011-02-09 17:59
只看该作者
6楼
照着做了,改不了  ]

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

512+0 records in

512+0 records out
我的显示256+0 records in

256+0 records out
其它都一样,没有显示不一样的,最后也是如果提示信息是类似下面的这行,就说明更新完毕:

Writing from /tmp/cfe.bin to cfe ... [w]




不行
Monica
Lv1
太平洋舰队新兵 贡献1,距离下一级还需79贡献
2013-03-06 10:23
只看该作者
7楼
不行的!照着做重启变砖啦!

您需要登录后才可以发帖 登录 | 立即注册

其他登录方式:

常用表情
太平洋电脑网论坛帖子仅代表作者本人意见,不代表网站立场。请勿轻信特价、汇款、中奖等信息,
请勿轻易透露个人资料,因此产生的一切后果,PConline不承担任何责任
回复 发新帖 找论坛 反馈 回顶部