乐者为王

Do one thing, and do it well.

如何破解中兴ZXA10-F460 v3.0获取超级管理员密码

破解前的系统情况:

  • 硬件版本号 V3.0
  • 软件版本号 F460_IMS_V2.30.10P1T6_JS1111
  • BOOT版本号 V1.1.0P1T1
  • 版本日期 2012-02-29 16:29:07

中兴ZXA10-F460光猫(E8-C)在第一次安装的时候,超级管理员帐号是telecomadmin,密码为nE7jA%5m,这个是默认的,由安装人员设置好相关设置后,会自动下载配置,这时候这个超级管理员密码会被修改为telecomadminXXXXXXXX(8个X是8位数字,每个用户是不同的)这种格式。因为很多设置需要在超级管理员下才能设置,所以破解这个超级管理员密码是非常必要的。

其中V1.0和V2.0版本网上有破解方法,大家可以自己搜索。

在命令行下输入telnet 192.168.1.1,帐号和密码都是root。连接成功后,会出现“F460 login:”这样的提示。

注意:目前网上流传的查看/tmp目录下db_backup_cfg.xml文件内容的破解方法已经无效了。另外在/userconfig/cfg目录下有两个加密的配置文件db_backup_cfg.xml和db_user_cfg.xml,同目录下还有个db_default_cfg.xml是不加密的(该文件是出厂设置的配置文件),但是大家不要用这个文件去替换db_user_cfg.xml,否则会出现不可预知的后果。

实际上只要修改一下/home/httpd/login.gch这个文件,就能看到密码了。patch文件内容如下:

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
--- /home/httpd/login.gch 2012-07-03 14:05:16.000000000 +0800
+++ login.gch 2012-07-03 14:03:37.000000000 +0800
@@ -152,6 +152,17 @@
set_language("langcn.conf");
langclass = "login_title_centeren";
}
+var CK_HANDLE = create_paralist();
+var login_name = "telecomadmin";
+set_para(CK_HANDLE, "Username", login_name);
+qeury_list_bycond("OBJ_USERINFO_ID", "IGD", CK_HANDLE);
+destroy_paralist(CK_HANDLE);
+CK_HANDLE = create_paralist();
+var CK_IDENTITY = query_identity(0);
+get_inst(CK_HANDLE, "OBJ_USERINFO_ID", CK_IDENTITY);
+var now_pwd = get_para(CK_HANDLE, "Password");
+now_pwd = delMoreSlash(now_pwd);
+destroy_paralist(CK_HANDLE);
%>
<head>
<META HTTP-EQUIV="pragma" CONTENT="no-cache>
@@ -239,4 +250,5 @@
</script>
</head>
<body onload="onFocus();">
+<div><%=now_pwd;%></div>
<div id="container" class="content">

效果是浏览器登录192.168.1.1的时候,超级管理员密码会显示在首页界面的左上角。

到这儿有人想了,怎么把上面的patch更新到/home/httpd/login.gch中呢?总结了三种方法:

第一种方法是telent到F460上后,执行下面的命令即可:

1
2
3
4
5
6
7
8
9
10
11
12
sed -i '155 s/^/var CK_HANDLE = create_paralist();\n/' /home/httpd/login.gch
sed -i '156 s/^/var login_name = "telecomadmin";\n/' /home/httpd/login.gch
sed -i '157 s/^/set_para(CK_HANDLE, "Username", login_name);\n/' /home/httpd/login.gch
sed -i '158 s/^/qeury_list_bycond("OBJ_USERINFO_ID", "IGD", CK_HANDLE);\n/' /home/httpd/login.gch
sed -i '159 s/^/destroy_paralist(CK_HANDLE);\n/' /home/httpd/login.gch
sed -i '160 s/^/CK_HANDLE = create_paralist();\n/' /home/httpd/login.gch
sed -i '161 s/^/var CK_IDENTITY = query_identity(0);\n/' /home/httpd/login.gch
sed -i '162 s/^/get_inst(CK_HANDLE, "OBJ_USERINFO_ID", CK_IDENTITY);\n/' /home/httpd/login.gch
sed -i '163 s/^/var now_pwd = get_para(CK_HANDLE, "Password");\n/' /home/httpd/login.gch
sed -i '164 s/^/now_pwd = delMoreSlash(now_pwd);\n/' /home/httpd/login.gch
sed -i '165 s/^/destroy_paralist(CK_HANDLE);\n/' /home/httpd/login.gch
sed -i '253 s/^/<div><%=now_pwd;%><\/div>\n/' /home/httpd/login.gch

第二种方法是telent到F460上后,执行cp /home/httpd/login.gch /home/httpd/login_gch.xml,通过浏览器把login_gch.xml保存到电脑上,然后再把patch更新进去。可以在电脑上架设ftp服务器,在F460上执行以下命令:

1
2
cd /home/httpd/
wget ftp://<YOUR_COMPUTER_IP>/login.gch  # 把<YOUR_COMPUTER_IP>替换成你自己的

第三种方法是telent到F460上后,执行df命令,查看是否有usb1_1或usb2_1,如果有就可以进行下一步操作。输入cp /home/httpd/login.gch /mnt/usb1_1/login.gch把文件拷贝到优盘上,修改后使用cp /mnt/usb1_1/login.gch /home/httpd/login.gch把文件更新到猫上就可以。

2013/6/16更新

其实还有种更简便的方法,中兴的光猫有个sendcmd命令,下面是该命令的简单用法:

  1. 读取全部表名 sendcmd 1 DB all;
  2. 读取指定表信息 sendcmd 1 DB p 表名。比如sendcmd 1 DB p UserInfo,查看路由器帐号和密码,超级管理员密码也在这里查看;
  3. 查看当前系统运行的服务状态 sendcmd -pc show;
  4. 修改某个表的某个字段的值 sendcmd 1 DB set 表名 行数 字段名 字段值。比如要修改超级管理员密码,可以使用sendcmd 1 DB set UserInfo 0 Password 123456;
  5. 保存对配置文件的修改 sendcmd 1 DB save。

当然还有其它的命令,但是就修改光猫配置来说,这几条命令足够了。

Comments