折腾指南: 将光猫改造成你的NAS,WebDAV+网页文件管理器vList5+natmap
原文:https://hi.imzlh.top/2024/07/18.cgi (预发布)
很久没有写完全折腾类文章了,这还得追溯到上次折腾S905L3A那会。
这篇文章很长,但是是小白级包学会。
为什么会有这篇文章?
这篇文章本来应该在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 : 1processor : 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 : 1Hardware : 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脚本和搭建网盘,体积不大于200kfrpc https://github.com/fatedier/frp/releases建议使用ddns+ipv6或natmap
将HTTP穿透出去,方便远程访问秘制版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 | gunzip - > aria2
# nginx
curl https://hi.imzlh.top/usr/uploads/2024/07/1871251897.gz | gunzip - > nginx
# natmap
curl https://hi.imzlh.top/usr/uploads/2024/07/1468987588.gz | gunzip - > natmap
配置nginx
首先,你需要安装vList5和一个fancyindex美化包,方法也非常简单
假设你的硬盘已经挂载到了/mnt
,如果没有,请执行mount /dev/sda /mnt
curl -L 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 -L | tar xz
mkdir .static
cd .static
curl https://hi.imzlh.top/usr/uploads/2024/07/2093537519.gz | tar xz
关于nginx配置文件这里直接抄作业就行了,保存到 /usr/local/osgi/etc/nginx/nginx.conf
我可是研究了将近一天研究出来了这一份高性能高并发的nginx配置
(B:你似乎很骄傲啊,你知不知道,你这一句就相当于赤裸裸地在说 “快夸我,快给我三连”啊?)
(别忘了新建文件夹,mkdir /usr/local/osgi/etc/nginx/
)
worker_processes auto;
events {
accept_mutex on;
multi_accept on;
use epoll;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$status $remote_addr $request';
access_log /tmp/nginx/access.log main;
tcp_nopush off;
tcp_nodelay on;
client_max_body_size 256m;
client_body_buffer_size 128m;
client_header_timeout 1m;
client_body_timeout 10m;
send_timeout 10m;
reset_timedout_connection on;
client_body_in_file_only clean;
client_body_in_single_buffer on;
gzip on;
gzip_min_length 1024;
gzip_buffers 4 128k;
gzip_types text/plain;
gzip_vary on;
output_buffers 2 128k;
postpone_output 1460;
sendfile on;
sendfile_max_chunk 256k;
directio 4m;
keepalive_timeout 1h;
open_file_cache max=1024 inactive=1m;
open_file_cache_min_uses 4;
server_tokens off;
proxy_cache_path /tmp/nginx/cache/ levels=1:2
keys_zone=thumb:1M inactive=10h max_size=256M;
proxy_http_version 1.1;
ssl_session_cache shared:SSL:1m;
dav_ext_lock_zone zone=dav:1m timeout=1h;
js_shared_dict_zone zone=njs:1m type=string;
resolver 114.114.114.114 223.5.5.5 8.8.8.8;
http2_recv_buffer_size 128k;
http2_chunk_size 128k;
http3_stream_buffer_size 128k;
server {
listen 81;
# listen [::]:8443 ssl;
# listen [::]:444 quic;
listen [::]:88;
# http2 on;
# http3 on;
# ssl_certificate [证书cer/crt文件];
# ssl_certificate_key [证书key文件];
# ssl_protocols TLSv1.2 TLSv1.3;
# ssl_buffer_size 32k;
# ssl_early_data on;
# ssl_session_timeout 10m;
root /mnt/;
index index.html;
fancyindex on;
fancyindex_localtime on;
fancyindex_exact_size off;
fancyindex_header /.static/header.html;
fancyindex_footer /.static/footer.html;
fancyindex_css_href /.static/core.css;
fancyindex_default_sort name;
fancyindex_show_path off;
fancyindex_hide_parent_dir on;
fancyindex_time_format "%y/%m/%d %H:%M";
charset_types *;
charset utf-8;
dav_methods PUT DELETE MKCOL COPY MOVE;
dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK;
dav_access user:rw group:rw all:r;
create_full_put_path on;
dav_ext_lock zone=dav;
# js_path lib/nginx/;
js_import /usr/local/osgi/lib/nginx/vlist.js;
js_import /usr/local/osgi/lib/nginx/ddns.js;
js_fetch_buffer_size 128k;
js_fetch_max_response_buffer_size 4m;
js_fetch_timeout 30s;
js_fetch_verify off;
add_header Alt-Svc 'h3=":444"; h2=":8443"; ma=86400';
add_header Access-Control-Allow-Origin * always;
add_header Access-Control-Allow-Headers "Content-Type, Authorization" always;
location = /@api/{
js_var $authkey "[请自己设一个密码]";
js_content vlist.main;
}
}
}
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
# 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 ^D
这样就OK了
考虑:自启动
除非你家的光猫 7x24 小时开机,不然难免会想要自启动
我最开始修改了etc文件夹里的文件,第一台变砖第二台直接还原。
最后很简单,直接暴力干掉插件系统就行了(java...如果你有需要建议留着)
参考了这篇文章,不仅干掉了java插件系统,大幅度优化之外还提供了自启动管理
但是还是不能照抄,因为我们的java挂载不是镜像,而是完整的磁盘分区
|Filesystem | 1K-blocks | Used | Available | Use%| Mounted on |
|:--:--:--:--:--
| /dev/mtdblock12 | 30720 | 14464 | 16256 | 47% | /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 -s 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磁盘
mount /dev/sda /mnt
保存重启
OK!全文完。
折腾指南: 将光猫改造成你的NAS,WebDAV+网页文件管理器vList5+natmap的更多相关文章
- 中兴F660光猫改桥接
家里使用的电信宽带,电信给配的是中兴的F660光猫.光猫内置路由和WIFI功能,但是无线有些稳定,希望把光猫改成桥接模式,使用自己的路由拨号. 所需工具 offzip.exe(下载地址http://a ...
- 搭建自己私有的PKM系统,各家PKM大比拼。。附:构建自己熟悉的基础Docker,破解联通光猫
Docker这容器真是很好玩!干啥都想上docker了,快疯了. 这不,最近wiz笔记开始收费,很是不爽,需要寻求新的PKM系统了.备选及落选理由如下: wiz笔记 -- 好用,顺手.要开始收费了,不 ...
- 中国电信中兴F460光猫破解及路由级联设置
http://blog.csdn.net/pipisorry/article/details/50636541 中国电信中兴F460光猫破解,获取超级密码,修改配置. 之前家里的宽带升级了,换成了光纤 ...
- 中兴F412光猫超级密码破解、破解用户限制、关闭远程控制、恢复路由器拨号
不少家庭都改了光纤入户,那肯定少不了光猫的吧.今天以中兴F412光猫为例介绍下此型号光猫超级密码的破解方法.一.F412超级密码破解方法1.运行CMD,输入telnet 192.168.1.1: 2. ...
- 华为 HG8245C 光猫 修改无线用户数限制+hw_ctree.xml 文件解密
这个操作方法是 从网上其他人提供的方法 和我一个朋友总结出来的,我只是负责整理,并实地在我自己的光猫上操作成功了 风险提示 :刷机有风险,操作需谨慎, 备份备份备份! 俺家,俺的新家是电信光纤接入, ...
- 华为HG8240光猫-破解-联通-2016-telnet-http
序 我与大家想法基本一致,拿到联通的光猫后,心想它应该是个路由器吧,如果让它自己拨号上网就好了,即省一台路由器,又省电了.抱着这个想法,在2013年里,我搜罗了不少文章,经过Q群,搜索,询问,阅读,理 ...
- 成功获取并更改中兴F660光猫的超级用户密码解除四台限制
上次雷雨后更换的中兴的F660光猫还是很不错的,很稳定,不过超级密码确实记不住,找了些资料,今天成功的更改了密码,简要的写出过程以备下次参考: 第一步:获取超级密码(已知用户名telecomadmin ...
- 三网合一 中国移动铁通光猫 HG6821M 如何设置宽带自动连接
假期炎热,都说大连是海滨城市比较凉爽,但是那地方潮气太大,实在是不太好呆,于是乎我打道回府来到了内陆家中. 回到家中发现老式的光猫被替换成了 最新的 HG6821M . 按照铭牌上的说明,登录. ...
- 北京联通光猫 F427 路由改桥接的方法
最近安装了一个联通的宽带,赠送的光猫是 中兴 F427,然后联通小哥给安装的时候,直接开启了光猫的路由功能. 不过联通这个光猫实在是太弱了,起码默认的帐号开启的功能实在是太弱了,没法完成以下几个功能: ...
- 联通友华通信光纤猫PT952G设置无线路由光猫桥接拨号
#0x1 登陆后台,点击网络,点击宽带设置.选择第二个接口. 0x2 只修改模式,改成Bridge,其他无需修改.然后直接接路由器拨号就行,或者电脑都行. 0x4 恢复默认拨号,这样修改以后,直接连 ...
随机推荐
- linux 文件的特殊权限:suid sgid sticky
目录 一.关于文件的特殊权限 二.suid 三.SGID 四.Stickybit 一.关于文件的特殊权限 1.文件与目录设置不止基础权限:r,w,x,还有所谓的特殊权限.特殊权限会拥有一些" ...
- mySql脚本转换成sqlserver脚本(主流数据库的脚本都能转换,需要使用powerdesigner)
我使用的powerdesginer版本是16.5,只需要脚本文件就可以了,不需要安装mysql和sqlserver. 文件->反向工程->Database... 选择原脚本文件的数据库类型 ...
- Vue cli之项目目录结构
src 主开发目录,要开发的单文件组件全部在这个目录下的components目录下 static 静态资源目录,所有的css,js文件放在这个文件夹 dist 项目打包发布文件夹,最后要上线单文件项目 ...
- Redis数据存储和读写
今天工作群里,有小伙伴问了一个问题,从Redis获取的数据,一会是0,一会是OK. 这引起了我们对Redis数据存储和读写的疑问. 以下是整理的一些技术研究内容. 在 Redis 中,所有的数据存储都 ...
- itest work 开源接口测试&敏捷测试管理平台 9.5.0 GA_u1,优化及修复关键 BUG
(一)itest work 简介 itest work (爱测试) 一站式工作站让测试变得简单.敏捷,"好用.好看,好敏捷" ,是itest wrok 追求的目标.itest w ...
- k8s——kubctl命令基础
语法 kubevtl [command] [type] [name] [flags] command: 指定要对一个或多个资源执行的操作,例如,`create`,`get`,`describe`,`d ...
- C# 配置文件增加自定义节点
话不多说直接开撸! 首先创建一个Config的文件夹然后新增一个后缀名为.config的文件 配置文件的代码如下: <?xml version="1.0" encoding= ...
- kafka集群
对于运维需要掌握的kafka基础操作,读写管理掌握后,下一步就是集群部署搭建了. 1. kafka天然支持集群 2. kafka将集群状态写入zookeeper. 集群部署 1. 确保zk启动 [de ...
- Ton 区块链的官方 类ERC20-Token 智能合约代码-Transfer部分解析
作者:林冠宏 / 指尖下的幽灵.转载者,请: 务必标明出处. 掘金:https://juejin.im/user/1785262612681997 GitHub : https://github.co ...
- 微信和支付宝异步回调通知IP白名单
附一:微信支付回调通知出口IP列表 商户侧对商户回调通知功能开通白名单网段: 上海电信出口网段:101.226.103.0/25 上海联通出口网段:140.207.54.0/25 上海CAP出口网段: ...