找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 16740|回复: 228

[小米其它型号路由器] CR660X刷机:一台mac,一个任意路由器

 火... [复制链接]
发表于 2022-10-5 10:42 | 显示全部楼层 |阅读模式
本帖最后由 jinyu121 于 2022-10-5 10:45 编辑

昨天在刷机,看了恩山上各种帖子,思维跳跃性都比较大。并且我自己卡在了第二步,说nonce不对。有人解释是「挑路由器」。
然后看到某个帖子,突然想到只要原理对了,那么那个辅助的「OpenWRT路由器」其实不是必须的,随便搞个路由器当个工具人就好了。所以自己写了脚本,一次成功。


原理
利用小米路由器换机功能的漏洞。
  • 使用 API,让 CR660X 连接到一个没有 DHCP 的 Wi-Fi 上
  • 使用第二个 API,尝试获取 Token 并执行返回内容
  • 由于没有 DHCP,获取不到 IP,CR660X 就会自己变成 169.254.31.2,并去 169.254.31.1 拉参数并执行
  • 执行过程中由于参数判断不严导致可以执行任意 shell 命令,所以就能开启 SSH

所以 IP 设置很重要,其他辅助设备一定要避开 169.254.31.2 这个地址。


物理设置


需要一台 CR660X 设备

  • 进入管理页面后,开启 Wi-Fi,关闭「双频合一」功能
  • WAN 口不要插线


需要一台普通路由器作为辅助路由器
  • IP 设置为 169.254.31.3
  • 关闭双频合一功能
  • 开启 2.4G Wi-Fi(SSID 和密码可随意设置,但是需要尽可能简单点,比如密码设置成 12345678 啥的,别给自己找麻烦)
  • 关闭 LAN 口的 DHCP 功能
  • 用网线将其 LAN 口连接到 CR660X 设备的 LAN 口


需要一台笔记本电脑
  • 需要同时有无线网卡和有线网卡
  • 需要装有 Python 3 环境(MacOS 和 Debian 都自带有 Python3)
  • 用网线将其连接到 CR660X 设备的 LAN 口,并设置有线连接的 IP 为 169.254.31.1
  • 通过用 Wi-Fi 连上 CR660X 设备的 5G Wi-Fi,IP 地址可以设置为自动获取





环境准备
下面有两个 Python 脚本,随意挑选其中一个,保存为 server.py
可以在这里获取: https://gist.github.com/jinyu121/342e8113ee9b20cd8bb7d4954a7982f1
如果你打不开……直接拉到本文最后,博客里面有排版好的。我实在搞不定论坛的编辑器,一发上来排版全乱了根本没办法用。

无论使用哪个脚本,都需要在浏览器里面输入 http://169.254.31.1 看看显示是否正常。

之后的步骤需要自己构造一些 URL。如果不想手动替换东西,可以使用我改好的脚本。



可以在这里获取:https://gist.github.com/jinyu121/342e8113ee9b20cd8bb7d4954a7982f1 ,或者论坛里也有人发过,可以扒一下。



开始 SSH
  • 笔记本通过 Wi-Fi 进入 CR6608 设备管理界面,在 URL 里面拿到 STOK
  • 在地址栏里输入
  • http://<CR660X 设备 IP>/cgi-bin/luci/;stok=<获取到的 stok>/api/misystem/extendwifi_connect?ssid=<辅助路由器的 SSID>&password=<辅助路由器的 Wi-Fi 密码>

如果配置正确,大概 20 秒后,会出现 connect success 字样。
如果报错,那么需要检查辅助路由器的 IP、接线、是否开启了 Wi-Fi,以及是否关闭了双频合一功能。

  • 在地址栏里输入(最后的 xxx 无需改动)
  • http://<CR660X 设备 IP>/cgi-bin/luci/;stok=<获取到的 stok>/api/xqsystem/oneclick_get_remote_token?username=xxx&password=xxx&nonce=xxx

如果配置正确,那么在 Python 的输出里会出现来自 169.254.31.2 设备的访问记录。20 秒左右,会出现 nvram 相关字样,此时 SSH 已开启。

如果报错,那么需要检查 Python 里是否有 log(大概率是没 log),然后检查各个设备的接线、IP。

刷 Bootloader
  • 笔记本,将有线网卡恢复为 DHCP 自动获取,并记下此时笔记本的 IP 地址
  • 进入到放有 pb-boot.img 的文件夹,执行 python -m http.server 80
  • SSH 进入到路由器,并进入到 /tmp 文件夹
  • 执行 wget http://<笔记本的 IP 地址>/pb-boot.img ,将文件下载下来
  • 执行 mtd write /tmp/pb-boot.img Bootloader 刷入
  • 重启路由器

这里有个坑:我们其实是可以刷 breed 的(breed-mt7621-xiaomi-r3g),但是这个版本的 breed 会无法正常刷入固件,只能用来刷 pb-boot 和原厂 boot。


鸣谢
感谢论坛里各种帖子,特别是下列帖子:
https://www.right.com.cn/forum/thread-7840726-1-1.html
https://www.right.com.cn/forum/thread-5379258-1-1.html

备注
如果不想回复,可以直接看这个博客 https://haoyu.love/blog1389.html



我的恩山、我的无线 The best wifi forum is right here.
发表于 2022-10-5 16:17 | 显示全部楼层
思维跳跃性都比较大
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-5 16:28 来自手机 | 显示全部楼层
谢谢分享原理
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-5 18:49 | 显示全部楼层
是大佬,感谢
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-5 23:20 | 显示全部楼层
学习学习这个吧
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-6 00:26 | 显示全部楼层
谢谢分享!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-6 14:23 | 显示全部楼层
看起来比较适合我,试试看
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-6 14:35 | 显示全部楼层
收藏,学习一下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-6 18:27 | 显示全部楼层
来试试。希望一把成功
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-6 18:52 来自手机 | 显示全部楼层
来试试。希望一把成功
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-6 20:24 | 显示全部楼层
非常好的方法!!
等我的AX6000再刷成OP就把这个tr608刷成pandavan
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-6 20:30 | 显示全部楼层
感谢分享
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-8 11:43 | 显示全部楼层
仔细学习一下,楼主的意思是可以不用其他教程里提到了“openwrt旧路由”或者“装有openwrt的虚拟机”吗?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-8 12:31 | 显示全部楼层
谢谢分享原理
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-8 12:33 | 显示全部楼层
楼主好,感谢分享,认真拜读了教程后,您的这个是最完整且方便的,菜鸟一枚,和您请教几个问题:

1.您的帖子中说“breed不能刷固件”,博客中又多处涉及“刷 R3G 的 breed”,意思是否就是:固件主要靠救砖工具或者pbboot搞定,breed负责搞定bootloader,对吗?

2.如果刷机路径是CR6608→Openwrt→AX1800,想从AX1800刷回openwrt,那据您的教程,我理解是要先刷回CR6608原版系统,然后再按本帖步骤刷到openwrt?

还请指教,谢谢!

点评

2》是要回来cr6608的 因为ax1800的固件开不了SSH  详情 回复 发表于 2022-10-8 12:51
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-26 01:48

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表