有flash坏块的小米路由器3刷入padavan
本次实验中所使用的小米路由器3已经有两次系统刷入,详细过程如下:
初次刷入padavan:http://zhuhd.win/TP/index.php/Home/Index/article/id/30.html
刷回官方系统:http://zhuhd.win/TP/index.php/Home/Index/article/id/59.html
再次刷入padavan时,提示刷入失败,查了一下仿佛是flash有坏快。
尝试新的方式,通过linux无需脚本即可刷入,参考恩山大佬的技术:
https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=348784
刷入降级固件:
http://bigota.miwifi.com/xiaoqiang/rom/r3/miwifi_r3_all_55ac7_2.11.20.bin
进入路由器后台,常用设置,系统状态,手动升级,选择降级固件,勾选清除配置。
漏洞法开启SSH
登录后台,取得网址栏stok值替换到此处,然后在浏览器中访问,逐条进行
http://192.168.31.1/cgi-bin/luci/;stok=<你的stok值>/api/xqnetwork/set_wifi_ap?ssid=tianbao&encryption=NONE&enctype=NONE&channel=1%3Bnvram%20set%20ssh%5Fen%3D1%3B%20nvram%20commit
返回1616正常
http://192.168.31.1/cgi-bin/luci/;stok=<你的stok值>/api/xqnetwork/set_wifi_ap?ssid=tianbao&encryption=NONE&enctype=NONE&channel=1%3Bsed%20%2Di%20%22%3Ax%3AN%3As%2Fif%20%5C%5B%2E%2A%5C%3B%20then%5Cn%2E%2Areturn%200%5Cn%2E%2Afi%2F%23tb%2F%3Bb%20x%22%20%2Fetc%2Finit.d%2Fdropbear
返回1616正常
http://192.168.31.1/cgi-bin/luci/;stok=<你的stok值>/api/xqnetwork/set_wifi_ap?ssid=tianbao&encryption=NONE&enctype=NONE&channel=1%3B%2Fetc%2Finit.d%2Fdropbear%20start
返回1616正常
官方方法获取
打开http://d.miwifi.com/rom/ssh
登陆后下载ssh工具,按说明使用U盘获取
查看MTD分区
cat /proc/mtd
root@XiaoQiang:~# cat /proc/mtd dev: size erasesize name mtd0: 08000000 00020000 "ALL" mtd1: 00040000 00020000 "Bootloader" mtd2: 00040000 00020000 "Config" mtd3: 00040000 00020000 "Bdata" mtd4: 00040000 00020000 "Factory" mtd5: 00040000 00020000 "crash" mtd6: 00040000 00020000 "crash_syslog" mtd7: 00080000 00020000 "reserved0" mtd8: 00400000 00020000 "kernel0" mtd9: 00400000 00020000 "kernel1" mtd10: 02000000 00020000 "rootfs0" mtd11: 02000000 00020000 "rootfs1" mtd12: 03600000 00020000 "overlay"
下一步是备份固件,既然已经坏了在路由器寿命里我觉得可能再也不会回到官方系统了,所以跳过了这一步。
可以看到kernel和rootfs都有0和1两个,原文中刷入的分别是kernel1和rootfs0,可是我在刷入rootfs0时有NAND Flash坏块导致的错误,无法刷入。抱着死马当成活马医的心态把对应的包也刷入kernel0和rootfs1,居然神奇的好了。
因此完整的刷入代码为:
nvram set boot_wait=on nvram set uart_en=1 nvram commit mtd write /tmp/uboot.bin Bootloader cd /tmp dd if=MI-3_3.4.3.9-099.trx bs=4194304 count=1 2> /dev/null | dd of=MI-3_3.4.3.9-099.trx.part1 2> /dev/null mtd write MI-3_3.4.3.9-099.trx.part1 kernel0 mtd write MI-3_3.4.3.9-099.trx.part1 kernel1 dd if=MI-3_3.4.3.9-099.trx bs=4194304 skip=1 2> /dev/null | dd of=MI-3_3.4.3.9-099.trx.part2 2> /dev/null mtd write MI-3_3.4.3.9-099.trx.part2 rootfs0 mtd write MI-3_3.4.3.9-099.trx.part2 rootfs1 nvram set flag_last_success=1 nvram commit
刷机有风险,入坑需谨慎~