草庐IT

小米路由器4A千兆版 OpenWRTInvasion 刷机教程

极客点儿 2023-07-01 原文

2023-03-23 补充内容:
最近又入手一台小米路由器4A千兆版,打算通过 CH341A 编程器刷成老毛子的,结果一拆机傻眼了,整个电路板上的芯片和硬件布局都换了。如果最近想刷机的先别着急开刷,先看看这篇文章:小米路由器4A千兆版更换5G芯片和硬件布局后出现的刷机问题

对于不同品牌的路由器刷机基本操作方法都是大同小异,大致可以分为两种方法:

  1. 通过登录路由器后台刷机
  2. 通过 CH341A 编程器刷机

通过登录路由器后台刷机

通过登录路由器后台刷机的步骤一般有三步:

  1. 获取原厂固件的 ssh 登录权限
  2. 刷入 Breed 或者直接刷入第三方路由器固件
  3. 通过 Breed Web 恢复控制台刷入第三方路由器固件

第一步:获取原厂固件的 ssh 登录权限

有些厂商的路由器会提供原厂固件的 ssh 登录权限,有些则需要通过原厂固件漏洞等方式来获取路由器后台登录权限,比如:小米路由器就需要先通过 OpenWRTInvasion 破解路由登录权限。

2023-03-23 补充内容:
小米路由器4A千兆版是利用 2.28.62 版本固件的一个 Shell 命令注入的漏洞,所以要想刷机成功就必须得降级到这个版本(2.28.62 之后的新版本应该是将这个漏洞修复了,我再次通过 OpenWRTInvasion 没获取到 ssh 登录权,所有刷的时候尽量在 2.28.62 这个固件版本下刷机)。

git clone https://github.com/acecilia/OpenWRTInvasion.git
cd OpenWRTInvasion/
pip install -r requirements.txt
python remote_command_execution_vulnerability.py

具体操作步骤可以参考 https://github.com/acecilia/OpenWRTInvasion/ 的方法,等参数配置好之后就可以通过 ssh 或 telnet 的方式登录到路由器后台了。

telnet 192.168.31.1
ssh root@192.168.31.1

第二步:刷入 Breed 或者直接刷入第三方路由器固件

登录到路由器后台就可以通过命令行将第三方路由器固件刷到路由器中了。但是,对于路由器这类的嵌入式设备刷机有很大的可能会变砖。

为了防止我们的路由器有变砖的风险,一般会在刷入第三方路由器固件之前先刷入 Breed

Breed 是国内个人 hackpascal 开发的闭源 Bootloader,也被称为“不死鸟”。

因为有些官方升级固件自带 bootloader,如果从官方固件升级,会导致现有 bootloader 被覆盖。而当 Breed 更新固件时,它会自动删除固件附带的引导加载程序,因此可以防止 Breed 被覆盖。

Breed 拥有以下特性:

  • 实时刷机进度,进度条能准确反映刷机进度
  • Web 页面快速响应
  • 最大固件备份速度,依 Flash 而定,一般能达到 1MB/s
  • 免按复位键进入 Web 刷机模式
  • Telnet 功能,免 TTL 进入 Breed 命令控制台
  • 复位键定义测试功能
  • 固件启动失败自动进入 Web 刷机模式
  • 可自定义位置和大小的环境变量块

由于是闭源,无法进行二次开发,所有支持的设备均由 hackpascal 一人完成。在 2020-10-09 后已经停止版本更新,但官网目前仍然开放所有的 Breed 下载。

一句话概括就是:Breed 是操作系统,第三方路由器固件是应用软件,软件频繁更换和安装不会影响操作系统。

备份分区数据:
刷固件之前最后先将官方固件做一个备份(可选)。

cat /proc/mtd
dd if=/dev/mtd0 of=/tmp/all.bin
dd if=/dev/mtd1 of=/tmp/Bootloader.bin
dd if=/dev/mtd3 of=/tmp/eeprom.bin

下载 Breed:

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

小米路由器4A千兆版的系统里没有 crulscpwget… 这些工具,所以我现将 Breed 在本机上下载好,然后通过 ftp(Linux)或 WinSCP (Windows)的方式传输到路由器系统中。

然后通过 mtd 命令刷入 Breed

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

直接刷第三方路由器固件:

当然可以不刷 Breed,直接刷入第三方路由器固件。例如:小米路由器4A千兆版刷 OpenWRT 固件。

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

找到对应型号:openwrt-21.02.3-ramips-mt7621-xiaomi_mi-router-4a-gigabit-squashfs-sysupgrade.bin

cd /tmp
mtd -e OS1 -r write openwrt-21.02.3-ramips-mt7621-xiaomi_mi-router-4a-gigabit-squashfs-sysupgrade.bin OS1

第三步:通过 Breed Web 恢复控制台刷入第三方路由器固件

当我们刷入 Breed 后就相当于是给路由器装了个操作系统,可以在上面随意刷入第三方路由器固件,一般情况下不会出现变砖的风险。

OpenWRT

一般情况都安装 OpenWRT 或者是魔改后的 OpenWRT,小米路由器本身也是魔改的 OpenWRT
OpenWRT官网下载地址:https://downloads.openwrt.org/releases/21.02.3/targets/ramips/mt7621/
默认账户:root
OpenWRT魔改下载地址:https://download.csdn.net/download/yilovexing/87600550
默认账户:root
默认密码:coolxiaomi

Padavan

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

Padavan官网源码:https://bitbucket.org/padavan/rt-n56u/src/master/
Padavan下载地址:https://opt.cn2qq.com/padavan/
默认账户:admin
默认密码:admin

刷 Padavan 固件。

第二种方法就是通过 CH341A 编程器刷机,由于篇幅的原因这部分内容就留到下次博客了。

有关小米路由器4A千兆版 OpenWRTInvasion 刷机教程的更多相关文章

  1. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  2. ruby - rails 3 redirect_to 将参数传递给命名路由 - 2

    我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use

  3. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  4. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  5. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  6. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  7. ruby-on-rails - Rails - 从命名路由中提取 HTTP 动词 - 2

    Rails中有没有一种方法可以提取与路由关联的HTTP动词?例如,给定这样的路线:将“users”匹配到:“users#show”,通过:[:get,:post]我能实现这样的目标吗?users_path.respond_to?(:get)(显然#respond_to不是正确的方法)我最接近的是通过执行以下操作,但它似乎并不令人满意。Rails.application.routes.routes.named_routes["users"].constraints[:request_method]#=>/^GET$/对于上下文,我有一个设置cookie然后执行redirect_to:ba

  8. ruby-on-rails - 如何在 Rails 中设置路由的默认格式? - 2

    路由有如下代码:resources:orders,only:[:create],defaults:{format:'json'}resources:users,only:[:create,:update],defaults:{format:'json'}resources:delivery_types,only:[:index],defaults:{format:'json'}resources:time_corrections,only:[:index],defaults:{format:'json'}是否可以使用1个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。

  9. ruby - 在 RUBY 上的 PADRINO 框架上使用 RSPEC 进行测试的教程 - 2

    我是Ruby新手,并被要求在我们的新项目中使用它。我们还被要求使用Padrino(Sinatra)作为后端/框架。我们被要求使用Rspec进行测试。我一直在寻找可以指导在Padrino上使用RspecforRuby的教程。我得到的主要是引用RoR。但是,我需要RubyonPadrino。请在任何入门/指南/引用/讨论等方面指导我。如有不妥之处请指正。可能是我没有针对我的问题搜索正确的词/短语组合。我正在使用Ruby1.9.3和Padrinov.0.10.6。注意:我还提到了SOquestion,但它没有帮助。 最佳答案 我没用过Pa

  10. ruby - cucumber 的路由问题 - 2

    我正在使用rails3和cucumber,除了这个小问题,一切都很顺利GivenIamonthe"editautomobile"pageNoroutematches{:controller=>"automobiles",:action=>"edit"}(ActionController::RoutingError)现在路径在paths.rb中设置为edit_automobile_path在routes.rb中我有汽车作为资源,我搭建了它所以请告诉我我遗漏了什么,清楚地定义了路线并且匹配,因为我运行了rake路线并看到了路线。请指出正确的方向 最佳答案

随机推荐