OpenWrt是什么?你问
想象刷机之于Android,就像是软路由之于路由器
氪金可以解决的问题,为什么要搞机呢?不知道
我不想用原版ROM,你说。那你或许会想看我的这个项目, 用一些Docker来跑LEDE编译器
我喜欢先搞软的,准备一些蟒蛇代码
import json from flask import Flask from flask import request app = Flask(__name__) res = { "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;' } @app.route('/cgi-bin/luci/api/xqsystem/token', methods=['POST', 'GET']) @app.route('/cgi-bin/luci/api') @app.route('/cgi-bin/luci/api/xqsystem') def hello_world(): if request.method == 'POST': print(request.form) return json.dumps(res) if __name__ == '__main__': app.run(host='0.0.0.0', port=80)
python 代码
我不喜欢蟒蛇。你说
随你,你想用Node Deno还是什么Brainfuck,都可以,开心就行
小米路由器有个一键换机功能,非常实用。通过伪造被换机的路由器,可以注入脚本,解锁SSH
正常情况下,换机的流程大概是
169.254.31.1
,提供(serve)数据我们的操作空间在第2、3步
启动你用了一万年的老路由器,进入后台,关闭Wi-Fi 4 Wi-Fi 5二合一(如果有的话),关闭DHCP,并把网关改成比如169.254.31.11
用马克布克连接,修改静态IP到169.254.31.1
启动你喜欢的http服务器,注意监听0.0.0.0:80
,勿自娱自乐
掏出你Wi-Fi上网的手机,连接CR6609,用浏览器访问比如192.168.2.1
(或者其他网关,你自己想)
输入管理员密码(写在路由器反面,或许你改过),注意浏览器地址栏,有以http://192.168.2.1/cgi-bin/luci/;stok=
开头的东西,=
到下一个/
中间是明文令牌(非常牛逼的设计btw),记下来
再开一个浏览器标签,编辑地址
http://192.168.2.1/cgi-bin/luci/;stok=∂/api/misystem/extendwifi_connect?ssid=ß&password=µ
不知道是啥语言
其中
标记 | 含义 |
∂ | 刚刚记下的明文令牌 |
ß | 用了一万年的老路由器的热点ID |
µ | 对应的Wi-Fi密码 |
过个10s,顺利的话,CR6609就连上了老路由器,页面会显示一坨JSON,其中有"code": 0
如果没有,得再想想DHCP有没有关闭,热点ID、密码错没错,还有没有其他设备连着,试试Wi-Fi 4热点,或许兼容性会好点
接着,编辑地址
http://192.168.2.1/cgi-bin/luci/;stok=∂/api/xqsystem/oneclick_get_remote_token?username=ß&password=ß&nonce=ß
不知道是啥语言
其中,∂还是那个明文令牌,ß无所谓填什么
顺利的话,会显示类似这样的东西(不完全是,但至少有"code": 0
)
观察Mac的控制台,会有CR6609的访问记录。顺便说一句,蟒蛇代码里,token
就是注入的脚本
nvram set ssh_en=1 nvram commit sed -i \'s/channel=.*/channel="debug"/g\' /etc/init.d/dropbear /etc/init.d/dropbear start
shell 代码
这个脚本做的事情,基本就是开个dropbear服务(轻量无头的SSH)。不出意外,丢熊服务已经在运行了,可以SSH进路由器了
恭喜🎉
把马克布克换回DHCP,连上CR6609的热点,运行
$ ssh root@192.168.2.1 # 或者其他什么网关,你知道的
shell 代码
如果出错
Unable to negotiate with 192.168.2.1 port 22: no matching host key type found. Their offer: ssh-rsa
不知道是啥语言
修改~/.ssh/config
$ vim ~/.ssh/config HostKeyAlgorithms ssh-rsa PubkeyAcceptedKeyTypes ssh-rsa :wq
shell 代码
应该可以连接了
root密码,CR6609就写在背面,6606跟6608据说要用什么SN算,我也搞不清楚
可以把ROM放到http server的static目录下(或许你没有)
看一下马克布克的IP,比如说Ω
,再看一下ROM的文件名,比如ß
,在路由器执行
cd /tmp curl -O http://Ω/static/ß nvram set boot_wait=on ; nvram set bootdelay=3 nvram set flag_try_sys1_failed=0 ; nvram set flag_try_sys2_failed=1 nvram commit mtd -e firmware -r write ß firmware
shell 代码
大功告成,等待重启,希望你玩得开心🤘
留下你的评论,我是不会读的。
写得不咋样?你可以帮助改进这篇文章。
此网站受reCAPTCHA保护,因而Google的隐私权政策和服务条款生效。
Copyright zhufucdev 2024