家庭网关设备的隐藏账户和密码

在安装家庭宽带时,运营商会给用户一个网关设备,现在常见的就是光猫。这些设备,会提供给用户一个普通账户和密码,可以进行一些有限的修改,在中国电信的设备上,这个账户是useradmin。然而,总是有些玩家想要更大程度地控制自己的设备,启用更多的功能,于是,出现了各种破解的方法,找出了不同的设备具有的隐藏账户和密码。这里,记录一些常见设备的隐藏账户及其相关的配置页面。

一般来说,隐藏的账户会有两个,一个是运营商管理账户,可以修改大多数路由配置功能,在中国电信的设备上,这个账户是telecomadmin;一个是工厂账户,它可以修改设备管理的底层功能,这个账户根据设备生产商有所不同。以下列出收集到的设备信息。

账户与配置页

烽火HG220GS

硬件版本为BCM.V2.0且软件版本为E00D1.00M5002的设备已验证有效。

启用隐藏账户页面:http://192.168.1.1/logoffaccount.html。如果打开这个页面需要登录,用普通账户登录即可,然后可以在这个页面里启用工厂账户。没有在此启用的话,即使知道了工厂账户的密码,也是无法登录的。

这个型号的设备,中国电信版本的工厂账户是fiberhomehg2x0,密码是hg2x0。telnet账号是admin,密码是admin。超级用户的密码,需要使用工厂账户登录http://192.168.1.1后,在地址栏里输入http://192.168.1.1/backupsettings.conf下载backupsettings.conf,然后查找Password关键词,在TeleComAccount下面这一行的内容,即是telecomadmin账户经Base64编码后的密码,使用Base64解码工具即可获得原文密码。

HG226G(未经验证)

额外登录页面:http://192.168.1.1/brcm/login.html。一般而言,网关的登录页面是http://192.168.1.1,但有的设备可以通过这个地址登录。

备份配置页面:http://192.168.1.1/brcm/backupsettings.html。此页面提供配置下载功能,从这里下载的配置文件可以找到telecomadmin的密码,密码可能是明文的,也可能是Base64编码后的。

更新配置页面:http://192.168.1.1/brcm/updatesettings.html。这个页面可以上传修改后的配置文件,并更新到设备。

上述几个在/brcm下的页面,登录账户是admin,密码是admin

这个型号的设备,工厂账户是fiberhomehg2x0,密码是hg2x0

吉比特CM113-Z(未经验证)

启用隐藏账户页面:http://192.168.1.1/logoffaccount.html(2021-02-02:根据网友(hashwu333)[https://github.com/hashwu333]提供的信息:登录地址应该是:http://192.168.1.1)。如果打开这个页面需要登录,用普通账户登录即可,然后可以在这个页面里启用工厂账户。

这个型号的设备,中国移动版本的超级账户是CMCCAdmin,密码是aDm8H%MdA。工厂账户是fiberhomehg2x0,密码是hg2x0

烽火HG6821M光猫(未经验证)

启用隐藏账户页面:http://192.168.1.1/logoffaccount.html。如果打开这个页面需要登录,用普通账户登录即可,然后可以在这个页面里启用工厂账户。

文件配置信息地址:http://192.168.1.1/cgi-bin/baseinfoSet.cgi

临时开启telnet服务页面:http://192.168.1.1/cgi-bin/telnetenable.cgi?telnetenable=1

这个型号的设备,中国移动版本的超级账户是CMCCAdmin,密码是aDm8H%MdA。工厂账户是fiberhomehg2x0,密码是hg2x0。telnet账号是root,密码是hg2x0abcd

使用工厂账户登录后,可在维护页面,一键下载配置目录下所有文件。解压后打开param.xml可以查询运营商管理账户密码。factory.conf文件里则保存了光猫的所有配置信息。

也可以在使用telnet登录设备后,查看/flash/cfg/agentconf/factory.conf文件获得超级用户密码。

如何取得这些信息

  1. 查看厂商的说明书
  2. 从网络上搜索对应设备型号
  3. 从业内人士处了解到
  4. 使用普通账户登录后,分析网页的源代码和脚本,例如,从HG220GS设备上登录后,查看源码可以发现如下内容:
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
<script language='javascript'>
<!-- hide
var options = new Array('',
'admin',
'1',
'2',
'1',
'',
'CT_E8_C',
'1',
'', //SUPPORT_SES
'0',
'useradmin',
'telecomadmin',
'useradmin',
'fiberhomehg2x0',
'ctinfo.html',
'HG220G',
'1',
'1',
'0',
'3',
'5'
);
createCTMenu(options);
initializeDocument();
// done hiding -->
</script>

进一步从脚本menuCT.js找到createCTMenu函数:

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
function createCTMenu(options) {
// var curuser = options[MENU_OPTION_CURUSER];
// var sysuser = options[MENU_OPTION_SYSUSER];
var inUseName = options[MENU_OPTION_INUSENAME];
var firstPage = options[MENU_OPTION_FIRSTPAGE];

if(options[MENU_OPTION_FACTORYNAME] == inUseName){
foldersTree = gFld('', 'factorymode.html', true);
nodeFactory = insFld(foldersTree, gFld(getMenuTitle(MENU_FACTORY), 'factorymode.html', true));
insFld(nodeFactory, gFld(getMenuTitle(MENU_FACTORY_BASEINFO), 'factorymode.html', true));

menufiberhome(options);
}
else{
foldersTree = gFld('', 'ctinfo.html');
// device info menu
nodeStatus = insFld(foldersTree, gFld(getMenuTitle(MENU_STATUS), 'ctinfo.html'));
// device summary menu
nodeStatusDevice = insFld(nodeStatus, gFld(getMenuTitle(MENU_STS_DEVICE), 'ctinfo.html'));
insFld(nodeStatusDevice, gFld(getMenuTitle(MENU_STS_DEV_INFO), 'ctinfo.html'));

if(options[MENU_OPTION_ADMINNAME] == inUseName)
menuAdmin(options);
else if(options[MENU_OPTION_USERNAME] == inUseName)
menuUser(options);
}



/* if ( curuser == sysuser || curuser == 'admin')
​ menuAdmin(options);
​ else
​ menuUser(options);
*/
}

进而分析整个menuCT.js文件,就可以知道options数组中出现的useradmintelecomadminuseradminfiberhomehg2x0分别对应的是INUSENAMEADMINNAMEUSERNAMEFACTORYNAME

  1. 拆开硬件后,自行在主板上接上串口线(一般是TTL四线连接),然后要么按CTRL+C,要么搜索相应型号的telnet用户和密码登录Shell,探索文件系统的内容来分析。