移动光猫超级密码获取教程:诺基亚XG-04G-MF桥接模式设置详解

前言

随着千兆宽带的普及,越来越多用户希望充分发挥网络性能,而运营商提供的光猫往往在路由功能和管理界面上存在限制。本文将详细介绍如何获取移动光猫的超级用户权限,并将其配置为桥接模式,以便使用性能更强的第三方路由器来管理网络。

免责声明:本文仅供技术学习和个人网络优化使用,请在合法合规的前提下操作。

设备信息与背景

测试环境

  • 光猫型号:XG-04G-MF
  • 制造商:诺基亚贝尔股份公司
  • 设备类型:10Gbit无源光网络用户端设备(XG-PON ONE)
  • 运营商:中国移动
  • 宽带套餐:1000M(10元宽带包+10元提速包)
  • 下游路由器:基于J4125的OpenWrt软路由

技术背景

什么是光猫?

光猫(Optical Network Unit,ONU)是光纤接入网络的用户端设备,主要功能是将光信号转换为电信号,实现光纤到户(FTTH)。现代光猫通常集成了路由器功能,但性能和管理灵活性往往不如专业路由设备。

为什么需要桥接模式?

  1. 性能优化:专业路由器通常具有更强的处理能力和更丰富的功能
  2. 网络管理:避免双重NAT问题,简化网络拓扑
  3. 个性化配置:获得更多的网络控制权和配置选项
  4. 避免干扰:减少运营商远程配置对个人网络设置的影响

操作前的重要说明

权限层级说明

移动光猫通常有三个权限级别:

  • user:普通用户权限(光猫背面标注),功能有限
  • user_ftp:系统管理员权限,但是是user密码
  • CMCCAdmin:超级管理员权限,可以进行高级配置
  • root:系统管理员权限,具有完全控制能力

风险提示

  1. 操作过程中可能导致设备无法正常工作
  2. 修改配置可能影响运营商的技术支持
  3. 请确保具备基本的网络知识和故障排除能力
  4. 建议在操作前备份重要配置信息

详细操作步骤

第一步:准备工作

1.1 断开光纤连接

目的:防止运营商远程干预和配置下发
操作:拔掉光猫上的光纤接头
注意:确保只有本地网络连接

1.2 重置光猫

操作:按住光猫背面的Reset键,保持10-15秒
等待:观察指示灯,等待设备完全重启
结果:光猫恢复出厂设置,可以使用默认超级密码

1.3 网络连接

  • 使用网线将电脑直接连接到光猫的LAN口
  • 确保电脑获取到192.168.1.x网段的IP地址
  • 可以通过浏览器访问192.168.1.1

第二步:获取超级用户权限

2.1 使用默认超级密码登录

用户名:CMCCAdmin
密码:aDm8H%MdA
登录地址:http://192.168.1.1

技术说明:这是移动光猫的出厂默认超级密码,除了诺基亚版本的光猫,其他版本同样是这个。在正常注册流程中,运营商会通过TR069协议远程修改此密码。

2.2 开启Telnet服务

访问以下URL开启Telnet:

http://192.168.1.1/system.cgi?telnet

注意:此URL仅适用于诺基亚制造的光猫型号。其他品牌可能有不同的开启方式。

第三步:获取root密码

我们提供两种方法获取root权限,推荐使用方法一:

方法一:密码解密法(推荐)

3.1 获取加密密码

  1. 在已登录的CMCCAdmin界面访问: http://192.168.1.1/dumpdatamodel.cgi
  2. 在页面中搜索SuPassword,找到类似以下的代码块:
<CLIPrompt rw="RW" v="\\\\$"></CLIPrompt>
<SuPassword rw="RW" v="**************" ealgo="ab"></SuPassword>
<SSHEnable rw="RW" v="False"></SSHEnable>
  1. 记录SuPassword中v属性的值(24个字符的加密字符串)

3.2 密码解密

诺基亚光猫使用AES-CBC加密,密钥和向量固定:

  • 密钥:3D A3 73 D7 DC 82 2E 2A 47 0D EC 37 89 6E 80 D7 2C 49 B3 16 29 DD C9 97 35 4B 84 03 91 77 9E A4
  • 初始向量:D0 E6 DC CD A7 4A 00 DF 76 0F C0 85 11 CB 05 EA

使用以下Python脚本解密:

import base64  
from typing import Optional  
from Crypto.Cipher import AES  

class RouterCrypto:  
    """路由器加密解密工具类"""  
    DEFAULT_KEY = '3D A3 73 D7 DC 82 2E 2A 47 0D EC 37 89 6E 80 D7 2C 49 B3 16 29 DD C9 97 35 4B 84 03 91 77 9E A4'  
    DEFAULT_IV = 'D0 E6 DC CD A7 4A 00 DF 76 0F C0 85 11 CB 05 EA'  

    def __init__(self, key: Optional[str] = None, iv: Optional[str] = None):  
        self.key = key or self.DEFAULT_KEY  
        self.iv = iv or self.DEFAULT_IV  
        self._cipher = None  
        self._init_cipher()  

    def _init_cipher(self) -> None:  
        """初始化AES密码器"""  
        try:  
            key_bytes = self._hex_string_to_bytes(self.key)  
            iv_bytes = self._hex_string_to_bytes(self.iv)  
            self._cipher = AES.new(key_bytes, AES.MODE_CBC, iv_bytes)  
        except Exception as e:  
            raise ValueError(f"初始化密码器失败: {e}")  

    @staticmethod  
    def _hex_string_to_bytes(hex_string: str) -> bytes:  
        """将十六进制字符串转换为字节"""  
        hex_clean = hex_string.replace(' ', '')  
        return bytes.fromhex(hex_clean)  

    @staticmethod  
    def _remove_pkcs7_padding(data: bytes) -> bytes:  
        """移除PKCS7填充"""  
        if not data:  
            return data  
        padding_length = data[-1]  
        if padding_length > len(data) or padding_length == 0:  
            raise ValueError("无效的填充")  
        for i in range(padding_length):  
            if data[-(i + 1)] != padding_length:  
                raise ValueError("填充验证失败")  
        return data[:-padding_length]  

    def decrypt(self, encrypted_data: bytes) -> bytes:  
        """解密数据"""  
        try:  
            self._init_cipher()  
            decrypted = self._cipher.decrypt(encrypted_data)  
            return self._remove_pkcs7_padding(decrypted)  
        except Exception as e:  
            raise ValueError(f"解密失败: {e}")  

    def decrypt_base64(self, base64_data: str, encoding: str = 'utf-8') -> str:  
        """解密Base64编码的数据并返回字符串"""  
        try:  
            encrypted_bytes = base64.b64decode(base64_data)  
            decrypted_bytes = self.decrypt(encrypted_bytes)  
            return decrypted_bytes.decode(encoding)  
        except Exception as e:  
            raise ValueError(f"Base64解密失败: {e}")  

def main():  
    # 将获取到的加密密码填入这里
    encrypted_base64 = '这里填入SuPassword的v值'  

    try:  
        crypto = RouterCrypto()  
        decrypted_text = crypto.decrypt_base64(encrypted_base64)  
        print(f"解密结果: {decrypted_text}")  
    except Exception as e:  
        print(f"解密失败: {e}")  

if __name__ == "__main__":  
    main()

方法二:FTP用户提权法

  1. 在CMCCAdmin界面启用FTP和Samba服务:
    • 进入应用 -> 家庭存储 -> FTP,勾选启用FTP
    • 进入应用 -> 家庭存储 -> SAMBA共享,勾选启用Samba
  2. 使用普通用户账户Telnet登录光猫
  3. 切换到FTP用户:
su user_ftp
# 密码与user用户相同
  1. 获取root权限:
su  # 切换到root用户
passwd  # 重置root密码

第四步:宽带账号配置

4.1 获取宽带账号密码

方法一:移动APP查询

  • 登录中国移动手机APP
  • 在宽带服务中查看或重置宽带密码

方法二:从光猫配置中提取

  1. 访问配置导出页面: http://192.168.1.1/dumpdatamodel.cgi
  2. 搜索你的宽带账户名(通常是手机号),找到Username段:
<Username rw="RW" v="你的宽带账号"></Username>
<Password rw="RW" v="加密的密码" ealgo="ab"></Password>
  1. 使用nokia-router-cfg-tool.py脚本解密密码:
python nokia-router-cfg-tool.py -d 加密的密码字符串

4.2 注册光猫

  1. 重新连接光纤
  2. 配置宽带连接:
    • 登录CMCCAdmin账户
    • 进入网络 -> 宽带设置 -> Internet连接
    • 找到2_INTERNET_B_VID_41连接,确保使用路由模式而不是桥接
    • 填入宽带账号和密码(默认密码通常是6个8)
    • 保存并启用配置
  3. 等待注册完成:
    • 观察光猫指示灯
    • 注册灯熄灭,上网灯亮起表示注册成功

第五步:重置超级密码

由于运营商会在注册成功后自动修改CMCCAdmin密码,需要通过Telnet重新设置:

# 使用root或user_ftp用户登录Telnet
telnet 192.168.1.1

# 重置超级密码为原始密码
cfgcli -s InternetGatewayDevice.DeviceInfo.X_CT-COM_TeleComAccount.Password aDm8H%MdA

注意:根据测试,只有设置为aDm8H%MdA才能成功,其他密码可能会失败。

第六步:配置桥接模式

重新获得CMCCAdmin权限后,可以进行桥接模式配置:

  1. 登录管理界面:使用CMCCAdmin和重置后的密码
  2. 修改连接模式:
    • 进入网络 -> 宽带设置 -> Internet连接
    • 将主要连接的模式从”路由”改为”桥接”
    • 保存配置
  3. 配置下游路由器:
    • 在你的OpenWrt或其他路由器中配置PPPoE拨号
    • 使用宽带账号和密码进行连接

高级配置:禁用TR069

如果你希望阻止运营商远程下发配置,可以删除TR069连接:

操作步骤

  1. 登录CMCCAdmin账户
  2. 进入网络 -> 宽带设置 -> Internet连接
  3. 找到连接名称为tr069的项目
  4. 如果删除按钮被禁用,使用开发者工具:
    • 按F12打开开发者工具
    • 找到删除按钮的HTML元素:
<input class="buttonX" type="submit" id="do_del" value="删除" disabled>
- 删除`disabled`属性
- 点击删除按钮

TR069协议说明

TR069(Technical Report 069)是一种应用层协议,用于远程管理CPE(Customer Premises Equipment)设备。运营商通过此协议可以:

  • 远程配置设备参数
  • 监控设备状态
  • 推送固件更新
  • 重置设备配置

删除TR069连接可以阻止这些远程操作,但也可能影响运营商的技术支持服务。

网络拓扑优化建议

推荐网络架构

光纤 -> 光猫(桥接模式) -> 主路由器 -> 交换机/AP

配置要点

  1. 光猫设置:
    • 启用桥接模式
    • 关闭DHCP服务
    • 关闭Wi-Fi功能(如果不需要)
  2. 主路由器设置:
    • 配置PPPoE拨号
    • 设置合适的DNS服务器
    • 配置防火墙和端口转发
  3. 性能优化:
    • 启用硬件NAT加速(如果支持)
    • 优化QoS设置
    • 合理分配带宽

故障排除

常见问题

问题1:无法访问192.168.1.1

  • 检查网线连接
  • 确认IP地址获取正确
  • 尝试使用静态IP配置

问题2:默认超级密码无法登录

  • 确认光猫已完全重置
  • 检查光纤是否已断开
  • 尝试多次重置操作

问题3:Telnet连接失败

  • 确认Telnet服务已开启
  • 检查Windows Telnet客户端是否已启用
  • 尝试使用PuTTY等第三方工具

问题4:密码解密失败

  • 检查加密字符串是否完整
  • 确认使用正确的密钥和向量
  • 验证Python环境和依赖库

恢复措施

如果操作过程中出现问题:

  1. 重新执行重置操作
  2. 联系运营商技术支持
  3. 考虑更换光猫设备

总结

通过本文的详细步骤,你应该能够成功获取移动光猫的超级用户权限,并将其配置为桥接模式。这样可以充分发挥高性能路由器的优势,获得更好的网络体验和管理灵活性。

请记住:

  • 操作前做好充分准备和风险评估
  • 保存重要配置信息以备恢复
  • 在合法合规的前提下进行操作
  • 如有疑问,及时寻求专业技术支持

注意事项:本文内容基于特定型号设备的测试结果,不同型号的光猫可能存在差异。请根据实际情况调整操作步骤,并承担相应的操作风险。

参考资料与延伸阅读


本文于2025年编写,如有技术更新或设备型号变化,请参考最新的官方文档和社区资源。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注