前言
鉴于paldier大佬更新了工具,并且可以支持其他型号路由器,这里更新一下文章
这个其实很多人都做过了,本教程仅作为详细版本,原作者文章请见文末参考链接
操作环境为Windows 11
如果你想爬墙,可以在官方固件通过以下方法打开SSH安装ShellClash,其项目的说明里有安装教程
准备工作
- WinSCP
- 访问SSH和Telnet的工具
推荐使用Putty - 有漏洞固件
小米AX3600 1.0.17固件
小米AX1800 1.0.328固件
红米AC2100 2.0.7固件
小米AC2100 2.0.722固件 - mitool 20220104
如果遇到下载速度慢,可以使用文章末尾的附件,但是请注意,附件不会更新软件版本,推荐从官方下载
注:mitool作者为paldier(Github)
I.降级
新固件一般没有什么Bug了,这里需要用上面提供的对应型号的旧版本固件,只需要直接用小米路由网页端的手动升级就可以了
降级时提示是否保留用户数据,一般来讲是没有关系的,勾不勾选都可
II.开启SSH
降级后不要升级,先登录网页管理界面,登录后可以在地址栏上看到
http://192.168.31.1/cgi-bin/luci/;stok=XXXXXXXXXXXXXXXXXXXXXXXXXX/web/home#router
(如果你改了路由器IP地址,可能192.168.31.1
处会和我的不一样,但是此处只需要stok),这里的XXX对应你自己的stok。
将XXX后面的包括斜杠"/"在内的所有文字替换成
/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20nvram%20set%20ssh_en%3D1%3B%20nvram%20commit%3B%20sed%20-i%20's%2Fchannel%3D.*%2Fchannel%3D%5C%22debug%5C%22%2Fg'%20%2Fetc%2Finit.d%2Fdropbear%3B%20%2Fetc%2Finit.d%2Fdropbear%20start%3B
然后回车,就会有个code:0,这个时候ssh就已经打开了,若没有,请重启路由器。
III.改密SSH
开启SSH后,可以按照步骤II中的方法,将XX后面的包括斜杠"/"在内的所有文字替换成
/api/misystem/set_config_iotdev?bssid=Xiaomi&user_id=longdike&ssid=-h%3B%20echo%20-e%20'admin%5Cnadmin'%20%7C%20passwd%20root%3B
其中两个admin
为你需要更改的密码,两个admin均需要修改,修改完后回车即可
IV.固定SSH
备份Bdata分区
在利用上面的方法临时开启了SSH后,先登录SSH,然后执行cat /proc/mtd | grep bdata
,看一下bdata
前面对应的mtd号,例如我这里是mtd9,则输入nanddump -f /tmp/bdata_mtd9.img /dev/mtd9
(将bdata分区备份到/tmp目录)。
备份完成后,使用WinSCP登录路由器(新建站点-文件协议选SCP-主机名填路由器IP-用户名填root
-密码填上面你改的密码),退回根目录找到tmp,打开,将bdata_mtd9.img
传输到你的电脑上保存好,这是你的路由器信息文件,一定要备份以防万一
开始操作
将之前下载的mitool.zip
所有文件解压,将所有的文件用WinSCP上传到路由/tmp目录里,然后在临时的SSH里输入
chmod 777 /tmp/mitool.sh
chmod 777 /tmp/mitool_arm
chmod 777 /tmp/mitool_arm64
chmod 777 /tmp/mitool_mipsle
处理完成后输入/tmp/mitool.sh unlock
,路由器会重启,重启后输入/tmp/mitool.sh hack
,这时候ssh,telnet,uart权限都已经设置好了,同时会计算出默认的root密码,保管好这个密码,到时候SSH失效可通过这个还原,届时路由器也会自动重启,重启后就没得事情了,你可以干别的事了
V.后期处理
计算的默认root密码丢失
可以点这里使用我之前开的小工具计算。将你路由器的S/N码复制进去(登录小米路由器管理后台可以看),点CALC就能计算了。
重开SSH
如果因为升级固件等种种原因,你的SSH没得了,你可以用PuTTY等软件登录Telnet,用户名为root
,密码为之前计算的默认root密码,登陆后依次输入以下命令:
sed -i 's/channel=.*/channel=\"debug\"/g' /etc/init.d/dropbear
/etc/init.d/dropbear start
即可再次获得SSH
路由故障
如果遇到无法更新固件的情况,有可能是因为ShellClash阻止了更新,解决办法见ShellClash官方文档
VI.附件
附件含:
- 破解工具:mitool.zip
- 相关固件
- WinSCP软件
- PuTTY(注意区分,带64bit的为64位程序)
千里猫
有红米AX1800的吗?
邮文
@千里猫 : 没有,并且不太建议为他开SSH搞机。
红米AX1800这款路由器的SoC是MT7621,已经比较老了,并且RAM和ROM看起来也和同为MT7621的AC2100有差距,网上没看到多少给他刷机的教程。不建议用这款路由器折腾吧。
user
都做完以后显示这个是啥情况啊?root@XiaoQiang:~# /tmp/mitool.sh unlock Unsupport model! root@XiaoQiang:~#
邮文
@user : 意思是你的路由器型号不支持吧,非本教程支持的路由器不行的呢
user
@邮文 : 红米AC2100你告诉我不是你标题写的型号?
邮文
@user : 抱歉那么晚回复,之前在学校里,没看到消息qwq先祝国庆快乐~
根据mitool的提示,工具本身并没有检测到支持的型号,如果你使用的确实是AC2100,可以检查一下固件版本是否是教程对应版本。如果依然不行,烦请上传一下你备份的bdata文件,我可以帮你看一下路由器信息
邮文
@user : 好,了解,感谢提供信息qwq
user
@邮文 : 是从附件当中下载的,肯定是旧版的bug吧,我发现最新版本固件中依然可以通过漏洞获取ssh以后就没再用过这个了
邮文
@user : ok了解了,话说这个工具你用的是github上下的最新版还是附件里的,附件里的是旧版可能有bug
user
@邮文 : 感谢,不过我已经解决了,用文章中的工具确实无法识别,我路由器升级到最新版本固件以后发现依然可以通过更改stock值的方式进行获取ssh,也就是说官方最新版本固件依然存在这个漏洞可以利用,也就用不到上述的工具了
廖
你好大佬 教程走完了 升级最新后 ssh失效了 用保存的账号密码登录显示login incorrect怎么解决呢
廖
@廖 : 奇怪 登上去了 用的是我原本admin 改的密码 而不是导出的密码
邮文
@廖 : 如果你登录SSH能显示输入用户名密码,说明SSH服务其实是在工作的。然后关于密码的话,目前我不是很清楚小米固件会在什么时候重置SSH密码。登录不上可以用自己改的密码和计算的密码都试试qwq
liao
@邮文 : 嗯嗯 感谢 教程是目前看过最简单便捷的。支持大佬!!
但是小米不知道是不是bug,家里三台ax1800组有线mesh,更新后测试下来是正常组网的,但是app.里不现实其他两台的状态了~
邮文
@liao : emm那应该不用管就可以了。miwif那个APP确实停止维护很久了,可能会有bug的,能用就行(
liao
@邮文 : 有的,pc组网信息正常,但是就是miwifi app不正常 只显示主路由,倒腾很久还是不行
邮文
@liao : 有没有查看过路由器PC版网页端右上角的组网信息
kaimin
意思是固化SSH后 升级固件可以通过telnet破SSH了?
kaimin
@kaimin : 今天试验了 点赞 以后就可以新固件获取SSH了!全网最新的教程就是哥们你这了
邮文
@kaimin : 很高兴能帮到你qwq