
最近暑假准备入手一台比较便宜的路由器用来刷Openwrt,实现一些路由器功能自定义。原本使用的华为AX3 Pro受制于芯片等原因,尽管社区有人在讨论可行性,可惜结果是暂时无法刷机。
这次选择的是Xiaomi Redmi Router AC2100,搭载了一颗联发科MT7621芯片,32位880MHz双核,虽然芯片支持USB 3.0,5端口千兆以太网,不过设备只导出了1个WAN口和3个LAN口。内存有128MB,装上一些插件后仅可用10-20MB,算是比较吃紧。闪存使用的是ESMT的128MB闪存颗粒,实测没有坏块,不过听过部分用户收到的是东芝带有坏块的颗粒,这里需要注意。
在某东购买时领了30元券,实付139,上午下单下午就送达了。
刷机步骤
本文参考自Openwrt官方WiKi:Xiaomi Redmi Router AC2100,并实测有效,需要的全部文件:
- 小米路由器修复工具(http://bigota.miwifi.com/xiaoqiang/tools/MIWIFIRepairTool.x86.zip)
- 路由器2.0.23官方固件(http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/rm2100/miwifi_rm2100_all_fb720_2.0.23.bin)
- Openwrt快照固件(https://downloads.openwrt.org/snapshots/targets/ramips/mt7621/openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin,https://downloads.openwrt.org/snapshots/targets/ramips/mt7621/openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-rootfs0.bin)
上电后连接默认WiFi或者有线连接,会自动跳转到miwifi.com配置界面,如果页面底部提示的系统版本非2.0.23
的话,需要先用小米WiFi官网下载的路由修复工具去刷机,刷机流程在修复工具中有说明。
接下来就需要进行网络配置,似乎无线桥接会在扫描WiFi时返回502,应该是系统的问题。因此这里我把小米路由的WAN连接到华为的LAN口,自动配置好网络后需要设置登录密码,似乎无法在配置好网络前设置密码。
设置完登录密码,我们登录后台,此时你的URL应为:
1 | http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/web/home#router |
<STOK>
是一个用来鉴权的字符串,每个人应该不同。在同一网页下,我们打开浏览器调试工具(快捷键F12),选择Console,复制下面的代码并回车:
1 | function getSTOK() { |
这里会弹窗让你设置SSH密码(8位字母数字组合,勿使用特殊字符),并启动SSH服务器。实际上这里是利用了RCE漏洞,执行了以下代码:
1 | nvram set ssh_en=1; |
和
1 | echo -e "<PASSWORD>\n<PASSWORD>" | passwd root |
如果需要执行其他代码可以自行替换URL编码好的代码:
1 | http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%0A<your encoded shell code>%0A |
此时,你的路由器上的SSH服务器应该已经被启动,root用户的密码也被设置成了你指定的密码。我们打开终端输入ssh root@192.168.31.1
连接上去即可,密码是刚刚设置的密码。
在shell中,我们执行下面的命令:
1 | Enable uart and bootdelay, useful for testing or recovery if you have an uart adapter! |
这里我们启用了UART和延迟启动来方便调试。
下面我们需要把从Openwrt的网站上下载的固件传到路由器上传,如果你是Linux且自带了scp,在固件文件夹下面执行下面的两条命令:
1 | scp openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin root@192.168.31.1:/tmp |
如果是Windows安装了PSCP,替换ROUTERPW为之前设置的密码:
1 | pscp -scp -P 22 -pw ROUTERPW openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin root@192.168.31.1:/tmp |
或者你也能在路由器上直接下载固件:
1 | cd /tmp |
成功将两个文件放到/tmp
下后就可以刷机了,通过SSH连接上路由器,执行:
1 | cd /tmp |
切换到文件所在目录。
1 | mtd write openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin kernel1 |
刷入内核。
1 | mtd -r write openwrt-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-rootfs0.bin rootfs0 |
刷入根文件系统。
这条命令执行完成后,路由器会重启,并成功进入Openwrt系统。
安装LuCI
由于我们使用的是快照版本,需要手动安装去安装网页管理界面。连接AC2100的WAN口到上级路由器的LAN口,再用第二根网线连接电脑和路由器,SSH连接上路由器。此时路由器IP已经变为192.168.1.1
,用户名root
,无密码。
安装LuCI我们执行下面的命令:
1 | root@OpenWrt:~# opkg update |
安装汉化包我们执行下面的命令:
1 | root@OpenWrt:~# opkg install luci-i18n-base-zh-cn |
之后浏览器访问路由器IP就能配置了。
- 本文标题:红米AC2100路由器刷Openwrt
- 本文作者:LI Rui
- 创建时间:2021-07-13 16:43:25
- 本文链接:https://www.lirui.tech/post/2021/10ef05b32a8c.html
- 版权声明:本博客所有文章除特别声明外,均采用 BY-SA 许可协议。转载请注明出处!