以前用家里闲置的笔记本玩过 lean 的软路由,但是需要电脑一直开着,不适合长期使用,所以我一直希望有一台真正可以刷入相关固件的路由器。相比网件、华硕等路由器,我简单的需求更适合 200 元左右的小米 AC2100。
如何刷机
现在的刷机途径大致有 2 个:
- 利用之前爆出的 CVE-2020-8597 漏洞开启 telnet 和 ssh 刷入 breed 或者 pb-boot,然后刷入想要的固件。
- 利用固件的 SSH 相关漏洞打开 SSH,然后刷入 breed 或者 pb-boot。
由于第一种方法需要较多的额外工具,我选择了第二种方法。
刷入的固件也可以选择 pandvas 或者 Openwrt,现在 Openwrt 已经官方支持了 AC2100,所以刷入相关系统也是方便很多的。
开启 ssh
电脑网口连接 Lan 口,浏览器打开 小米 AC2100 web 管理页面 ,简单设置后登录。
在登录后的页面 F12 打开网页后台,在控制台(Console)复制粘贴如下代码,Enter 执行。
function getSTOK() {
let match = location.href.match(/;stok=(.*?)\//);
if (!match) {
return null;
}
return match[1];
}
function execute(stok, command) {
command = encodeURIComponent(command);
let path = `/cgi-bin/luci/;stok=${stok}/api/misystem/set_config_iotdev?bssid=SteelyWing&user_id=SteelyWing&ssid=-h%0A${command}%0A`;
console.log(path);
return fetch(new Request(location.origin + path));
}
function enableSSH() {
stok = getSTOK();
if (!stok) {
console.error("stok not found in URL");
return;
}
console.log(`stok = "${stok}"`);
password = prompt("Input new SSH password");
if (!password) {
console.error("You must input password");
return;
}
execute(
stok,
`
nvram set ssh_en=1
nvram commit
sed -i 's/channel=.*/channel=\\"debug\\"/g' /etc/init.d/dropbear
/etc/init.d/dropbear start
`
)
.then((response) => response.text())
.then((text) => console.log(text));
console.log("New SSH password: " + password);
execute(stok, `echo -e "${password}\\n${password}" | passwd root`)
.then((response) => response.text())
.then((text) => console.log(text));
}
enableSSH();
在网页上会弹出设置 root 账户密码的弹窗,设置后关闭。
至此已经成功打开 SSH。
上传固件并刷入 Breed 并设置
- 在本机命令行通过 ssh 登录路由器系统,账户为 root,密码即刚刚设置的。
192.168.31.1
是路由器的默认内网 ip 地址。
ssh root@192.168.31.1
- 将本机的 breed 固件传输到
/tmp
目录下,执行如下命令:
nvram set uart_en=1
nvram set bootdelay=5
nvram set flag_try_sys1_failed=1
nvram commit
mtd -r write [上传到tmp目录的固件地址] kernel1
如果路由器在 60 秒内重启则代表刷 BREED 成功(灯会从蓝变橘,最终变蓝进入系统)。成功后拔掉电源,按住 reset 同时接上电源等 10 秒即可。
- 最后,浏览器打开 breed web 管理页面,刷入 Breed 成功。
通过 Breed 刷入 Openwrt
- 进入 breed 后增加环境变量 xiaomi.r3g.bootfw,值为 2。
- 在固件项选择对应的底包,然后上传刷入,后面按照对应固件的提示操作即可
刷砖后恢复小米原厂系统
由于过程中随时存在刷砖的风险,所以去 官方下载页 可以下载使用对应的官方工具刷入官方的 rom 然后重头再来。
Reference
- 永久开启小米/红米 AC2100 TELNET 和 SSH,可升级、降级和恢复出厂
- AX3600/AX1800/AX5/AC2100 官方固件开启 SSH 方法
- AC2100 OpenWrt Guide
- 小米 红米【AC2100】一键刷 BREED【30 秒刷完】小白帅小伙专用 检查坏块 | 无需 Telnet
- breed 刷机红米 AC2100 小米 AC2100 原厂固件官方固
- 红米 AC2100 刷机及固件资源汇总附送 Lean 源码固件
- 红米/小米 AC2100 刷入 r3g breed 以及恢复官方 boot 详细教程
- [AC2100(RM2100)] lienol源码主分支 红米AC2100固件 openwrt21.02 ipv6+文件助手+去广告+简洁主题