更换小米路由器 4A 千兆版的系统

Entropy Tree Lv4

之前购入一台小米路由器用于研究学习。不过由于原生的路由器系统存在封闭、可定制性差的缺点,遂准备将原生系统更换。

其实设备早在距离本文发布将近一年前就已经购入,不过当时还同时购入了另一台机器用于旁路由。

由于路由器本身的配置并不高,相比另一台机器有所欠缺,遂没有把研究更换路由器系统放在首位。

提示:

  • 本文内容可能仅适用于小米路由器 4A 千兆版,系统版本 2.28.65。

  • 路由器刷机需要足够充分的准备,以免造成损失。

准备工作

准备工作分为硬件设备和软件资料等。

硬件设备主要是以下三个

  • 小米路由器 4A 千兆版
  • 网线
  • 个人电脑 (有网口或者用网口扩展器)

软件资料获取如下

  • 访问相关论坛社区等查询该路由器设备的型号版本是否支持刷机。

  • 访问路由器后台管理,查看系统信息。

    本人持有的路由器为小米路由器 4A 千兆版,当前系统版本为 2.28.65,处于可刷机的版本。

    注意:2.30.x 版本与2.28.x 版本存在差异。

    其他型号版本的路由器根据相关的资料判断是否支持刷机。

  • 查询路由器系统的相关资料并选择合适的路由器系统。

    比较知名的路由器系统就有 openWRT、Padavan 等等,可自行选择符合需求的系统。

刷机

刷机阶段主要是根据详细的教程,准备对应的固件、环境和工具等。这里就以小米路由器 4A 千兆版为例,记录下整个刷机过程。

固件下载

固件主要有两个 Breed 和 openWRT/Padavan 等 (本文演示的是 Padavan)

Breed

Breed 是由 hackpascal 开发的闭源 Bootloader,称为“不死鸟”。根据参考资料,这个固件可以避免现有的 bootloader 在从官方固件升级时被覆盖而导致用户失去对设备的自定义和控制能力。

Breed 下载地址:https://breed.hackpascal.net/

适用于小米路由器 4A 千兆版的 Breed 固件:https://breed.hackpascal.net/breed-mt7621-pbr-m1.bin

openWRT

适用于小米路由器 4A 千兆版的 openWRT 固件下载

Padavan

适用于小米路由器 4A 千兆版的 Padavan 固件 下载

开启路由器 SSH

需要提前准备好 python3 环境

一般的家用路由器不会默认开启 SSH 功能,现有的方案是通过破解获取 SSH 的功能。破解的方案借助了 OpenWRTInvasion 项目。

下载项目

1
git clone https://github.com/acecilia/OpenWRTInvasion.git

安装依赖

注意 python 的版本,本人使用的是 3.10.4 版本

1
2
cd OpenWRTInvasion
pip install -r requirements.txt

执行脚本

1
python remote_command_execution_vulnerability.py

输入路由器管理后台密码以及管理后台页面 url 地址上的 stok 值,会看到如下输出

使用其输出的 ssh 命令或其他命令连接到路由器,看到以下内容则表示连接成功

备份原始固件

为了避免出现无法还原系统的问题,建议刷机之前将官方原始固件备份。

路由器固件一般存储在 MTD (Memory Technology Device) 分区上,通常在 /proc/mtd 文件中可以看到所有 MTD 分区的信息。

1
cat /proc/mtd

输出的示例参考如下

1
2
3
4
5
6
7
8
9
10
11
12
dev:    size   erasesize  name
mtd0: 01000000 00010000 "ALL"
mtd1: 00030000 00010000 "Bootloader"
mtd2: 00010000 00010000 "Config"
mtd3: 00010000 00010000 "Bdata"
mtd4: 00010000 00010000 "Factory"
mtd5: 00010000 00010000 "crash"
mtd6: 00010000 00010000 "cfg_bak"
mtd7: 00100000 00010000 "overlay"
mtd8: 00d00000 00010000 "OS1"
mtd9: 00b30000 00010000 "rootfs"
mtd10: 00180000 00010000 "disk"

这些文件都位于 /dev 目录下,每一个文件就是一个 MTD 分区,存储了重要的固件信息。

对于分区级别的备份,建议使用 dd 命令实现完整克隆。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cd /tmp
mkdir backupB9AD
cd backupB9AD
dd if=/dev/mtd0 of=/tmp/backupB9AD/mtd0-ALL.bin
dd if=/dev/mtd1 of=/tmp/backupB9AD/mtd1-Bootloader.bin
dd if=/dev/mtd2 of=/tmp/backupB9AD/mtd2-Config.bin
dd if=/dev/mtd3 of=/tmp/backupB9AD/mtd3-Bdata.bin
dd if=/dev/mtd4 of=/tmp/backupB9AD/mtd4-Factory.bin
dd if=/dev/mtd5 of=/tmp/backupB9AD/mtd5-crash.bin
dd if=/dev/mtd6 of=/tmp/backupB9AD/mtd6-cfg_bak.bin
dd if=/dev/mtd7 of=/tmp/backupB9AD/mtd7-overlay.bin
dd if=/dev/mtd8 of=/tmp/backupB9AD/mtd8-OS1.bin
dd if=/dev/mtd9 of=/tmp/backupB9AD/mtd9-rootfs.bin
dd if=/dev/mtd10 of=/tmp/backupB9AD/mtd10-disk.bin

注意文件写入等操作只能在 /tmp 目录下完成,在其他位置写入会提示系统只读。

备份完成后,将备份文件下载到本地

1
rsync -avz -e "ssh -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-rsa -c 3des-cbc -o UserKnownHostsFile=/dev/null" root@miwifi.com:/tmp/backupB9AD/ ./backupB9AD

上传新固件

上传 Breed 固件

1
rsync -avz -e "ssh -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-rsa -c 3des-cbc -o UserKnownHostsFile=/dev/null" breed-mt7621-pbr-m1.bin root@miwifi.com:/tmp/

检查文件 md5 值是否为 24e62762809c15ba3872e610a37451a3,这一步是为了确保文件传输完整。md5 列表清单可参考 https://breed.hackpascal.net/md5sum.txt

刷入 Breed 固件并自动重启

1
mtd -r write /tmp/breed-mt7621-pbr-m1.bin Bootloader

使用网线将路由器的 LAN 口与电脑连接,访问 192.168.1.1 可以看到如下页面

如果不能访问,请在断开电源和没有其他 WAN/LAN 口连接的情况下,按住路由器的 reset 按钮并重新接入电源 5-10 秒后再松开 reset 按钮

在固件更新页面上传前面下载的 Padavan 固件

上传完后点击更新,等待完成固件更新

访问 Padavan 系统的默认网关:192.168.123.1,网页会要求输入用户名和密码

用户名和密码默认均为 admin

wifi 名称为 PDCN 或 PDCN_5G

wifi 密码默认为 1234567890

看到如下页面即表示成功

将设备连接到 PDCN 或 PDCN_5G,测试能否上网。

后续

一些可能有用的初步设置

自定义连接设备的名称

在 “高级设置” ── “内部网络” ── “DHCP 服务器” 中手动指定 IP 的 DHCP 列表,找到对应设备的 MAC 地址,并修改主机名,点击右侧的 + 号即可。

参考 https://www.right.com.cn/FORUM/forum.php?mod=viewthread&tid=4047691

启用 SSH

在 “高级设置” ── “系统管理” ── “服务” 中可在终端服务里启用 SSH 服务。

其他设置和更多的用法等可自行上网搜索研究。

参考资料

小米路由器4A千兆版 折腾记录 完美刷入官方openwrt 2022-08-09更新

(出处: 恩山无线论坛)

小米路由器4A千兆版刷openWRT保姆级教程

【路由器】Breed 介绍、刷入和使用

小米路由器4A千兆版(xiaomi-R4A)刷breed以及其它系统

Padavan老毛子固件玩法入门

老毛子系统使用说明(padavan & PDCN)

  • 标题: 更换小米路由器 4A 千兆版的系统
  • 作者: Entropy Tree
  • 创建于 : 2024-10-04 11:13:13
  • 更新于 : 2024-10-04 11:24:43
  • 链接: https://www.entropy-tree.top/2024/10/04/flash-the-xiaomi-router/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论