刷ddwrt后修改MAC地址
先说一下涉及到的几个地址的含义:
il0macaddr 这个是无线mac地址
et0macaddr 这个是LAN mac地址
et1macaddr 这个是WAN mac地址
lan_hwaddr 这个也是指LAN mac地址
wl_hwaddr 这个也是指无线mac地址
wan_hwaddr 这个也是指WAN mac地址
wl0_hwaddr 这个也是指无线mac地址
moto在ddwrt下mac地址必须遵循一个规律:
lan mac地址
我给一个范例:
00:0C:E5:4B:F2:85 这个地址就可以作为LAN MAC地址
00:0C:E5:4B:F2:86 这个地址就可以作为WAN MAC地址
00:0C:E5:4B:F2:87 这个地址就可以作为无线 MAC地址
下面开始说方法:
1、XP下打开一个DOS窗口,然后输入:telnet 192.168.1.1 回车,这里的192.168.1.1是指你AP的地址,如果更改过,那就用新地址;
2、用户名为root 密码为admin 如果你改过用户名和密码,那当然要输入新的,没改过,就用上面的;
3、用户名和密码输入完成后,复制下面的命令直接粘贴到命令窗口内,然后回车,每条命令粘贴后按一下回车,一共9条命令、9次回车,地址你可以自己编,不过需要遵循上面说的规律:
nvram set il0macaddr=00:0C:E5:4B:F2:87
nvram set et0macaddr=00:0C:E5:4B:F2:85
nvram set et1macaddr=00:0C:E5:4B:F2:86
nvram set lan_hwaddr=00:0C:E5:4B:F2:85
nvram set wl_hwaddr=00:0C:E5:4B:F2:87
nvram set wan_hwaddr=00:0C:E5:4B:F2:86
nvram set wl0_hwaddr=00:0C:E5:4B:F2:87
nvram commit(这条命令运行后稍等10秒再运行最后一条命令)
reboot(这个就是重启路由器,重启后路由器的地址就会变成上面的地址了)
nvram set il0macaddr=00:00:00:00:00:01
nvram set et0macaddr=00:00:00:00:00:02
nvram set et1macaddr=00:00:00:00:00:03
nvram set lan_hwaddr=00:00:00:00:00:04
nvram set wl_hwaddr=00:00:00:00:00:05
nvram set wan_hwaddr=00:00:00:00:00:06
nvram set wl0_hwaddr=00:00:00:00:00:07
nvram commit
reboot
TELNET命令突破DD-WRT连接数限制(最大端口数)2008-10-29 03:07 A.M.打开DOS窗口
telnet 192.168.1.1 (此为路由器的IP)
输入用户名和密码后执行以下3行
nvram set ip_conntrack_max=4096
nvram commit
reboot
4096是默认最大值,可以修改成任意值,1M的宽带ADSL取4096差不多。2M建议取值8192
DD-WRT 修改MAC地址
nvram set il0macaddr=00:00:00:00:00:26
nvram set et0macaddr=00:00:00:00:00:25
nvram set et1macaddr=00:00:00:00:00:24
nvram set lan_hwaddr=00:00:00:00:00:23
nvram set wl_hwaddr=00:00:00:00:00:22
nvram set wan_hwaddr=00:00:00:00:00:21
nvram set wl0_hwaddr=00:00:00:00:00:20
nvram commit(这条命令运行后稍等10秒再运行最后一条命令)
reboot(这个就是重启路由器,重启后路由器的地址就会变成上面的地址了)
上周在朋友的办公室遇到一件怪事,有个无线路由器(刷了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:03:78:35:91:26 。
5. 用 sed 命令把 cfe 中的 MAC 地址改掉,假设改成 88:00:00:00:00:05,改好后的 cfe 保存到 cfe.new 文件中。命令格式如下: sed "s/00:03:78:35:91:26/88:00:00:00:00:05/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 就可以了。