小米CR6606,CR6608,CR6609 启用SSH和刷入OpenWRT 23.05.5
上个月极低的价格得到一台CR6606和一台CR6609, 一直没时间研究, 终于趁春节假期把这两个都刷成 OpenWRT

配置说明
- CPU: MT7621AT,双核880MHz
- 内存: NT5CC128M16JR-EKI 或 M15T2G16128A, 256MB
- 闪存: F59L1G81MB, 128MB
- 无线基带芯片(BB): T7905DAN
- 无线射频芯片(RF): MT7975DN
- 无外置FEM芯片,使用MT7975DN内置PA和LNA
配置和R3G相比是很像的, 区别就是升级了无线基带和射频芯片, 支持 WiFi6 支持 mesh. 但是去掉了USB口.
MT7905DAN + MT7975DN 组成了 MT7915D, 2.4G和5G均支持 2x2 MIMO, DBDC(双频并发), 2.4G最高速率574Mbps,5G最高速率1201Mbps. MT7975DN+MT7905DAN的发热量比 MT7603 + MT7612 要大一些, 因此功率也更大, 散热片比R3G更大.
相关连接
相关链接
- CR6609 拆机内部展示 https://www.acwifi.net/13821.html
- CR6606 拆机内部展示 https://www.acwifi.net/18380.html
- 通过OpenWRT路由器添加 lua脚本开启SSH https://www.luyouwang.com/7115.html
 这种方法需要正好是兼容这种lua脚把的 OpenWRT 才行, 在OpenWRT 23.05.5 上无法使用
- 通过电脑运行python脚本启动http服务开启SSH, 相对简单 https://haoyu.love/blog1389.html
 这种方法比前一种好, 因为对无线路由器没要求, 而且从电脑启动一个http服务很简单
- 通过TTL开启SSH https://www.bilibili.com/opus/870238271997739025
- SSH密码计算工具 https://blog.csdn.net/zhoujiazhao/article/details/102578244
- SSH密码计算工具 http://mi.avue.cn/
OpenWRT 下载
https://firmware-selector.openwrt.org/
在上面搜对应的型号, 例如 Xiaomi Mi Router CR6609
Breed下载
拉到底下, 在 r1338 [2021-12-16]/ 目录下, 搜 r3g.
CR6606 CR6608 CR6609 用的都是和小米 R3G 一样的 breed, 这个版本可以用于刷入 OpenWRT 上下载的固件
最新的版本是 r1416 [2022-07-24] (git-46ae2a1), 但是这个版本不能直接支持从 OpenWRT 下载的固件, 原因可以看 这里, 所以只能用旧一点的 r1338 版本
带SSH的降级固件
6606 1.0.103 链接: https://pan.baidu.com/s/1kn68F2M019rHB7PWqRYnCA 提取码: 9c92
刷机过程
CR660x 这一系列的型号属于小米给运营商的定制版, 在小米路由的官网上是不存在的, 所以也就不可能通过官方下载"开发版ROM"开启SSH烧录第三方系统. 开启SSH的方式主要有 TTL 和 getToken 漏洞两种方式
通过TTL获取SSH权限
通过TTL开启SSH相对简单, 不需要复杂设置, 如果有TTL2USB模块优先用这种方法, 但是不是所有设备都能用
有一台CR6609 电信版的版本是"系统版本: 1.0.41 稳定版", 不需要降级直接用TTL方法就可以进SSH, root口令和admin密码一样, 在背面的标签上
而另一台 CR6606, 版本是"系统版本: 1.0.134 稳定版", 这个版本在TTL下没有命令行输入功能, 需要降级到 1.0.103, 通过
背面把靠近wan口天线位置, 用水口钳剪掉一两根塑料打开一个口子, 方便刷机探针伸进去连里面的TTL口, 从网口那一侧往外4个焊盘分别是 VCC, RX, GND, TX, 如果不确定可以用万用表测一下, VCC的电压是3.3, GND是0, 其它两个都是3.2左右.
用刷机针接到TTL上, 只需要接RX, GND, TX三根线, 分别对应TTL的 TX, GND, RX, 码率 115200, 要在上电之后再连, 否则路由器不启动. 在日志输出结束后, 回车可以看到命令行提示符.
在电脑的串口终端上顺序执行这4个命令
nvram set ssh_en=1
nvram commit
sed -i 's/channel=.*/channel=\"debug\"/g' /etc/init.d/dropbear
/etc/init.d/dropbear start
之后电脑和路由器之间连上网线, 就可以用ssh访问了.
通过小米路由的getToken漏洞开启SSH
这种方式相对复杂, 有一台 CR6606 通过 TTL 访问只有日志输入没法输入, 所以不得不用这种方式. 这种方式需要有电脑和另一台路由器配合
- 辅助路由器的LAN IP设置为 169.254.31.x 网段, 除了 169.254.31.1, 169.254.31.2 以外的任意一个IP, 因为31.1是电脑用的要提供链接地址, 31.2是待破解的CR660x用的默认地址
- 电脑的LAN IP设置为固定IP 169.254.31.1 用于启动http服务为目标CR660x路由器提供破解命令, 运行python脚本(内容附后), 命令sudo python server.py
- 如果电脑是Ubuntu 记得把80端口防火墙打开, 命令是 udo ufw allow 80/tcp, 查看实际的设置sudo ufw status,
- 电脑用网线连上辅助路由器的LAN口, 这时候从辅助路由器应该要能访问到 http://169.254.31.1 看到正确的输出, 如果没有输出则需要检查python服务是否启动, 端口是否生效, 防火墙是否打开
- 辅助路由器的2.4G WIFI 设置一个简单点的名称和密码, 方便下面输入
注意此时的连接状态是, 辅助路由器的LAN口连着电脑的LAN口, 其它没有任何连接, 后面也不需要动
下面是CR660x上的操作
- 首先要降级到一个可以开启SSH的版本, CR6606降级到 1.0.103
- 启动后, 从电脑用WIFI连接, 连接上进入管理后台后, 从链接地址中拿到 stok 字符串值
- 使用链接让CR660x连上辅助路由器的WIFI, 链接: http://[CR660x地址]/cgi-bin/luci/;stok=[刚才拿到的stok]/api/misystem/extendwifi_connect?ssid=[辅助路由器WIFI的SSID]&password=[辅助路由器的WIFI口令]
 如果操作正确, 这里会响应{"msg":"connect succces!","code":0}, 同时从电脑可以ping通 169.254.31.2 这时候说明可以从CR660x访问到你的电脑了, 如果ping不通说明前面操作有问题, 需要检查
- 使用链接让CR660x执行伪造的getToken指令打开, 链接: http://[CR660x地址]/cgi-bin/luci/;stok=[刚才拿到的stok]/api/xqsystem/oneclick_get_remote_token?username=xxx&password=xxx&nonce=xxx 后面的三个xxx不需要动
 如果操作正确, 这里会响应{"token":"; nvram set ssh_en=1; nvram commit; sed -i 's/channel=.*/channel=\u0022debug\u0022/g' /etc/init.d/dropbear; /etc/init.d/dropbear start;","code":0}, 此时CR660X上的ssh就已经打开了
从电脑可以ssh连接CR660X, 口令在 http://mi.avue.cn/ 上通过序列号计算可以得到. 后续步骤跳到"写入breed"
附: python脚本, 因为请求可能是 GET 也可能是 POST, 所以两种method都要
from http.server import BaseHTTPRequestHandler, HTTPServer
import json
class SimpleServer(BaseHTTPRequestHandler):
    def do_GET(self):
        print("It comes!")
        data = {
            "code": 0,
            "token": "; nvram set ssh_en=1; nvram commit; sed -i 's/channel=.*/channel=\"debug\"/g' /etc/init.d/dropbear; /etc/init.d/dropbear start;"
        }
        self.send_response(200)
        self.end_headers()
        self.wfile.write(json.dumps(data).encode())
    def do_POST(self):
        print("It comes!")
        data = {
            "code": 0,
            "token": "; nvram set ssh_en=1; nvram commit; sed -i 's/channel=.*/channel=\"debug\"/g' /etc/init.d/dropbear; /etc/init.d/dropbear start;"
        }
        self.send_response(200)
        self.end_headers()
        self.wfile.write(json.dumps(data).encode())
server_address = ('0.0.0.0', 80)
httpd = HTTPServer(server_address, SimpleServer)
httpd.serve_forever()
写入 breed
能ssh访问后, 从电脑上通过scp将 breed 上传到路由器
scp breed-mt7621-xiaomi-r3g.bin root@192.168.2.1:/tmp/
然后在路由器的ssh里面, 使用mtd命令写入
mtd write breed-mt7621-xiaomi-r3g.bin Bootloader
写入成功后, 关闭电源, 用针顶住reset孔, 然后上电, 待两个灯快速闪烁时就可以松开顶针. 连接任意LAN口到电脑, 电脑会获取到 192.168.1.x 网段的地址, 此时访问 http://192.168.1.1 就能访问 breed 界面
在"小米 R3G Bdata" 界面可以看到当前路由器的型号和配置信息.
之后如果已经刷入了 Breed, 可以在 Breed 界面上用写入 Bootloader 的方式写入新的 Breed.
写入 OpenWRT
- 进入 Breed, 在"固件更新"界面上, 选择闪存布局为"小米路由器 3G 固件 1", 在固件栏, 选择从 OpenWRT 下载的 kernel.bin 包写入. 待其重启
- 上一步写入后, 路由器上就有基础的OpenWRT系统, 但是文件系统还没初始化, 做任何设置都不会保存.
- 重启后在电脑获得IP后, 默认是192.168.1.1, 访问 http://192.168.1.1 可以进入 OpenWRT 界面(口令为空), 在 OpenWRT 界面上会提示仅有基本文件系统需要升级System running in recovery (initramfs) mode., 到升级界面, 选择结尾为 sysupgrade.bin 的固件升级, 重启后就升级完成了.
小米CR6606,CR6608,CR6609 启用SSH和刷入OpenWRT 23.05.5的更多相关文章
- 极路由2(极贰)ROOT并刷了OpenWrt
		绕过官方的ROOT 查了一下root教程, 如果还需要保留保修, 则需要自己想办法回退版本, 下载搜狐插件到sd卡, 找个linux系统修改sd卡上程序的执行权限, 然后才能开启ssh, 具体的方法可 ... 
- 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机
		版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fuchaosz/article/details/52473660 1 前言 经过一周的奋战,终于从谷 ... 
- wr720n v4 折腾笔记(二):刷入不死Uboot
		0x01 前言 接着上节刷入Openwrt开始说起,此次开始刷入不死Uboot,刷入之后就可以在Uboot里面随便刷机,再也不怕成砖了. 固件附件地址: 下载地址1(还是之前一的包) flash文件地 ... 
- 小米路由器3G R3G 刷入Breed和OpenWrt 20.02.2 的记录
		小米 R3G 参数 Architecture: MIPS Vendor: Mediatek Bootloader: U-Boot System-On-Chip: MT7621 family CPU/S ... 
- 如何在ubuntu中启用SSH服务
		如何在ubuntu14.04 中启用SSH服务 开篇科普: SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为 ... 
- 斐讯K2 V22.X.X.X 新版固件 刷机教程 (开telnet,安装SSH,adbyby,刷breed,华硕Padavan)
		源:http://www.right.com.cn/forum/thread-191833-1-1.html 属于我的上一个帖子的升级版,基本属于无脑操作,点击恢复就可以自动刷好breed,浏览上传新 ... 
- 关于小米4电信4g刷入第三方ROM无信号解决办法
		from: http://www.yuwantb.com/xiaomi4-lineage-os.html 关于小米4电信4g刷入第三方ROM无信号解决办法 下载这个电信4g补丁包. 链接:http ... 
- MIUI7系统如何刷入开发版启用root超级权限
		小米的手机或平板不同手机型号通常情况MIUI官方论坛都提供两个不同系统,大概可分为稳定版和开发版,稳定版没有提供root权限管理,开发版中就开启了root权限,很多情况我们需要使用的一些功能强大的AP ... 
- 小米5安装Xposed框架——需要解锁刷机
		Xposed官网 https://forum.xda-developers.com/xposed 官方模块厂库 https://repo.xposed.info/ 中文站点 https://xpose ... 
- 树莓派4B无屏幕连接Wi-Fi/启用ssh/创建用户
		前边总得说点什么 最近每次在Win10上写代码需要启动Redis,残血Redis For Windows有卡死系统的bug.由于主机内存不大够用(已经扩到顶了),开虚拟机运行Redis更别提了..想起 ... 
随机推荐
- 做AI运动小程序有哪些解决方案,如何进行选型?
			引言:随着深度学习技术的发展进步,已经不再依赖强大的GPU算力,便可实现AI推理了,让AI技术渗透到了电脑.手机.智能设备等各类设备.体育.健身行业也不例外,阿里体育等IT大厂,推出的乐动力.天天跳绳 ... 
- sql注入--学习笔记_1
			实验室 sql sql可以对数据库进行访问和处理:取回数据,删除数据.web页面会使用这些. SQL 能做什么? SQL 面向数据库执行查询 SQL 可从数据库取回数据 SQL 可在数据库中插入新的记 ... 
- 《花100块做个摸鱼小网站! 》第十篇—响应式布局适配PC端和移动端
			️基础链接导航️ 服务器 → ️ 阿里云活动地址 看样例 → 摸鱼小网站地址 学代码 → 源码库地址 一.前言 大家好呀,我是summo,小网站一直有个问题,就是PC端的样式和移动端的样式是两套,并且 ... 
- 基于JDBC的数据库连接池高效管理策略
			在基于JDBC的数据库应用开发中,数据库连接的管理是一个难点,因为它是决定该应用性能的一个重要因素.本文在对数据库连接进行透彻分析的基础上,提出并实现了一个高效的连接管理策略,使得开发高性能的数据库应 ... 
- Blazor 组件库 BootstrapBlazor 中Button组件介绍
			组件介绍 按钮组件,应该是最基础的组件之一了.感觉没什么可介绍的,但是BootstrapBlazor的按钮,还是有很多不错的特性. 首先是最基础的,boostrap5的按钮样式: 代码如下: < ... 
- Three.js入门-相机控制器
			概念介绍 在开始前,我们先看一下效果,我在场景中创建了一个立方体,当我们点击鼠标左键并拖动时,可以旋转相机视角,滚动鼠标滚轮可以缩放相机视角. 相信看了动图效果,大家对相机控件有了一个直观的认识.它是 ... 
- 一个大幅提高开发效率的工具库 WYBasisKit
			WYBasisKit (持续更新) WYBasisKit 是做什么的? WYBasisKit 不仅可以帮助开发者快速构建一个工程,还有基于常用网络框架和系统API而封装的各种实用方法.扩展,开发者只需 ... 
- openwrt交换机配置命令-swconfig
			swconfig swconfig 是交换接口 (switch) 配置命令. 交换机是二层设备,是我们用来配置vlan的必备利器. 使用swconfig list可以列出当前可用的 SWITCH 设备 ... 
- 【Amadeus原创】k8s添加新master或node
			Master 1,在master上生成新的token [root@it-1c2d ]# kubeadm token create --print-join-command kubeadm join k ... 
- 【Amadeus原创】docker中修改wordpress上传文件大小
			1,进入docker 2,cp php.ini 3, cd到目录 [root@3 ~]# docker exec -it wordpress /bin/bash root@1d8a4fbdaa6b ... 
