须知:本方案仅支持小米路由器 4a 千兆版 v1 版,即固件版本为
2.28.x的小米路由器 4a 千兆版路由器
根据小米路由器 4a 千兆版 2.28.62 版本固件中的配置备份/恢复漏洞获取 RootShell,在 RootShell 中刷入 OpenWRT
-
网线一条
-
linux 电脑一台
本文以 manjaro 系统为例
-
安装 Git
pacman -Sy git -
安装 Python3
pacman -Sy python3 -
克隆项目代码
git clone https://github.com/devcxl/R4AG-OpenWRT.git -
进入 R4AG-OpenWRT 目录创建 Python venv 环境
cd R4AG-OpenWRT && python3 -m venv .env && source .env/bin/activate -
安装依赖
pip3 install -r requirements.txt
在小米 wifi 后台手动更改固件为项目目录中的
firmwares/miwifi_r4a_firmware_72d65_2.28.62.bin固件
-
启动新终端启动本地 http 服务器
uvicorn main:app --host 0.0.0.0 --port 8000 -
获取本机内网 IP
ifconfig以
192.168.31.123为例 -
修改
files文件夹中的script.sh和speedtest_urls.xml将文件中的 ip 替换为本机内网 IPsed -i 's/192.168.31.123:8000/192.168.31.115:8000/g' files/script.shsed -i 's/192.168.31.123:8000/192.168.31.115:8000/g' files/speedtest_urls.xml -
登陆路由器后台获取
stok地址栏中的链接示例
stok为6cb7bf8731d8ffcd4e0d71d752178a0ehttp://miwifi.com/cgi-bin/luci/;stok=6cb7bf8731d8ffcd4e0d71d752178a0e/ -
修改
run.py脚本中的stok值为当前stok -
运行
run.pypython3 run.py -
当执行
uvicorn main:app --host 0.0.0.0 --port 8000的终端出现以下内容时,RootShell 获取成功INFO: 192.168.31.1:42678 - "GET /ping HTTP/1.1" 200 OK INFO: 192.168.31.1:34062 - "GET /files/busybox-mipsel HTTP/1.1" 200 OK INFO: 192.168.31.1:44882 - "GET /files/dropbearStaticMipsel.tar.bz2 HTTP/1.1" 200 OK -
此时可以使用
telnet命令连接路由器telnet 192.168.31.1- 账号
root - 密码
root
- 账号
-
下载OpenWRT镜像
cd /tmp && curl -L http://192.168.31.123:8000/files/openwrt-22.03.5-ramips-mt7621-xiaomi_mi-router-4a-gigabit-squashfs-sysupgrade.bin --output firmware.bin -
刷入镜像
mtd -e OS1 -r write firmware.bin OS1 -
等待路由器重启后,使用网线连接路由器
-
使用OpenSSH连接
192.168.1.1ssh root@192.168.1.1 -
ssh连接成功即OpenWRT刷入成功
-
-
更换软件镜像源
sed -i 's/downloads.openwrt.org/mirrors.ustc.edu.cn\/openwrt/g' /etc/opkg/distfeeds.confopkg update
-
安装汉化/美化主题
opkg install luci-i18n-base-zh-cn luci-theme-material
-
开启wifi
- todo
-
安装wireguard组网
- todo