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

环境

  • 电脑 Win/Mac/Linux
  • 小米路由器4A 千兆版
  • Python3 环境
  • 网线

工具&固件

下面演示用到的工具和固件都可以在文末打包获取。

  • OpenWRTInvasion

    针对多款小米路由器的 root shell 漏洞:4A 千兆、4A 百兆、4C、3Gv2、4Q、miWifi 3C......

  • Breed(不死鸟)

    Breed 是由 HackPascal 开发的 Bootloader(引导装载程序),最大的特点是支持通过访问网页刷机,刷机失败后可以直接重置而不会导致机器变砖。

    小米路由器4A 使用的 CPU 是 mt7621,可以在 https://breed.hackpascal.net/ 下载,名称为 breed-mt7621-pbr-m1.bin

  • openWRT

准备Python3

去Python官网下载安装Python3,

安装完Python后执行安装pip和需要的依赖

shell 复制代码
python3 -m pip install --upgrade pip  # 升级最新的pip
pip install pycryptodome
pip install requests

刷机

1.开启SSH

需要先开启路由器的 SSH,小米的固件只有开发版支持 SSH,但是现在所有的版本基本都不会放出开发版;所以只能通过破解的方式开启(开启后不支持保修);

因为小米路由器系统存在 CVE-2019-18370 漏洞,所以可以通过该漏洞开启 SSH;需要使用项目 acecilia/OpenWRTInvasion 提供的脚本工具,我已经下载好放链接🔗里了,当然有Git环境也可以自己从项目 acecilia/OpenWRTInvasion 拉取;

  • 获取最新工具(直接用博主提供的懒人工具包的可忽略此步)
bash 复制代码
git clone https://github.com/acecilia/OpenWRTInvasion.git
  • 安装依赖
shell 复制代码
cd OpenWRTInvasion
pip3 install -r requirements.txt
  • 执行脚本

    通过 WiFi 或有线的方式连接到路由器,然后进入命令行,执行以下命令,运行 remote_command_execution_vulnerability.py 脚本;执行脚本时需要输入路由器的地址和后台访问密码;地址如果没有改动默认就是 192.168.31.1,或者访问 miwifi.com也可以直接访问到;如果选择了离线模式,会在本地启动一个 ftp server

  • 登录

开启SSH访问权限后我们在命令行执行telnet登录,用户名密码都是root

shell 复制代码
telnet 192.168.31.1
# 通过ssh也可 ssh root@192.168.31.1

2.备份原厂固件

在开刷之前我们一定要先对设备的原厂固件进行备份,防止后期变砖或者无法刷回小米路由。

shell 复制代码
cat /proc/mtd&&dd if=/dev/mtd0 of=/tmp/all_backup.bin
#或者依次执行下面命令 自选备份Bootloader和eeprom
cat /proc/mtd
dd if=/dev/mtd0 of=/tmp/all_backup.bin
dd if=/dev/mtd1 of=/tmp/Bootloader.bin
dd if=/dev/mtd3 of=/tmp/eeprom.bin

执行后文件会存在tmp目录,备份all_backup.bin文件,大小约为16M,非常重要,后面如果恢复原厂固件需要用到!!!

3.刷入breed(不死鸟)

上传breed-mt7621-pbr-m1.binftp://192.168.31.1/tmp/

对比MD5

shell 复制代码
cd /tmp
md5sum breed-mt7621-pbr-m1.bin

期望MD5:24e62762809c15ba3872e610a37451a3**,如果不一样请重新上传文件,防止变砖刷不回!

确认以上步骤!至少备份固件 all_backup.bin 16MB !上传 breed.bin 均完成后!

刷入breed!在telnet中输入 mtd write /tmp/breed-mt7621-pbr-m1.bin Bootloader 这一步完成后会断网,很快。需要用网线,将网线插入wan口(你原来光猫接到路由器的口,拔下来用连电脑的网线插进去)在浏览器中输入 192.168.1.1 ,如果能进入breed后台,就可以随便造了。

如果没能进入breed后台,请将路由器断电,先按住复位键不放,然后路由器通电,等5到10秒钟松开复位键,浏览器输入192.168.1.1就能进入breed后台,以后想换固件也是这样进。

4.刷openWRT

在刷入openwrt前,我们先在固件备份中备份 编程器固件 以及 EEPROM!然后点固件更新->常规固件,选择固件(你准备好的openwrt.bin固件或其他固件),选择你刚刚备份的 EEPROM 文件,这两个选好后,点上传,等待上传完成后会自动重启,在浏览器输入192.168.31.1等着就行。接下来的用户名和密码大概率为 root/password 如果不对,请询问固件作者。

至此,恭喜你的设备已成功刷完openWRT!!!

刷回官方

将连接电脑的网线插入路由器wan口,将路由器断电,然后按住复位键不放,路由器通电,等5到10秒钟松开复位键,浏览器输入192.168.1.1进入breed后台。选择固件更新->编程器固件,选择上文备份的 all_backup.bin 16MB 确认勾选自动重启,取消勾选保留现有Bootloader,取消勾选 保留现有EEPROM 点上传,等待一会后,192.168.31.1会变回原来的小米路由器后台,并且失去breed,如果想再刷需要重新解锁telnet以及重新刷入breed

OpenWRT固件源相关

  • OpenWRT

    一般情况都安装 OpenWRT 或者是魔改后的 OpenWRT,小米路由器本身也是魔改的 OpenWRT。

    OpenWRT官网下载地址:https://downloads.openwrt.org/releases/21.02.3/targets/ramips/mt7621/

    默认账户:root

  • OpenWRT魔改

    可以使用 unkaer/Actions-OpenWrt-Xiaomi-R4A 自行构建(需要一个多小时),会预先安装中文和部分常用软件,实测可以正常工作。

  • Padavan

    据说小米路由器使用老毛子固件更稳定,我也没有具体去考证,也不知道是不是真的。反正我是比较喜欢用 Padavan,无论是界面还是稳定性都不错(还有个使用老毛子的原因是 2022-07-24 Breed 进行了重大更新,OpenWrt 不再支持直接用底包刷固件了。)!Padavan官网源码:https://bitbucket.org/padavan/rt-n56u/src/master/

    Padavan下载地址:https://opt.cn2qq.com/padavan/

    默认账户:admin

    默认密码:admin

Ps:原厂固件xiaomi_mi-router-4a-gigabit-squashfs-sysupgrade.bin

conf 复制代码
#版本号改23.05.4成你自己的,在luci状态界面查看版本或者命令: cat /etc/openwrt_*
src/gz openwrt_core http://mirrors.ustc.edu.cn/openwrt/releases/23.05.4//targets/ramips/mt7621/packages                           
src/gz openwrt_base http://mirrors.ustc.edu.cn/openwrt/releases/23.05.4//packages/mipsel_24kc/base                                
src/gz openwrt_luci http://mirrors.ustc.edu.cn/openwrt/releases/23.05.4//packages/mipsel_24kc/luci                                
src/gz openwrt_packages http://mirrors.ustc.edu.cn/openwrt/releases/23.05.4//packages/mipsel_24kc/packages                        
src/gz openwrt_routing http://mirrors.ustc.edu.cn/openwrt/releases/23.05.4//packages/mipsel_24kc/routing                                                      
src/gz openwrt_telephony http://mirrors.ustc.edu.cn/openwrt/releases/23.05.4//packages/mipsel_24kc/telephony 

懒人工具包:

链接: https://pan.baidu.com/s/1RyR5qFUYYUDy5fzsmZL1tg?pwd=np9a 提取码: np9a

--来自百度网盘超级会员v8的分享

进阶:

配置zerotier

注册zerotier账号 - 新建network - 复制network id

配置config

config目录:/etc/config/zerotier 内容:

CODE
config zerotier sample_config
        option enabled 0

        # persistent configuration folder (for ZT controller mode)
        #option config_path '/etc/zerotier'

        #option port '9993'

        # Generate secret on first start
        option secret 'generate'

        # Join a public network called Earth
        list join '8056c2e21c000001'

我们需要改两处内容,option enabled 01 启用, list join '8056c2e21c000001'80xxxxx 内容改为你的 network id

改好保存后可以重启一次路由,如果你的zerotier network是私有的(Private),需要在zerotier后台勾选上你的设备。

配置网段

Interfaces 接口中添加类似 ztr2q3rmku 这样的接口,并新建配置一个防火墙。

将防火墙设置为全部允许,并添加转发目标 wan

在zerotier后台添加路由表:

你设备的网段 zerotier分配给设备的ip
192.168.110.0/24 172.22.11.22
192.168.31.0/24 172.22.11.22
192.168.41.0/24 172.22.11.23

以上表有两个 openwrt 设备,ip 分别是 172.22.11.22 / 172.22.11.23 ,而 172.22.11.22 有两个网段,分别是 192.168.110.0/24 / 192.168.31.0/24 那我就可以通过另一个设备,连上zerotier后 直接访问 192.168.110.2,192.168.110.3 这样的设备,以及 192.168.31.1 这两个网段中的所有设备。

结语:

有很多地方都略过了,比如zerotier后台的一些操作,这些网上都有,我以前的文章页写过,这里就不多赘述了。如果后面有空,会再讲讲自构建你的openwrt,因为像这个小米路由器4a千兆版有很多ipk其实都不支持,需要自己编译。

相关推荐
RedWolf199920 天前
树莓派刷入OpenWrt后扩容overlay的方法
树莓派·overlay·openwrt
锦夏挽秋25 天前
小米路由器R3Gv2安装openwrt记录
openwrt
leoppeng1 个月前
openwrt-1 安装、扩容、基本设置
linux·运维·服务器·openwrt
zhouwu_linux1 个月前
MT76X8、MT7621和MT7981 接NOR FALSH分区表
linux·智能路由器·openwrt
vv12345.site2 个月前
电脑安装OpenWRT系统
运维·服务器·电脑·openwrt
第四维度42 个月前
【IPV6从入门到起飞】2-1 获取你的IPV6(手机、CPE等)
python·termux·openwrt·ipv6·cpe
Kasen's experience2 个月前
Openwrt 安装 AX210 无线网卡
wifi·openwrt·ax210
Kasen's experience2 个月前
openwrt 原版系统个人优化
openwrt
极客小张2 个月前
在 OpenWrt 上部署 Flask 应用的详细步骤,包括环境配置、数据库集成及开机自启设置教程
服务器·数据库·后端·python·物联网·flask·openwrt
Undefined4432 个月前
斐讯 N1 刷机记录
openwrt