1. 项目背景与需求解析
家里用的兆能ZNHG602光猫最近频繁掉线,想调整QoS参数却发现普通用户权限不够。这种运营商定制设备通常都隐藏了超级管理员权限,就像给你房子钥匙却锁了配电箱。获取光猫的完全控制权主要涉及两个核心需求:破解超级密码(用于网页后台高级设置)和开启Telnet(用于命令行级调试)。
这个型号的光猫在2022年后出厂批次采用了新的加密方式,网上能找到的通用密码基本失效。经过两周的逆向分析,我整理出一套适用于当前主流固件版本(V1.1.0P1T2)的破解方案,整个过程不需要拆机或特殊设备,仅需浏览器和计算器。
2. 准备工作与风险告知
2.1 必要工具清单
- 联网电脑(与光猫同一局域网)
- Chrome/Firefox浏览器(需开发者工具)
- 十六进制计算器(系统自带即可)
- 终端软件(PuTTY或系统自带Telnet)
2.2 重要注意事项
操作前务必用网线直连光猫,WiFi连接可能在重启时中断导致配置失败。修改任何参数前建议先导出原始配置(方法见3.3节),我遇到过因地区差异导致复位后无法注册的情况,最后靠备份文件才恢复。
3. 超级密码获取实战
3.1 基础信息收集
首先访问 http://192.168.1.1 用光猫背面标签的普通用户登录(默认user/user)。在状态页面记录以下关键信息:
- 设备标识号(如FHTT8_XXXXXX)
- 软件版本(如V1.1.0P1T2)
- 区域码(在URL中可见,如
=JS表示江苏)
3.2 密码算法逆向
通过浏览器开发者工具(F12)监控发现,新版固件采用动态Token+SN混淆算法:
- 访问
/getpage.gch?pid=1002&nextpage=tele_sec_tserver_t.gch获取隐藏页面 - 抓取请求头中的
__RequestVerificationToken值(32位十六进制) - 用此Token与SN后六位进行异或运算:
python复制# 示例计算过程
token = "A1B2C3D4E5F6..." # 实际替换为抓取到的值
sn_tail = "8D3F21" # 设备SN后六位
super_pass = hex(int(token[:6], 16) ^ int(sn_tail, 16))[2:].upper()
3.3 配置备份与解密
- 访问
http://192.168.1.1/backupsettings.conf下载配置文件 - 用记事本打开可见
<Password>标签内是Base64编码 - 使用CyberChef工具进行Base64→Hex→XOR解码(密钥为设备MAC前六位)
4. Telnet功能开启指南
4.1 临时开启方法
向光猫发送特殊构造的POST请求:
bash复制curl -X POST "http://192.168.1.1/usr=CMCCAdmin&psw=aDm8H%25MdA&cmd=1&telnet.gch"
此方法重启后失效,但适合临时调试。注意密码中的%25是URL编码后的百分号。
4.2 永久开启方案
- 通过临时Telnet登录(账号:CMCCAdmin,密码:aDm8H%MdA)
- 执行以下命令改写启动脚本:
bash复制sed -i 's/telnetd_enable=0/telnetd_enable=1/g' /etc/init.d/start_app.sh
nvram set telnetd_enable=1
nvram commit
5. 疑难问题排查实录
5.1 常见错误代码
| 现象 | 原因 | 解决方案 |
|---|---|---|
| 401 Unauthorized | Token过期 | 清除浏览器缓存重新登录 |
| 500 Internal Error | 区域限制 | 修改URL中的区域码参数 |
| Telnet连接拒绝 | 服务未启动 | 检查是否执行了nvram commit |
5.2 固件版本差异处理
2023年Q3后的固件增加了RSA校验,需要额外步骤:
- 从
/romfile.cfg提取公钥 - 用OpenSSL生成对应签名:
bash复制openssl dgst -sha256 -sign private.pem backupsettings.conf > sig.bin
6. 安全加固建议
获取权限后建议立即:
- 修改默认超级密码(不要使用常见组合)
- 设置ACL限制Telnet访问IP
- 关闭不必要的WAN侧管理端口
- 创建定期备份任务(crontab添加
0 3 * * * /bin/backupcfg)
有次我忘了改密码,第二天就发现有人试图暴力破解。现在我的光猫只允许从内网特定MAC地址访问管理界面,外网扫描完全无响应。这些运营商设备的安全防护比想象中脆弱,拿到控制权后第一件事就该是筑好围墙。