小米/红米AC2100刷Openwrt方法

小米/红米AC2100刷Openwrt方法

2021/9/8最新消息:

Openwrt官方已经从21.02.0版正式支持小米/红米AC2100。官网下载地址:

https://downloads.openwrt.org/releases/

更新说明:因为采用了DAS构架,从19升级要强制,而且以前的设置备份无法用。我没有那么升级,我再写了一遍,需要再设置。注意从openwrt写盘,盘名不一样了。

从openwrt写盘命令:

	mtd write /tmp/xxx-kernel1.bin kernel
	mtd -r write /tmp/xxx-rootfs0.bin ubi

从小米厂家rom写盘命令:

	mtd write /tmp/xxx-kernel1.bin kernel1
	mtd -r write /tmp/xxx-rootfs0.bin rootfs0

注意上面根据你自己的文件名做相应更改。

----------------------------------------------------------------------

这也是我之前刷机的记录,参考了恩山论坛a76yyyy等归纳的方法而实践。

1. 基本思路:利用官方固件的漏洞,通过Web注入漏洞开启SSH实现刷机。

2. 材料准备:有两方面的内容准备,带漏洞的rom和Openwrt rom。

第一方面:带漏洞的官方固件,只有一个版本的固件有漏洞,版本号为AC2100 2.0.7*版本。之后的版本漏洞已经修复,要刷机需要降级到带漏洞的版本(有人说是小米有意无意放出的那么一个版本,反正国际上一大堆玩小米路由的玩家)。降级只需用官方更新方法手动刷入即可。带漏洞的版本在官方网站上下载:

红米RM2100:http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/rm2100/miwifi_rm2100_firmware_d6234_2.0.7.bin
小米R2100:http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/r2100/miwifi_r2100_firmware_4b519_2.0.722.bin

第二方面:需要刷入的Openwrt rom。有各种各样的版本,我用了一个半官方的由Philipp Schuster等适配编译的版本,目前还在适配开发阶段,据他说估计要到下一个版本号才会签升为Openwrt官方版。(已经签升为官方版,从21.02.0版起支持,如下早期版本无更新了。)

下载地址:https://drive.google.com/drive/u/0/folders/1WTWvOp-6B54hsCDpuo_hf2JKAaUwmZFG

开发讨论的论坛地址:

有一大帮国际玩家云集,Schuster版本地址也在那里。

只需三个文件如:

openwrt-ramips-mt7621-xiaomi_mi-router-ac2100-squashfs-kernel1.bin

openwrt-ramips-mt7621-xiaomi_mi-router-ac2100-squashfs-rootfs0.bin

openwrt-ramips-mt7621-xiaomi_mi-router-ac2100-squashfs-sysupgrade.bin

先刷入前面两个文件,之后用sysupgrade.bin更新一下即可。

3. 漏洞注入:降级到漏洞版本后,通过下面web命令开启SSH。

3.1 使用管理密码登录管理页面,登录后地址栏链接应为:

http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/web/home#router

这里的关键是<STOK>号,每台机器不同,甚至每次登录都不同,拷贝下来备用。

3.2 在浏览器地址栏中输入以下链接代码,注意替换掉<STOK>部分:

http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20nvram%20set%20ssh_en%3D1%3B%20nvram%20commit%3B%20sed%20-i%20's%2Fchannel%3D.*%2Fchannel%3D%5C%22debug%5C%22%2Fg'%20%2Fetc%2Finit.d%2Fdropbear%3B%20%2Fetc%2Finit.d%2Fdropbear%20start%3B

返回{"code":0}即代表成功,如果返回401错误,原因可能是版本不正确或者<STOK>值错误或者链接输入不完整等。

root密码请自行根据SN计算;不想计算的或不知道怎么计算的,可以更改管理员root密码的方式得到(此法更方便)。

3.3 更改管理员root密码的方法:通过如下命令更改root密码为admin,在浏览器地址栏中输入以下链接代码,注意替换掉<STOK>部分(有时stok值会发生改变,建议重新返回登录页面复制最新的stok值):

http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20echo%20-e%20'admin%5Cnadmin'%20%7C%20passwd%20root%3B

重启即可开启SSH,建议一键注入后需等待一些时间,保证路由器后台能正确处理注入信息后再重启。

4. 登录SSH进行刷机:

4.1 重启后,通过winscp登录192.168.31.1用户为root密码为刚才改过的admin。先把openwrt的两个rom文件(xxx-kernel1.bin和xxx-rootfs0.bin)上传到路由器tmp目录。

4.2 再用putty登录192.168.31.1进行刷机操作,输入如下命令进行刷机:

	nvram set uart_en=1&&nvram set bootdelay=5&&nvram set flag_try_sys1_failed=1&&nvram commit
	mtd write /tmp/xxx-kernel1.bin kernel1
	mtd -r write /tmp/xxx-rootfs0.bin rootfs0

注意上面rom文件的文件名,把xxx替换成你自己用的rom文件名。

刷完后将重启,刷机大功告成,之后便是openwrt路由的设置了。

编辑于 2021-09-12 22:29