移动光猫超级密码获取教程:诺基亚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. 记录SuPasswordv属性的值(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年编写,如有技术更新或设备型号变化,请参考最新的官方文档和社区资源。

评论

发表回复

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