红米AX6 SSH解锁和挂载overlay方法

原帖地址:https://www.right.com.cn/forum/thread-4060726-1-1.html

先放出来看看能不能抛砖引玉, 等大佬的AX6三方固件

AX6好多老的漏洞都被堵了, 发现两个可能可行的还因为非正常修复的其他原因用不了,最后只有这个需要另外一台路由器的可以用.估计大家想解锁的应该也都有解锁过的老机器吧...

固件(备用)

http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/ra69/miwifi_ra69_firmware_a7244_1.0.16.bin

http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/ra69/miwifi_ra69_firmware_45a77_1.0.18.bin

小米路由器修复工具(单纯以防万一, 非必须)

http://bigota.miwifi.com/xiaoqiang/tools/MIWIFIRepairTool.x86.zip

https://www.xiaomi.cn/post/5289432 (教程)

1.0.16和18的分区除了版本号和wifi固件之外基本上完全一致, 内核不清楚.

个人wifi6下目测, 2.4G信号18强一些,16信号质量好一些. 具体的是隔2~4堵墙的情况下, 18手机两格信号但连不上, 16一格但可以连上; 两个的5G差不多;

但诡异的是这机器2.4G的覆盖范围和5G几乎完全一致, 并没有2.4穿透更好的表现.

AX6 SSH解锁

参考

https://www.right.com.cn/forum/thread-4032490-1-1.html

AX3600 1.0.17原版固件

https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=4036131

NyaMisty的unluac(修改版), 这个调整了一些代码优化unluac的反编译效果, 调整的部分我忙完有空的时候整理下就发PR...



本帖隐藏的内容

前提:

需要一台电脑(有线),

另外一台解锁了ssh的openwrt的老wifi路由器(下文B)

支持AX6 1.0.16/1.0.18, 可能支持其他型号的其他版本...

  1. 另一个路由器(B)ip设置为169.254.31.1,关DHCP(电脑设置固定ip:169.254.31.3上去看看, 另外保证能ping通, DHCP是一定要关的)
  2. 2.如果是openwrt的, ssh上去,自行添加文件/usr/lib/lua/luci/controller/admin/xqsystem.lua,

最终结果是访问http://169.254.31.1/cgi-bin/luci/api/xqsystem/token会显示类似

(论坛的编辑器会吞字, 所以看图...)

  1. {"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;"}

复制代码

的内容(或者\”显示为\u0022, code和token的先后顺序可交换), 请自己先尝试下确保能成功返回

如果不是openwrt的请自行调整步骤, 保证访问相同地址会显示相同内容即可

lua内容如下

(

[11-29]

论坛的编辑器会吞字, 所以复制完之后, 看图自己改下...

感谢@zlf 提醒

已上传报错的可以修改后保存重启路由器B或者手动删除下/tmp/luci-indexcache

result["token"] = "; nvram set ssh_en=1; nvram commit; sed -i 's/channel=.*/channel=\"debug\"/g' /etc/init.d/dropbear; /etc/init.d/dropbear start;"

)

  1. module("luci.controller.admin.xqsystem", package.seeall)
  2. function index()
  3.     local page   = node("api")
  4.     page.target  = firstchild()
  5.     page.title   = ("")
  6.     page.order   = 100
  7.     page.index = true
  8.     page   = node("api","xqsystem")
  9.     page.target  = firstchild()
  10.     page.title   = ("")
  11.     page.order   = 100
  12.     page.index = true
  13.     entry({"api", "xqsystem", "token"}, call("getToken"), (""), 103, 0x08)
  14. end
  15. local LuciHttp = require("luci.http")
  16. function getToken()
  17.     local result = {}
  18.     result["code"] = 0
  19.     result["token"] = "; nvram set ssh_en=1; nvram commit; sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear; /etc/init.d/dropbear start;"
  20.     LuciHttp.write_json(result)
  21. end

复制代码

  1. B放一边开着,下面先不连设备,电脑从B断开, 重新打开电脑的DHCP(不是B的);
  2. 登录红米A,记下<STOK>, 输入时不含<>, 请参考你路由器本来的url格式

<STOK>是啥请参考前面的https://www.right.com.cn/forum/thread-4032490-1-1.html

  1. 访问

http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/extendwifi_connect?ssid={B的SSID}&password={B的密码}

不含{}, 等待返回

如果正常会显示0,

显示1646的请检查下第一步的DHCP是否关闭,  1619的请检查第一步IP是否设置正确或者路由器B下仍有其他设备, 1655的请再来一次, 有小概率会连接失败

如果一直失败请改下路由器B的SSID/密码/信道/换着连下2.4G和5G(不要开二合一)

 

  1. 访问

http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/xqsystem/oneclick_get_remote_token?username=xxx&password=xxx&nonce=xxx

(中途不要重启任何一个路由器或者改ip)

三个xxx, 随便填, 我填的就是xxx, 不能是空

如果步骤2路由器B需要用户名密码可以这里填上试试, 不保证成功, 反正我的老路由不需要就没有试过

如果正常会显示和步骤2一样的结果

  1. 重启红米A(不然wifi没信号),把B的dhcp和ip还原(如果还原不了就恢复出厂吧...);

 

可选继续进行后面的步骤


固化telnet

防止系统升级后无法解锁或者需要再来一次上面的步骤

 

步骤请直接参考AX3600的教程1或者2, 操作前请先备份好自己的mtd9,导出到电脑(也可全盘备份)以防万一

备份步骤

mkdir /tmp/syslogbackup/

全盘就是下面的9换成0~15(也可跳过12~14, 只备份0~11和15), 重复16次, 注意从0开始

(16~18是ubifs的虚拟分区, 16+17≈12或者13,18≈14, 不需要备份, 12/13是A/B分区的固件本身, 也不需要, 14是恢复出厂就没了的数据区, 也可以不需要)

dd if=/dev/mtd9 of=/tmp/syslogbackup/mtd9

然后可以用下载工具下会到电脑(浏览器可能有几个文件会识别成页面下不了)

http://192.168.31.1/backup/log/mtd9

 

特别注意:

注意unlock那步的时候wifi可能会挂掉, 请全程有线, 不要慌继续往下执行, lock之后应该就恢复正常了.

完事之后可能需要重新设置下wifi密码

AX3600的教程:



  1. 成品工具(f**kax3600),直接从"下面继续"开始看:(建议第一次上传到/data, 不然重启之后还要传一遍)

https://www.right.com.cn/FORUM/thread-4046020-1-1.html

 

  1. 或者手动步骤:

https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=4045295

(从SN计算默认ssh密码: https://www.oxygen7.cn/miwifi/)

[12-8]提示: SN区分大小写, 请直接从路由器登录后右下角复制

中间有个"/"的那个, 不是MAC地址

 

还是不行的146楼, 就是升级之后没有默认密码可能要再来一次

 

然后后续升级之后就是telnet应该能用, 然后telnet上去, 重新跑下

  1. sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear; /etc/init.d/dropbear start;

复制代码


挂载overlay

挂载overlay(读写), 方便装openwrt的软件包(带页面的应该显示不出来), 借鉴了NyaMisty的

https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=4037482

 

因为AX6不需要改分区表, (没有那么多flash), 也就不需要刷uboot, 风险要低些, 有20M的可用空间可以支配

 

但还是请先准备好固件和小米路由器修复工具, 并做好telnet固化以防手残(我测试过程中手残, 来回了8次, 这机器的reset好像又不一定能恢复出厂...), 不过总体没啥风险就是了

更新官方固件后不保持存活, 请再来一次下面的步骤1~5

 

  1. 创建文件 /etc/init.d/miwifi_overlay , (可vi/etc/init.d/miwifi_overlay, i, 粘贴, :wq), 内容如下(不含```)
  1. #!/bin/sh /etc/rc.common
  2. START=00
  3. . /lib/functions/preinit.sh
  4. start() {
  5.         [ -e /data/overlay ] || mkdir /data/overlay
  6.         [ -e /data/overlay/upper ] || mkdir /data/overlay/upper
  7.         [ -e /data/overlay/work ] || mkdir /data/overlay/work
  8.         mount --bind /data/overlay /overlay
  9.         fopivot /overlay/upper /overlay/work /rom 1
  10.         #Fixup miwifi misc, and DO NOT use /overlay/upper/etc instead, /etc/uci-defaults/* may be already removed
  11.         /bin/mount -o noatime,move /rom/data /data 2>&-
  12.         /bin/mount -o noatime,move /rom/etc /etc 2>&-
  13.         /bin/mount -o noatime,move /rom/ini /ini 2>&-
  14.         /bin/mount -o noatime,move /rom/userdisk /userdisk 2>&-
  15.         return 0
  16. }

复制代码

  1. chmod 755 /etc/init.d/miwifi_overlay
  2. /etc/init.d/miwifi_overlay enable
  3. sync
  4. reboot

重启完之后分区就可读写了, 更新固件后请1~5再来一次

 

测试, 安装sftp:

opkg update

opkg install openssh-sftp-server



AX6=>AX3600
AX6作死刷AX3600固件尝试 - 小米无线路由器以及小米无线相关的设备 - 恩山无线论坛 - Powered by Discuz! (right.com.cn)

测试完成后另发结果和重点, 危险性偏大就不发完整步骤了

感觉如果不是小米内核做了特殊处理的话, 两个机器的硬件差异可能比想象之中小. AX3600真心负优化, 256的flash就用了128...

不清楚到时候能不能直接白嫖AX3600的openwrt



可能影响保修, 另外因为硬件不一样, 不保证不会出现硬件物理损坏,未长期测试

目前测试直刷AX3600官方原版固件之后启动, 网口, 指示灯正常,配置页面恢复出厂后正常

wifi信号发射正常, 但疑似LNA不工作,3米之外无法建立连接

THE END