驶桐柢
2025-6-7 09:27:21
原文:https://hi.imzlh.top/2024/07/18.cgi (预发布)
很久没有写完全折腾类文章了,这还得追溯到上次折腾S905L3A那会。
这篇文章很长,但是是小白级包学会。
为什么会有这篇文章?
关于为什么我会想到折腾光猫,见 https://hi.imzlh.top/2024/03/02.cgi
这篇文章本来应该在4个月前就完成了,但是我一直都在折腾NAS软件
其中我也尝试了很多方法,奈何时间不足断断续续的
WebList,前身叫做 weborf,是一个小巧的支持简单的WebDAV的程序
我修改了一下UI和认证部分,改动不多但是性能不强 ,且只能服务静态文件 ,很快抛弃
MomentPHP,前身是PHPMVC,经过两个月的扩充,已经很全能了
可惜不知道是什么原因,总是莫名其妙出点问题 ,性能也不可乐观 ,上个月后就抛弃了
vList5,前身是vList3,同样是为了Nginx设计,只不过改成了njs作为平台
继承了NGINX超强并发,使用了VUE绝对响应式,在昨天正式完成主要功能
至于为什么会这么折腾,完全是因为光猫限制比较大。详细的内容看原文即可,我们现在开始吧
准备一台光猫
这个材料很好找,一般的光猫都可以,但是有些光猫锁得很死,很考验大家的技术
为光猫解锁telnet
为什么是telnet呢
telnet方便,可以远程管理
有些机器甚至tty串口都锁死了,只能破解telnet
case1:热门机型直接找
这一步就需要大家熟练使用搜索引擎了。
型号很好找,直接打开 管理页面,去网上搜索就轻松找到
case2:找不到或失败
可以尝试一些工具,比如 针对ZTE机型的爆破工具
这里就不重点介绍了,感兴趣的自己研究
连接到光猫
下载 putty,telnet连接到192.168.1.1
账号密码就是上一步爆破得来的,直接输入就行了
有的畜生光猫默认给的权限不是root,这个时候移动root密码一般都是 aDm8H%MdA,其他的我也不清楚请自行搜索
建议固定到Windows剪贴板( Win标 + V )上,下一次登录就很方便了
为光猫干掉TR069
运营商有一个坑爹的东西叫做远程管理,能批量远程配置
一旦配置下发,你可能就又得再重新配置一次了(《从0开始的折腾之旅》)
因此为了杜绝后患,必须得把远程管理这个隐患干掉
sidbg or sendcmd
我接触过两种光猫,有两种管理工具,除了名字不一样,命令是一样的
你可以试试看哪种命令适合你的光猫sendcmd 1 DB set WANC 0 Enable 0 sidbg 1 DB set WANC 0 Enable 0 复制代码 然后你也可以顺便改一下超级密码,这样下次Web端登录会更方便
(比如我家的光猫就是账号 root 密码 toor ,怎么样好记吗)sidbg 1 DB set DevAuthInfo 0 User [账号] sidbg 1 DB set DevAuthInfo 0 Pass [密码] 复制代码 查看架构
~ $ cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 1 (v7l )
BogoMIPS : 1594.16
Features : half thumb fastmult edsp tls
CPU implementer : 0x41
CPU architecture : 7
CPU variant : 0x4
CPU part : 0xc09
CPU revision : 1
processor : 1
model name : ARMv7 Processor rev 1 (v7l )
BogoMIPS : 1594.16
Features : half thumb fastmult edsp tls
CPU implementer : 0x41
CPU architecture : 7
CPU variant : 0x4
CPU part : 0xc09
CPU revision : 1
Hardware : ZTE ZX279128 (Device Tree)
Revision : 0000
Serial : 0000000000000000
首先看 processor ,有两个,是古董级双核处理器
再看 model name ,是Armv7l,ARM的最后一代32位处理器
最后是 Features ,没有vfp,就是 arm-eabi,有vfp那就是arm-eabihf
最后可以了解一下CPU,通过 Hardware 可以了解,比如我这一块CPU就是ZX279128S是一款功能强大的SoC(System on Chip)芯片。芯片内嵌ARM Cortex A9双核处理器 以及丰富的外设,使用AXI高性能总线实现互联,CPU的频率达到1000MHz ,可实现复杂协议报文的处理。
armv7,但是没有vfp ,那就当作是armv5 ,或者说是armel ,别搞错了
mips的可能稍微难搞一点,下文可能需要自己编译软件
考虑安家位置
这个很重要,划重点
根目录大多是有CRC校检的或者直接打包进内核的,bin这类文件夹大多放在根目录。所以想要重启后不消失或者不变砖 ,建议找/usr/data,空间也大
或者这里更建议扔到自启动脚本周围,如我的光猫就保存到/usr/local/osgi/,方便
下文默认所有文件都保存到/usr/local/osgi/ ,如果不是,你可能需要修改nginx配置并替换所有出现的/usr/local/osgi/
准备软件
aria2 https://hi.imzlh.top/2024/03/09.cgi
用于下载磁力、HTTP、FTP等,支持WebUI操作
clash https://hi.imzlh.top/2024/03/03.cgi
用于挂梯子代理,这里由于与主题无关请自己折腾
weblist https://hi.imzlh.top/2024/03/31.cgi
用于Web的远程访问,与natmap搭配使用 已经舍弃
moment https://hi.imzlh.top/2024/04/21.cgi
用于动态运行PHP脚本和搭建网盘,体积不大于200k 已经舍弃
frpc https://github.com/fatedier/frp/releases
将HTTP穿透出去,方便远程访问 建议使用ddns+ipv6或natmap
秘制版ctrl https://hi.imzlh.top/2024/03/23.cgi
管理进程,方便自启动和管理任务
nginx+njs+vlist5 https://hi.imzlh.top/2024/07/17.cgi
不只是服务文件,还可以自由扩展(自行编译php-fpm)
natmap https://hi.imzlh.top/2024/05/17.cgi
IPV4打洞,搭配一个转发服务,这不比付费的frpc穿透香?
想要ctrl作为软件管理程序?自行参考 我写的文章
[懒人版一键复制] 这里假设你的光猫有curl自带,如果没有,参考 https://hi.imzlh.top/2024/03/02.cgi# aria2 curl https://hi.imzlh.top/usr/uploads/2024/03/971539169.gz -k | gunzip - > aria2 # nginx curl https://hi.imzlh.top/usr/uploads/2024/07/1871251897.gz -k | gunzip - > nginx # natmap curl https://hi.imzlh.top/usr/uploads/2024/07/1468987588.gz -k | gunzip - > natmap 复制代码 配置nginx
首先,你需要安装vList5和一个fancyindex美化包,方法也非常简单
假设你的硬盘已经挂载到了/mnt,如果没有,请执行mount /dev/sda /mntcurl -Lk https://github.com/imzlh/vlist-njs/releases/download/master/vlist5.js -o /usr/local/osgi/vlist.js cd /mnt curl https://github.com/imzlh/vList5/releases/download/main/vlist5_latest.tgz -Lk | tar xz mkdir .static cd .static curl https://hi.imzlh.top/usr/uploads/2024/07/2093537519.gz -k | tar xz 复制代码 关于nginx配置文件这里直接抄作业就行了,保存到 /usr/local/osgi/etc/nginx/nginx.conf
我可是研究了将近一天研究出来了这一份高性能高并发的nginx配置
(B:你似乎很骄傲啊,你知不知道,你这一句就相当于赤裸裸地在说 “快夸我,快给我三连”啊?)
(别忘了新建文件夹,mkdir /usr/local/osgi/etc/nginx/)PS 想要SSL? 打开注释掉的内容即可
考虑:动态更新
在这么精简的系统内,如何处理 请求更新 呢?
那只有使用 curl 才行。如果没有请使用 wget也差不多(嘛,HTTPS就别想了)
参考readme.md,这是适用于natmap地自动更新脚本的参数列表
argv[0]: Script path
argv1: Public address (IPv4/IPv6)
argv2: Public port
argv3: IP4P
argv4: Bind port (private port)
argv5: Protocol (TCP/UDP)
argv6: Private address (IPv4/IPv6)
所以脚本也很好写(保存到/usr/local/osgi/update.sh,别忘了chmod +x update.sh):#!/bin/sh # 换成自己的动态重定向服务,如我的是redirect.php curl https://[你的服务地址]?addr=$1:$2 -k # wget也可以,但是不支https wget http://[你的服务地址]?addr=$1:$2 -O - >> /dev/null 复制代码 对于所有系统,直接使用 cat > update.sh,输完了 Ctrl+D 即可
(如果系统很好心提供了vi,那就更方便了,比如我的H60G就很良心地提供了busybox vi)#!/bin/sh curl https://....?addr=$1:$2 -k ^D 复制代码 这样就OK了
考虑:自启动
除非你家的光猫 7x24 小时开机,不然难免会想要自启动
我最开始修改了etc文件夹里的文件,第一台变砖第二台直接还原。
最后很简单,直接暴力干掉插件系统就行了(java...如果你有需要建议留着)
参考了这篇文章,不仅干掉了java插件系统,大幅度优化之外还提供了自启动管理
但是还是不能照抄,因为我们的java挂载不是镜像,而是完整的磁盘分区
Filesystem1K-blocksUsedAvailableUse%Mounted on/dev/mtdblock12 30720144641625647%/usr/local/osgi 那就更好办了,直接find出手找到java文件$ cd /usr/local/osgi/
/usr/local/osgi $ find ./ -name java
./local/j2re/bin/java替换成以下内容就行了
(这里吐槽一下,垃圾光猫权限都不给足,还需要su升权,详情:https://hi.imzlh.top/2024/03/11.cgi)#!/bin/sh if [ ! -f /tmp/services.log ] then while true do curl -sk http://www.gstatic.com/generate_204 && break sleep 10 done echo aDm8H%MdA | su -c "/usr/local/osgi/rc.sh" -l root > /tmp/services.log & else echo "services already started" fi exit 1 复制代码 接下来是自启动脚本 /usr/local/osgi/rc.sh,这个脚本里是有root权限的
这里,我们需要启动nginx和natmap
注意 千万别忘记mkdir /tmp/nginx/,不然nginx会启动报错的cd /usr/local/osgi/ ./natmap -4 -k 8 -s stunserver.stunprotocol.org -h baidu.com -t 192.168.1.2 -p 80 -d -e update.sh mkdir /tmp/nginx/ ./nginx 复制代码 建议添加一行用来挂载USB磁盘保存重启
OK!全文完。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
相关推荐