码迷,mamicode.com
首页 > 移动开发 > 详细

联通光猫管理员密码分析(HG220GS-U)

时间:2020-05-25 00:29:16      阅读:544      评论:0      收藏:0      [点我收藏+]

标签:界面   libc   emc   bae   contex   col   shel   cst   cstring   

联通光猫管理员密码分析

联通光猫型号:HG220GS-U
软件版本:E00L3.03


运营商一直在做光猫防破解,对抗升级还是比较快的,所有的分析结论都和版本绑定的,因为运营商或者路由器的开发商看到后可能立马就改了。


我自己主要是要改为桥接,这个需求其实打联通的保修电话让局端改一下应该就能搞定。不过之前看过一两个老版本的教程,也照葫芦画瓢破解成功了,但我手上的这个版本有点麻烦,现有的教程基本都失效了。有点好奇,这次花点时间仔细看了一下,不过这次被某些人打击得比较厉害,说果然是IT狗云云,只知道和代码过不去。都云作者痴,谁解其中味!


这个光猫,先要用普通的user用户和印在光猫背面的密码登录进去,然后改链接为http://192.168.1.1/servmngr.html,在这个页面中把管理员帐号enable,telnet、ftp服务也enable了。telnet服务的默认用户名和密码都是admin。进入telnet后运行sh就是普通的shell界面。这些是在网上仔细搜能搜到的。


既然telnet、ftp权限都有了,那就把文件拿出来分析好了。最后要分析的是下面三个文件,关键函数是cgiAuthAdminPassword(),点到为止,有兴趣的可以自己看看。话说Ghidra对MIPS的反编译还是可以看的。新版的IDA 7.5虽然支持MIPS反编译,不过我没有。
/bin/httpd
/lib/public/libcms_util.so
/lib/public/libaes.so


下面是根据光猫MAC地址计算CUAdmin这个用户的密码。EPON的猫需要用其base MAC,也就是“设备基本信息”那个页面中看到的MAC/SN的值,大写。

#include <stdio.h>
#include <atlstr.h>
 
#include <openssl/aes.h>
#pragma comment(lib, "libeay32.lib")
 
static const unsigned char encryptionKey[] = "JmpwfGjcfsjpnfJmpwfGjcfsjpnf0000";
 
void Encrypt(unsigned char *in, size_t inLen, unsigned char *out, size_t &outLen)
{
    AES_KEY aesContext;
 
    AES_set_encrypt_key(encryptionKey, 256, &aesContext);
 
    outLen = 0;
    for (size_t k = 0; k < inLen; k += AES_BLOCK_SIZE, outLen += AES_BLOCK_SIZE)
    {
        unsigned char padded[AES_BLOCK_SIZE] = {};
        memcpy(padded, &in[k], (k + AES_BLOCK_SIZE) < inLen ? AES_BLOCK_SIZE : inLen - k);
        AES_ecb_encrypt(padded, &out[k], &aesContext, AES_ENCRYPT);       
    }
}
 
int main(int argc, char** argv)
{
    static unsigned char mac[] = "112233445566";
 
    constexpr size_t insize = sizeof(mac) - 1;
    constexpr size_t remain = insize % AES_BLOCK_SIZE;
    constexpr size_t outsize = remain ? insize - remain + AES_BLOCK_SIZE : insize;
 
    unsigned char out[outsize] = {};
 
    size_t outlen = 0;
    Encrypt(mac, sizeof(mac) - 1, out, outlen);
 
    CString passwd;
    for (size_t k = 0; k < outlen; ++k)
    {
        CString t;
        t.Format(L"%02X", out[k]);
        passwd += t;
    }
 
    _tprintf(_T("password for CUAdmin: %s\n"), (LPCTSTR)passwd);
}

 

联通光猫管理员密码分析(HG220GS-U)

标签:界面   libc   emc   bae   contex   col   shel   cst   cstring   

原文地址:https://www.cnblogs.com/z16166/p/12953507.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!