(博主已更换小米路由器 Pro,也就是 R3P)
本教程同时适用于 小米路由器 4A 以及其千兆版
Attention: 本教程莽夫(博主我)专用,因为没刷不死breed,直接刚,建议其他使用者还是安排一下breed
缘由
作为一只攻城狮,开发的时候经常要下一堆lib,然而很多依赖都在国外,虽然也有国内的源,但是也常用例外情况,因此下载依赖时比较慢;(所以,懂我意思吧)
然后我并不想在挂客户端,并且要局域网都能用,因此就产生了这个想法
路由器固件切换
1.无法切换固件?
咳咳...我特地查询了下,我的路由器是 “小米路由器4A(R4AC)” 并不支持切换固件,而且也没用 USB 插槽,于是我产生了拆开直接刷的冲动;实际上也拆了,但是发现不大好操作。
2.那是不可能的!
经过我仔细地搜索伟大的互联网,发现了一位 github 的大佬给出了解决方案(非常感谢这位大佬)
该解决方案是通过小米路由器登录后产生的 stock 值来进入路由器进行操作
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 值
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
刷写过程中请勿触碰路由器或断电,以免变砖,刷写完成以后会重启
等待重启以后即可进入 web 管理界面,路由器默认信息如下
192.168.1.1 # 路由器地址
root # 用户名
password # 密码(与 ssh 密码相同,自行更改)
进入 WEB 管理界面以后
我编译固件的时候,选择的 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 以及其千兆版