FunnyWeb

据说这里有很多神奇的东西...

有flash坏块的小米路由器3刷入padavan

2019-03-04 14:00:523813 views

本次实验中所使用的小米路由器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

刷机有风险,入坑需谨慎~