目录

小米路由器4A刷openwrt

闲逛看到 openwrt 支持小米路由器 4A,并且现在 4A 的二手价格十分美丽,遂决定淘一个二手小米路由器 4A 刷 openwrt,解放目前在使用的树莓派。

Serial 刷机已不可用

我淘到的小米路由器 4A 生产时间是 2019.6,固件版本为 2.18.51。一开始,我按照 openwrt 官网给出的方法——拆机连接 serial。但是发现有两个问题:

  1. serial 连接的 TX 一直是高电平,无法发送数据给路由器,也就没有办法在出现启动选项时进行选择;
  2. serial 连接时给路由器上电,路由器不能正常启动,表现在启动时路由器电源灯应为橙色,但却是低亮度的蓝色,serial 收到一个字节数据后再无数据。这样当路由器上电、电源灯变为橙色后再连接 serial,也来不及在 “Erasing SPI Flash…” 后及时断开电源;

想来是小米在这个版本的固件里已经封堵了 serial 刷机。

利用远程代码执行漏洞刷机

几经周折后,在 github 发现了 acecilia/OpenWRTInvasion 这个项目。该项目利用小米路由器固件的漏洞 CVE-2019-18370 执行 shell 开启 telnet,在 telnet 连接中刷机。亲测 2.18.51 版本固件可以利用。

首先按照项目 readme 文件所述准备好运行环境,并需要让路由器有互联网连接。运行脚本时,需要填写路由器的 IP 地址和 stok 参数。stok 参数是一个认证 token,登录路由器管理 web,在 url 中可以获取。

telnet 开启成功后,使用 telnet 登录路由器,用户名为 root,无密码。

进入 /tmp 目录,从 openwrt 官网下载最新固件(当前最新版本为 19.07.3)

1
2
cd /tmp
curl http://downloads.openwrt.org/releases/19.07.3/targets/ramips/mt76x8/openwrt-19.07.3-ramips-mt76x8-xiaomi_mir4a-100m-squashfs-sysupgrade.bin --output firmware.bin

为了保证不会刷成砖头,下载完成后验证文件 md5,结果应该是 3ff6d8a909cb24c6a5ccada57a894a26

1
md5sum firmware.bin

刷固件(非常建议操作前先备个份)

1
mtd -r write /tmp/firmware.bin OS1

完成后重启路由器,openwrt 就刷好了。

个人体验

和树莓派相比,4A 在 openwrt 的管理后台加载数据时要慢一些。但毕竟 4A 的配置和价格摆在那,还有 5G WiFi,总体来说还是比较满意。

参考链接