CMCC光猫去除SSID强制前缀教程
2026.10.11
研究背景 Background
中国移动定制的 H3-2saLite 智能家庭网关(中兴方案 ZXIC,固件 CMCCV5.2.0B07)会在 WLAN 配置页强制给 SSID 加上 CMCC- 前缀。无线名称被拆成「固定前缀 + 输入框」,用户只能改后半段。本文记录从问题定位到永久去除前缀的完整过程。
参考资料 References
技术总结 Technical Summary
问题根因在 .gch 服务端模板文件:清除 SSID 前缀的 JS 代码被包裹在 <% if CountryCode==308 %> 条件中,国内设备不满足该国家码条件,清空逻辑永远不输出。修复方法是删掉服务端条件外壳,让清空 JS 无条件执行。
| 环节 | 关键点 |
|---|---|
| 问题根因 | .gch 模板里的 `` 条件,国内设备不满足,清空前缀的 JS 不输出 |
| 修复方法 | 删掉服务端条件外壳(7 行),让清空 JS 无条件执行 |
| 涉及文件 | pon_net_user_wlan_conf_js.gch(2.4G)、pon_net_user5_wlan_conf_js.gch(5G) |
| 需要权限 | root(tpd 用户只能看,不能写 /home/httpd/) |
| 提权路径 | su - + root 密码(从 /etc/shadow 用 hashcat -m 7400 破解) |
| 生效方式 | killall -HUP httpd reload web 服务,不断网 |
| 备份位置 | /userconfig/gch_backup/(持久),/tmp/(临时) |
细节 Details
一、问题定位
浏览器 F12 查看 WLAN 配置页,SSID 被拆成固定前缀 + 输入框:
1 | |
光改前端没用——JS 提交时会把 CMCC- 再拼回去。追到 .gch 服务端模板,发现清除前缀的代码被条件包裹:
1 | |
只有国家码 308/314 才输出这段 JS,国内设备不满足,前缀永远保留。
二、开启 Telnet 并确认设备
访问特定 URL 开启 Telnet:
1 | |
用 PuTTY(Telnet 模式)连接 192.168.1.1:23,登录后用户为 tpd(受限)。确认设备信息:
1 | |
本教程适用:Linux 4.1.25+ armv7l,中兴 ZXIC,CMCCV5.2.0B07。
三、提权到 root
检查环境后,从 /etc/shadow 提取 root 密码哈希($5$ = SHA-256 crypt),在电脑上用 hashcat 破解:
1 | |
中兴移动光猫常见默认 root 密码为 aDm8H%MdA。回到 telnet 执行 su - 提权。
也可用 sidbg 解密配置数据库提取超管密码,但超管在 web 界面仍改不了 SSID 前缀——前缀是固件层面强制的。
四、修改 .gch 文件
两个目标文件:
| 文件 | 作用 |
|---|---|
/home/httpd/pon_net_user_wlan_conf_js.gch |
2.4G WLAN 配置页 |
/home/httpd/pon_net_user5_wlan_conf_js.gch |
5G WLAN 配置页 |
2.4G:备份后,删除 1439-1442 和 1446-1448 行(服务端条件外壳):
1 | |
5G:备份后,删除 1396-1399 和 1403-1405 行:
1 | |
修改后用 sed -n 验证:条件外壳消失,清空 JS 直接暴露。行号因固件版本可能不同,执行前务必先 sed -n 确认。
五、让改动生效
1 | |
只 reload web 服务,不会断网。浏览器 Ctrl+F5 强刷 WLAN 配置页,前缀消失。
六、备份与恢复
/tmp 重启会清空,把备份拷到持久目录:
1 | |
恢复时把备份拷回 /home/httpd/ 并 killall -HUP httpd。
七、注意事项
- TR069 会覆盖:运营商可能重新下发配置,改完若被覆盖需重做
- 超管密码会变:TR069 每次连接可能重设超管密码
- 固件升级会覆盖:
.gch文件会被还原,需重新改 - 改文件风险:语法错会导致页面打不开,改动前必须备份
- 适用范围:仅适用于自己拥有的设备,不同型号行号可能不同
附:一键脚本
1 | |
⚠️ 行号会因固件版本不同而变,脚本执行前务必先用 **sed -n** 确认行号。
留言 1
Srat Rail
以上留言经站长审核后展示,提交后需等待审核。