|
本帖最后由 友谊 于 2022-8-9 16:41 编辑
相关教程链接
https://www.right.com.cn/forum/f ... tra=page%3D1&page=1
https://www.right.com.cn/forum/f ... ypeid%26typeid%3D55
我买到的路由器的固件版本是:MiWiFi 稳定版 2.28.65
准备工作:
1.下载breed
这个是开发BREED的作者的帖子
https://www.right.com.cn/forum/thread-161906-1-1.html
这个是BREED下载地址
https://breed.hackpascal.net/
小米路由器4a千兆版用的是这个
https://breed.hackpascal.net/breed-mt7621-pbr-m1.bin
2.下载openwrt固件
https://downloads.openwrt.org/re ... shfs-sysupgrade.bin
(顺便贴一下小米4a千兆版的介绍页面https://openwrt.org/inbox/toh/xi ... _4a_gigabit_edition)
3.电脑开启telnet功能
我的系统是WIN10,在设置-应用-程序和功能-启用或关闭windows功能 这里把telnet勾选上,需要重启电脑
4.下载openwrt获取root权限的python脚本
https://github.com/acecilia/Open ... refs/tags/0.0.7.zip
下载这个,下载下来的文件名是OpenWRTInvasion-0.0.7.zip
然后解压到c:/xiaomi/
5.下载需要用到的其他工具:winscp(用来把breed固件上传到路由器,用的是ftp协议)
(既然是ftp我估计是可以直接用windows自带的资源管理器访问的,打开我的电脑,然后在地址栏输入ftp://192.168.31.1应该就可以访问了)
然后开始正式的过程:
第0步:必做的工作
先把路由器正常的接好,让电脑可以正常的上网 这一步尤其重要,而且估计可能还需要能科学上网,毕竟github有一些东西是访问不了的
第一步:安装python
从https://www.python.org/ftp/python/3.10.1/python-3.10.1-amd64.exe下载安装包
安装的时候勾选添加到path环境变量,这样在cmd里面就可以直接输入python命令了
然后打开cmd 输入pip install requests
这个命令是安装模块,第一次安装完毕有个提示,好像是说什么版本过老,建议用什么命令安装,我就用他推荐的命令重新装了一下requests
(安装界面纯英文)
安装完毕重启系统
第二步:获取root权限
打开cmd,进入到c:/xiaomi/
输入命令python remote_command_execution_vulnerability.py
提示输入IP 默认是192.168.31.1 可以直接回车或者如果你改了路由器的IP可以手动输入
然后要输入stok
用浏览器访问路由器管理界面,登录以后会在地址栏看到stok值,复制下来
然后就会开始root
过一会就提示成功了
(注意:这里一定要有网络,否则永远不可能root成功)(这里必须路由器WAN口可以访问谷歌,不然绝对会root失败,我今天弄剩下的4台的时候发现的)
然后再输入命令 telnet 192.168.31.1
(这里如果提示连接失败说明上面的root没有成功,路由器需要科学上网)
第三步:备份
备份的命令我忘记了,我也忘记备份了,参考论坛其他帖子的备份命令吧
(这个备份的目的是以后好刷回小米官方系统)
cat /proc/mtd
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"
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
备份完毕用FTP把这几个文件复制出来保存好,以后万一要用到
第四步:上传breed文件到路由器
用winscp用FTP协议把breed上传到路由器的/tmp目录
第五步:刷入breed
输入命令mtd -r write /tmp/breed-mt7621-pbr-m1.bin Bootloader
之后路由器会自动重启到breed界面
(breed界面的IP是192.168.1.1,这里需要手动设置电脑的IP)
用浏览器访问breed界面 备份固件的各种信息 记录MAC地址等 防止以后可能会用到 (这个breed不是专门为小米4a千兆版设计的,这里的全备没啥用,估计备份eeprom可能有点用)
第六步:在breed界面用命令刷入openwrt(只能这样刷入)
首先在本地搭建一个http服务,怎么搭建随便你
我自己是用win10的hyper-v开了一个虚拟机,在虚拟机里面提供web服务
然后把上面下载下来的固件放到web服务器的根目录
然后打开telnet,进入到breed.命令是telnet 192.168.1.1
然后依次输入命令
wget http://192.168.1.2/openwrt-21.02 ... shfs-sysupgrade.bin
#(192.168.1.2就是我提供WEB服务的虚拟机的IP)
#下面提示下载的信息,包含大小和保存的地址
#Length: 5768992/0x580270 (5MB) [application/octet-stream]
#Saving to address 0x80001000
flash erase 0x180000 0x600000
#从0x180000开始擦除0x600000这么大的区域 一定要先擦除,为什么要写0x600000呢,是因为擦除的大于必须大于固件的大小,并且这个数字还有一些未知的要求,我猜测可能是某个数的整数倍,懒得测试了,直接0x600000简单省事
#0x180000是小米路由器4a千兆版的openwrt的默认起始地址
flash write 0x180000 0x80001000 0x580270
#从0x180000这个地址写入保存在0x80001000的数据 写入的大小为0x580270
boot flash 0x180000
#从0x180000启动系统
重启以后就进入了openwrt的系统了
第七步:收尾
这个breed不是本路由器专用的,默认的启动地址不是0x180000
为了保证重启以后每次都能顺利启动系统,需要添加环境变量
重启到breed界面,然后开启环境变量,再重启一次进breed就可以添加环境变量了
在环境变量界面,增加autoboot.command字段,值设为boot flash 0x180000
即可,这就是告诉breed启动系统时,从0x180000处启动
至此就大工告成了,成功的刷入了openwrt的官方系统
目前还有一个小bug
5G的功率有问题最高只能选3db 1mw,1毫瓦,这根本就没有5G信号了,不知道怎么解决
(我猜测可能和上面备份的eeprom有关,但是我不知道怎么弄)
有同样刷了openwrt的,希望看看怎么解决
问题解决了,在breed界面刷入备份的eeprom就可以了
我是完全重新操作了一遍,在第六步的最后一个重启命令先不要输入,先在网页访问breed,恢复之前备份的eeprom
然后重启就可以了,就有正常的5G了
至此这个路由器完美的刷入了OPENWRT的官方固件
最后补上openwrt的闪存分区情况
root@OpenWrt:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00030000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00010000 00010000 "Bdata"
mtd3: 00010000 00010000 "factory"
mtd4: 00010000 00010000 "crash"
mtd5: 00010000 00010000 "cfg_bak"
mtd6: 00100000 00010000 "overlay"
mtd7: 00e80000 00010000 "firmware"
mtd8: 00241f43 00010000 "kernel"
mtd9: 00c3e0bd 00010000 "rootfs"
mtd10: 00920000 00010000 "rootfs_data"
2022-08-09更新
我刚刚把剩下的4台都刷了OP
把教程补充了一下,备份的命令我加进去了
同时也发现root的时候路由器必须能访问谷歌
|
评分
-
查看全部评分
|