文章

获取中兴光猫 F652 超级密码

首先连接上你家光猫的网络,如图所示。

2024-07-25 13.55.23.png

然后访问以下链接 http://192.168.1.1/common_page/File_Download_lua.lua?downtype=0&IF_FILEPATH=/userconfig/cfg/db_user_cfg.xml&IF_FILENAMEUTF8=db_user_cfg.xml&,浏览器会自动下载来一个 .xml 文件。

2024-07-25 13.57.10.png

但这个文件是经过加密的,我们不能直接打开。需要进行解密。

.xml 文件的同目录下,新建一个 Python 文件,文件名任意。以下是代码内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import zlib
import struct
import os

def unzip_config(fname: str) -> str:
    if not os.path.exists(fname):
        print('文件不存在!')
        return ''
    
    with open(fname, 'rb') as f:
        next_off = 60
        result = bytearray()
        
        while next_off > 0:
            f.seek(next_off)
            
            # 读取缓冲区大小
            buffer_size = struct.unpack('>I', f.read(4))[0]
            
            # 读取压缩块大小
            block_size = struct.unpack('>I', f.read(4))[0]
            
            # 读取下一块位置
            next_off = struct.unpack('>I', f.read(4))[0]
            
            # 复制压缩数据块到临时数据流
            compressed_data = f.read(block_size)
            
            # 解压数据块
            decompressed_data = zlib.decompress(compressed_data)
            
            # 将解压后的数据添加到结果
            result.extend(decompressed_data)
        
        return result.decode('utf-8')

def write_output(data: str, output_fname: str):
    with open(output_fname, 'w', encoding='utf-8') as f:
        f.write(data)

# 使用示例
result = unzip_config('db_user_cfg.xml')
if result:
    write_output(result, 'output.xml')
    print('结果已写入 output.xml')

感谢 52pojie 大佬 yulinsoft 提供的源 Delphi 代码,这里转成了 Python 罢了。原文详见:https://www.52pojie.cn/thread-1005978-1-1.html

在当前目录的终端中,输入命令:

1
python3 encrypt.py # 这里改成你的文件名

程序完成后,会显示:结果已写入 output.xml 。此时打开 output.xml ,就是解密后的文件。用记事本等程序打开,直接搜索 telecomadmin ,就能找到相应的超级密码了。

2024-07-25 13.59.30.png

登录进去即可。

本文由作者按照 CC BY 4.0 进行授权

© Dignite. 保留部分权利。 由  提供CDN加速。

浙ICP备2023032699号 | 使用 Jekyll 主题 Chirpy