Administrator
发布于 2026-04-06 / 0 阅读
0
0

移动宽带更换XG-140G-MD光猫

前言

之前装机时移动给配发的光猫是ZXHN F7000MV3 。这个猫只有千兆电口,一直想着把它换掉。最近发现2.5G光猫包邮到手只要34元,遂下单了一只XG-140G-MD,这个猫评价还可以,重点是容易破解。

我这里移动宽带只验证LOID,填写LOID和密码(123456)就能过验证,无需修改SN、MAC等信息。至于配置信息,直接照抄F7000MV3即可,配置桥接模式毫无难度。

修改地区

超级用户:CMCCAdmin

超级密码:aDm8H%MdA

用上述默认信息登录光猫,访问 http://192.168.1.1/opid_setting.cgi 设置省份。不同地区TR069配置不同,如果想自动下发配置,本步骤必不可少,如果自行配置就无所谓了。

开启telnet

用默认的超级用户名及密码登录管理页面,然后访问 http://192.168.1.1/system.cgi?telnet 即可开启telnet。

默认user登录telnet拿不到root权限。拿root权限有2种方式:

ftp用户提权

首先在光猫管理页面中打开ftp功能,这是为了启用 user_ftp 这一用户:

然后用光猫背面的user及密码登录telnet。默认的user权限很低,不过可以免密切换到 user_ftp ,user_ftp 又可以免密切换到root,拿到root权限后就可以为所欲为了:

su user_ftp
su
cfgcli -s InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.SuPassword aDm8H%MdA (修改root密码为aDm8H%MdA)

记得第一时间改掉root密码,这里不要图省事用passwd root修改,要用系统提供的cfgcli工具。

直接破解root密码

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

脚本第3行做了小小修改,将依赖库改成了 pycryptodomex ,原始脚本依赖库搞不定,修改后运行完美:

python -m pip install pycryptodomex
import base64  
from typing import Optional  
from Cryptodome.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()

诺基亚光猫使用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

打开 http://192.168.1.1/dumpdatamodel.cgi ,搜索 SuPassword ,定位到这样一段:

<SuPassword ml="64" rw="RW" t="string" v="LZ8gkScDdQUp2k+it/ADtw==" ealgo="ab"></SuPassword>

LZ8gkScDdQUp2k+it/ADtw== 就是加密后的密码,把它复制到脚本中,赋值给 encrypted_base64 ,运行后即可逆向得到原始密码:

解密结果: aDm8H%MdA

赞美原脚本作者,他写的光猫破解教程很到位,推荐阅读。

至此光猫破解大功告成,后续照抄原猫配置即可。如果页面超密被远程更改,可以用root身份telnet登录后,执行

cfgcli -s InternetGatewayDevice.DeviceInfo.X_CT-COM_TeleComAccount.Password aDm8H%MdA

改回默认超级密码。

常用命令备份

在超级用户的状态下访问 http://192.168.1.1/system.cgi?telnet 开启telnet功能
使用 telnet 协议连接光猫 通过普通用户登录(光猫背面铭牌处)后以 su user_ftp(有些光猫可能为su useradmin_ftp  取决于光猫背面铭牌处的信息) 身份登录 ,密码和普通账户密码相同
输入su获取root权限

修改SN(必须三条都修改)
ritool set YPSerialNum NBEL5A01B711 (要修改的SN)
ritool set MfrID NBEL (要修改的SN的前四位,应该是厂商代码)
ritool set G984Serial 5A01B711 修改的SN的8位)
修改MAC
ritool set MACAddress 3c:bd:69:6b:6d:7a (修改MAC地址为3c:bd:69:6b:6d:7a)
修改root密码
cfgcli -s InternetGatewayDevice.DeviceInfo.X_CT-COM_ServiceManage.SuPassword aDm8H%MdA (修改root密码为aDm8H%MdA)
修改超级登录用户名
cfgcli -s InternetGatewayDevice.DeviceInfo.X_CT-COM_TeleComAccount.UserName CMCCAdmin (修改超级用户为CMCCAdmin)
修改超级登录密码
cfgcli -s InternetGatewayDevice.DeviceInfo.X_CT-COM_TeleComAccount.Password aDm8H%MdA (修改超级密码为aDm8H%MdA)
关闭虚拟机
cfgcli -s InternetGatewayDevice.SoftwareModules.ExecEnv.1.Enable false
cfgcli -s InternetGatewayDevice.SoftwareModules.ExecEnv.2.Enable false
开启全锥形网络
cfgcli -s InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.X_ASB_COM_FullconeNATEnabled true (第二个参数2代表网络侧信息

2_INTERNET_B_VID_41  如果不同则修改为自身光猫对应的参数


设备注册提示:1是关闭,0是开启
cfgcli -s InternetGatewayDevice.X_CT-COM_UserInfo.Status 0
cfgcli -s InternetGatewayDevice.X_CT-COM_UserInfo.Result 1
开启 ipv6
cfgcli -f -s InternetGatewayDevice.DeviceInfo.X_CT-COM_IPProtocolVersion.Mode 3
修改设备基本信息
ritool set MfrID HWTC (将生产厂家标识NBEL 改为HWTC)
ritool set Mnemonic G-140W-ME (设备型号改为G-140W-ME)
恢复出厂设置
cfgcli -r

重启设备
reboot 或 reset


开启EPON和GPON自适应(待验证)
cfgcli -s InternetGatewayDevice.X_ASB_COM_PON_MODE.EnableAutoPon true

查看当前连接数
cat /proc/sys/net/netfilter/nf_conntrack_count
查看最大值连接数
cat /proc/sys/net/netfilter/nf_conntrack_max

修改最大值连接线(推荐300000)
vi nf_conntrack_max

查看系统
查看所有设置:ritool dump
查看内存:cat /proc/meminfo
查看当前挂载分区:cat /proc/mounts
硬件中断统计:cat /proc/interrupts
查看负载:cat /proc/loadavg
                  cat /proc/stat
驱动程序设备ID: cat /proc/devices

常用配置网页:
选择省份界面 http://192.168.1.1/opid_setting.cgi
固件升级路径:http://192.168.1.1/upgrade.cgi
插件配置卸载路径:http://192.168.1.1/upgrade_plugin.cgi?
Upnp功能开启:http://192.168.1.1/upnp.cgi?
usb备份、恢复:http://192.168.1.1/usb.cgi?backup
TR069 RMS平台认证:http://192.168.1.1/tr69.cgi
AWIFI激活管理平台:http://192.168.1.1/awifi_config.cgi
设备码等信息查看:http://192.168.1.1/bucpe.cgi
设定password密码:http://192.168.1.1/gpon_config.cgi
设定LAN端IPV6: http://192.168.1.1/lan_cu.cgi
配置文件查看:http://192.168.1.1/dumpdatamodel.cgi

全部来自恩山帖子


评论