dd-wrt永久修改MAC

由於有時刷了ddwrt後MAC會變成00:11:22:33:44:55之類的東西,就算用nvram指令去改一reset後又會跑掉,後來在網路上學到了用直接寫入cfe的方法修改。
(整個Flash被稱為wholeflash,除了平常泛稱的韌體部分以外還包括cfe、nvram、kernel等,MAC Address則被cfe和nvram保存。然而nvram中的資料也是從cfe裡面去取用計算出來的,每次reset後就會從cfe重抓一次,所以治本的方式就是修改cfe)

修改cfe的方法有硬體連接(JTAG)線連上console修改,但是費工又費神,所以我們用簡單輕鬆寫意的方式(過telnet,過ssh應該也可以)來完成。

1. 登入ddwrt,輸入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中)

2.輸入:dd if=/dev/mtd/0 of=/tmp/cfe.bin,把cfe先備份出來。應該要出現:
512+0 records in
512+0 records out

3.用sed把cfe中的MAC Address改掉,指令:

sed "s/00:11:22:33:44:55/66:77:88:99:00:11/g" /tmp/cfe.bin > /tmp/cfe.new

就是00:11:22:33:44:55換到66:77:88:99:00:11,熟悉*nix字串處理的話應該很容易理解

4.寫回mtd,指令:

mtd write /tmp/cfe.new cfe

不行的話用

mtd unlock cfe
mtd write -f /tmp/cfe.new cfe

成功應該會出現

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

完成後只要reset或者回復default,三個MAC就都會更新了(其中有兩個是算出來的,所以我們只改一個就等於改三個)

參考部分不准轉載也不給trackback,那我消化吸收再PO出來應該可以吧…?
參考網址:http://blog.hutiecheng.com/read.php?93

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: