一、 固件件降级
需要利用老版本的漏洞才能开启ssh, 所以需要手动降级到1.0.60版本,如下图上传下载的固件然后点升级
在这个升级过程会报如下错误: 出于安全考虑,不允许选择低于当前版本的固件进行升级。
解决方法:在地址栏的url最后一个0改成1或者1改成0,然后回车就可以直接升级了。
首先要确定下路由器系统的版本,如果不是可以解锁的版本,那么需要在“系统设置”里,把当前系统版本手动降级为1.6.0。如果当前版本已经是可解锁的则可以忽略这一步。目前可解锁的版本号有1.0.60;1.0.48;1.0.28。
二、获取stok
登录到路由器的后台,在地址栏上方会生成一串stok的数值。我们需要把stok等于后的这串数字复制下来,这串数字是解锁ssh的关键,不过在每个机器上生成的值都不同,而且每次重启路由器以后这个值都会改变。
三、打开红米AX6000的开发者模式
首先我们需要解锁下ax6000的开发者模式
1. 复制以下代码
http://192.168.31.1/cgi-bin/luci/;stok=://192.168.31.1/cgi-bin/luci/;stok={token}/api/misystem/set_sys_time?timezone=%20%27%20%3B%20zz%3D%24%28dd%20if%3D%2Fdev%2Fzero%20bs%3D1%20count%3D2%202%3E%2Fdev%2Fnull%29%20%3B%20printf%20%27%A5%5A%25c%25c%27%20%24zz%20%24zz%20%7C
注意把stok={token} 的字符{token}替换为路由器生成的stok值。
然后把代码复制到浏览器的地址栏里再回车,看到返回过来这样一串字符就表示代码注入成功了。
2. 粘贴命令重启路由器
http://192.168.31.1/cgi-bin/luci/;stok=://192.168.31.1/cgi-bin/luci/;stok={token}/api/misystem/set_sys_time?time
同样需要替换stok=后边的字符。代码注入成功之后,网页同样会返回这样一串字符并且开始重启路由器。
四、设置路由器的Bdata参数
1. 我们稍等两分钟等路由器重启好了之后,再次登录到路由器的后台。这时需要重新复制一下stok,因为此时路由器重启后stok的值已经改变。
接下来的步骤是设置Bdata参数来永久开启telnet,在新打开的浏览器地址栏中输入以下代码。
http://192.168.31.1/cgi-bin/luci/;stok=://192.168.31.1/cgi-bin/luci/;stok={token}/api/misystem/set_sys_time?timezone=%20%27%20%3B%20bdata%20set%20telnet_en%3D1%20%3B%20bdata%20set%20ssh_en%3D1%20%3B%20bdata%20set%20uart_en%
同样将stok=token中的{token}替换成路由器新的stok即可
2. 再次在浏览器里输入以下代码来重启路由器:
http://192.168.31.1/cgi-bin/luci/;stok=token/api/misystem/set_sys_time?timezone=%20%27%20%3b%20reboot%20%3b%20
五、登录telnet开启ssh
现在我们已经开启了telnet,可以用telnet登录到路由器的后台。我们打开mobaxterm,选择telnet登录的方式。输入路由器ip地址 默认是192.168.31.1(这里是不用输入用户和密码)点击ok登录到telnet。接下来我们需要复制粘贴一些代码到telnet里执行即可。
1. 修改root密码为admin(不修改也可以通过SN计算默认密码)这里我们修改一下
echo -e 'admin\nadmin' | passwd root
2. 固化SSH
bdata set boot_wait=on
bdata commit
nvram set ssh_en=1
nvram set telnet_en=1
nvram set uart_en=1
nvram set boot_wait=on
nvram commit
sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear
/etc/init.d/dropbear restart
输入命令后没有反馈信息,不用担心,已经执行成功了。
3. 永久开启SSH的代码(这样即使路由器重启也不会影响SSH)注意这步需要路由器能够联网。
mkdir /data/auto_ssh && cd /data/auto_ssh
curl -O https://cdn.jsdelivr.net/gh/lemoeo/AX6S@main/auto_ssh.sh
chmod +x auto_ssh.sh
uci set firewall.auto_ssh=include
uci set firewall.auto_ssh.type='script'
uci set firewall.auto_ssh.path='/data/auto_ssh/auto_ssh.sh'
uci set firewall.auto_ssh.enabled='1'
uci commit firewall
4. 接下来还需要修改时区设置,输入:
uci set system.@system[0].timezone='CST-8'
uci set system.@system[0].webtimezone='CST-8'
uci set system.@system[0].timezoneindex='2.84'
uci commit
5. 最后一步,关闭开发/调试模式。在提示符后输入:
mtd erase crash
6. 然后输入reboot重启路由
reboot
成功登录ssh之后,我们就相当于获取了路由器的最高权限。
六、官方分区版刷机
我们先来介绍下官方分区版的刷写方法,大致过程是先刷入一个过渡固件,再从过渡固件刷成openwrt固件。先用ssh的方式登录到路由器。
(一)、刷入过渡固件
1. 输入命令:
cat /proc/cmdline
2. 查看firmware(固件版本)=1或者0如果结果是0就执行代码:
nvram set boot_wait=on
nvram set uart_en=1
nvram set flag_boot_rootfs=1
nvram set flag_last_success=1
nvram set flag_boot_success=1
nvram set flag_try_sys1_failed=0
nvram set flag_try_sys2_failed=0
nvram commit
cd /tmp
curl -L http://sebs.oss-cn-shanghai.aliyuncs.com/initramfs-factory.ubi -o initramfs-factory.ubi #这里下载不了,选下面的
(curl -L https://share.qust.me/d/%E8%B7%AF%E7%94%B1%E5%99%A8/redmi-ax6000/initramfs-factory.ubi -o initramfs-factory.ubi)#这个实用一点
ubiformat /dev/mtd9 -y -f /tmp/initramfs-factory.ubi
reboot -f
如果结果是1就执行:
nvram set boot_wait=on
nvram set uart_en=1
nvram set flag_boot_rootfs=0
nvram set flag_last_success=0
nvram set flag_boot_success=1
nvram set flag_try_sys1_failed=0
nvram set flag_try_sys2_failed=0
nvram commit
cd /tmp
curl -L http://sebs.oss-cn-shanghai.aliyuncs.com/initramfs-factory.ubi -o initramfs-factory.ubi #这里下载不了,选下面的
(curl -L https://share.qust.me/d/%E8%B7%AF%E7%94%B1%E5%99%A8/redmi-ax6000/initramfs-factory.ubi -o initramfs-factory.ubi)#这个实用一点
ubiformat /dev/mtd8 -y -f /tmp/initramfs-factory.ubi
reboot -f
执行完毕后,路由器被自动刷入一个过渡固件。注意执行这步需要路由器可以联网。
3. 复制执行完就会重启,进入过渡固件的后台:
4. 我们需要更新一下这个X-wrt的过渡固件到完整版,点击系统-备份与升级,选择刷写新的固件。
5. 从下载的附件中选择X-wrt的完整版固件上传,不保留当前配置。
6. 刷写固件完毕后路由器会自动重启,刷新页面就可以进入新的X-wrt后台页面,用户名和密码还是admin/admin
这个X-wrt的固件也是可以日常使用的,但是功能不如OpenWrt,继续下一步刷OpenWrt。
(二). 刷入Openwrt固件
1. 在刷写前需要设置 环境,由于这个后台默认关闭了SSH的root登录,也没有提供网页终端,需要手动打开SSH连接上终端。
点击系统-管理权-SSH访问,将密码验证和允许root用户使用密码登陆勾选上,点击保存并应用。
2. 等待应用完成后,打开远程工具,使用SSH登录,需要注意的是刷入固件后登录地址变化了:
SSH地址:192.168.15.1
用户名:root
密码:admin
3. 登录后运行以下代码:
fw_setenv boot_wait on
fw_setenv uart_en 1
fw_setenv flag_boot_rootfs 0
fw_setenv flag_last_success 1
fw_setenv flag_boot_success 1
fw_setenv flag_try_sys1_failed 8
fw_setenv flag_try_sys2_failed 8
4. 回到浏览器的管理后台,选择系统-备份与升级,选择刷写新的固件。选择下载好的附件中ax6000-stock文件夹下的固件,有ax6000-full.bin(插件较多)或者ax6000-mini.bin(精简版)可供选择,full和mini版差异在于默认集成插件,其他一致。
5. 上传固件后会出现报错,这里取消选择所有的复选框,只在强制升级那打勾,然后点击继续,稍等几分钟路由器的指示灯变成蓝色和绿色常亮就刷好了。
6. 然后就可以通过浏览器访问OpenWrt的后台:
后台地址:192.168.6.1
用户名:root
密码:password