本教程同时适用于 小米路由器 4A 以及其千兆版

缘由

作为一只攻城狮,开发的时候经常要下一堆lib,然而很多依赖都在国外,虽然也有国内的源,但是也常用例外情况,因此下载依赖时比较慢;(所以,懂我意思吧)
然后我并不想在挂客户端,并且要局域网都能用,因此就产生了这个想法

路由器固件切换

1.无法切换固件?

咳咳...我特地查询了下,我的路由器是 “小米路由器4A(R4AC)” 并不支持切换固件,而且也没用 USB 插槽,于是我产生了拆开直接刷的冲动;实际上也拆了,但是发现不大好操作。

2.那是不可能的!

经过我仔细地搜索伟大的互联网,发现了一位 github 的大佬给出了解决方案(非常感谢这位大佬)
该解决方案是通过小米路由器登录后产生的 stock 值来进入路由器进行操作
readme-001.png

3.打通路由器命令行通道

具体的操作请前往 https://github.com/acecilia/OpenWRTInvasion 查看
需要注意的是,使用该工具请在先在操作的设备上准备好 Python3 环境、telnet 以及 git ,
Windows 10 系统的话,可以直接打开 WSL(ubuntu 18.04 以上) 操作,如下

# 克隆仓库
git clone https://github.com/acecilia/OpenWRTInvasion.git
# 进入目录
cd OpenWRTInvasion
# 安装依赖
pip3 install -r requirements.txt

然后再执行

python3 remote_command_execution_vulnerability.py

根据提示,输入路由器 IP 地址(小米路由器默认一般是 192.168.31.1 )和登录后产生的 stock 值
20201009212356.png

4.链接到路由器命令行

上述操作完成后,可尝试执行如下指令

telnet 路由器 IP 地址

如果连接被拒绝,可多尝试几次,或者重启路由器并重复第3步

5.固件切换

进入到路由器命令行通道以后,执行如下

# 进入到临时目录
cd /tmp
# 下载固件
curl https://raw.githubusercontent.com/yeliulee/openwrt-ramips-mt76x8-xiaomi_mir4a/main/mt76x8/openwrt-ramips-mt76x8-xiaomi_mir4a-100m-squashfs-sysupgrade.bin --output firmware.bin
# 校验固件完整性 (具体看下面仓库)
./busybox sha256sum firmware.bin
# 如校验和一致,则刷入硬件
mtd -e OS1 -r write firmware.bin OS1

20201009222304.png

刷写过程中请勿触碰路由器或断电,以免变砖,刷写完成以后会重启

20201009222808.png

等待重启以后即可进入 web 管理界面,路由器默认信息如下

192.168.1.1 # 路由器地址
root # 用户名
password # 密码(与 ssh 密码相同,自行更改)

进入 WEB 管理界面以后

20201009222605.png

我编译固件的时候,选择的 luci 的 material 主题(官方默认主题比较辣眼),有其他需求的可自行编译固件

固件仓库

lean 的 openwrt/lede 项目仓库 (感谢大佬)
仓库地址 https://github.com/coolsnowwolf/lede (可自行根据该源码为其他硬件定制并自行编译固件)

本文中的主角,为 小米路由器 4A (R4AC) 刷入 lean 的 openwrt/lede ,仓库中仅包含编译结果(已内置必需组件);
仓库地址 https://github.com/yeliulee/openwrt-ramips-mt76x8-xiaomi_mir4a
本固件同时适用于 小米路由器 4A 以及其千兆版

文章目录