✨ 瞬间 15 📚 归档 11 🏷️ 标签 26
📂 分类
🏷️ 标签 (26)

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
2
3
4
<td class="td2">
<span id="ssid_header">CMCC-</span>
<input id="Frm_ESSID" maxlength="27">
</td>

光改前端没用——JS 提交时会把 CMCC- 再拼回去。追到 .gch 服务端模板,发现清除前缀的代码被条件包裹:

1
2
3
4
5
6
7
8
9
10
<%
if((getenv("CountryCode")==308)||(getenv("CountryCode")==314))
{
%>
if(getValue("ESSIDPrefix")=="CMCC-"){
setValue("ESSIDPrefix","");
}
<%
}
%>

只有国家码 308/314 才输出这段 JS,国内设备不满足,前缀永远保留。

二、开启 Telnet 并确认设备

访问特定 URL 开启 Telnet:

1
http://192.168.1.1/cgi-bin/telnetenable.cgi?telnetenable=1

用 PuTTY(Telnet 模式)连接 192.168.1.1:23,登录后用户为 tpd(受限)。确认设备信息:

1
2
uname -a
cat /proc/version

本教程适用:Linux 4.1.25+ armv7l,中兴 ZXIC,CMCCV5.2.0B07。

三、提权到 root

检查环境后,从 /etc/shadow 提取 root 密码哈希($5$ = SHA-256 crypt),在电脑上用 hashcat 破解:

1
hashcat.exe -m 7400 -a 0 hash.txt word.txt -O

中兴移动光猫常见默认 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
2
cp /home/httpd/pon_net_user_wlan_conf_js.gch /tmp/pon_net_user_wlan_conf_js.gch.bak
sed -i '1439,1442d;1446,1448d' /home/httpd/pon_net_user_wlan_conf_js.gch

5G:备份后,删除 1396-1399 和 1403-1405 行:

1
2
cp /home/httpd/pon_net_user5_wlan_conf_js.gch /tmp/pon_net_user5_wlan_conf_js.gch.bak
sed -i '1396,1399d;1403,1405d' /home/httpd/pon_net_user5_wlan_conf_js.gch

修改后用 sed -n 验证:条件外壳消失,清空 JS 直接暴露。行号因固件版本可能不同,执行前务必先 sed -n 确认。

五、让改动生效

1
killall -HUP httpd

只 reload web 服务,不会断网。浏览器 Ctrl+F5 强刷 WLAN 配置页,前缀消失。

六、备份与恢复

/tmp 重启会清空,把备份拷到持久目录:

1
2
3
mkdir -p /userconfig/gch_backup
cp /tmp/pon_net_user_wlan_conf_js.gch.bak /userconfig/gch_backup/
cp /tmp/pon_net_user5_wlan_conf_js.gch.bak /userconfig/gch_backup/

恢复时把备份拷回 /home/httpd/ 并 killall -HUP httpd。

七、注意事项

  • TR069 会覆盖:运营商可能重新下发配置,改完若被覆盖需重做
  • 超管密码会变:TR069 每次连接可能重设超管密码
  • 固件升级会覆盖:.gch 文件会被还原,需重新改
  • 改文件风险:语法错会导致页面打不开,改动前必须备份
  • 适用范围:仅适用于自己拥有的设备,不同型号行号可能不同

附:一键脚本

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/sh
# 备份
mkdir -p /userconfig/gch_backup
cp /home/httpd/pon_net_user_wlan_conf_js.gch /userconfig/gch_backup/pon_net_user_wlan_conf_js.gch.bak
cp /home/httpd/pon_net_user5_wlan_conf_js.gch /userconfig/gch_backup/pon_net_user5_wlan_conf_js.gch.bak
# 改 2.4G
sed -i '1439,1442d;1446,1448d' /home/httpd/pon_net_user_wlan_conf_js.gch
# 改 5G
sed -i '1396,1399d;1403,1405d' /home/httpd/pon_net_user5_wlan_conf_js.gch
# 重启 web 服务
killall -HUP httpd
echo "Done. Ctrl+F5 refresh WLAN page."

⚠️ 行号会因固件版本不同而变,脚本执行前务必先用 **sed -n** 确认行号。

留言 1

  • NMedivh

    Srat Rail

以上留言经站长审核后展示,提交后需等待审核。

留言

0/500

留言经审核后才会公开显示:审核通过后刷新本页即可看到。