niyue

Archive for August, 2012|Monthly archive page

中兴F420

In life, other on August 8, 2012 at 4:00 PM

今天上海刮台风,躲在家里算在家工作,结果一不小心又岔开思路去折腾了一上午的路由器。

之前好久家里终于改了电信的光纤,当时给了一个中兴的A10 F420光猫路由和一个TP-LINK的TL-WR700N无线迷你路由器。TP-LINK的无线路由器设计的还挺好看的,像Apple的Mega Safe电源适配器。不过用了一段时间发现电信在设备上做了限制,每次最多只能4个设备连,随便算算家里能连Wi-Fi的设备就有8个(两台台式机、一台Macbook、两个iPhone、两个iPad、还有一个Wii),偶尔公司的电脑还会带回来。虽然几台电脑一般不会一起用,但是iPad和iPhone基本都是一直开着的(没法连接的情况在买了iPad之后尤其明显),所以这年头4台设备的限制感觉就像电信在给自己找麻烦(我打了老半天客服还叫了它的工作人员上门)。后来折腾了一阵后发现限制其实在TP-LINK的那个路由器上,光猫路由并没有这个限制,所以在光猫路由后面又接了一个自己的路由器算解决了问题,不过自从我知道那个光猫也有一个特殊的管理员密码可以做一些特殊的设置之后,心里就觉得很不爽,老觉得电信在想方设法阻挠我自由使用宽带服务。漫长的一个折腾光猫的过程就这么开始了。

1) 看到网上有人说F420是有开telnet的,自己试着连了一下,发现网上说的用户名密码不对,自己随便乱试了一个root/root居然还真连上了。

2) 连上之后看到了熟悉的命令行界面,我觉得大概没多久就能搞定了。结果发现F420上面的系统是BusyBox,1.01版的,经过定制之后,只有很少的命令能够使用,连vi和mv之类的命令都没有。其实我看了下,电信发的光猫里面的这个BusyBox的版本,连个正经能用的编辑器都没有,我只能在命令行里面cat来cat去的,简单的文件要改还能echo一下,稍复杂点的看也不好看也基本没法改。find和xargs也没有,导致grep也没太大用,最后只能cd+ls+cat到处瞎逛。

3) 后来有次发现系统里面居然还带了一个vsftpd,可以启动ftp的服务。不过里面带的vsftpd配置和其他Linux系统里面的不太一样,启动之后一直无法登陆进去。看了一坨的各个Linux上vsftpd的配置文档和其他一些人的配置,都没搞懂到底怎么让这个vsftpd能够正常访问。

4) 以上3步断断续续就折腾了两个多月时间(当然只是有时候心血来潮的时候会去折腾一下)。今天上午折腾的时候发现加一个莫名的-s的参数启动vsftpd就可以了,其他所有配置都没法生效。

5) 登陆进去高兴多没多久发现Cyberduck没法从FTP下载,但是居然可以上传,也不知道到底是什么权限问题。BusyBox里面连chmod也没有,真是有点无法下手。又捣腾了一阵换了一个FileZilla来连FTP,FileZilla里面的文件”Download”还是失败,但是“View/Edit”居然可以用,我对FTP到底咋工作的真是完全不了解…立刻把FileZilla的默认编辑器换成Sublime Text,至此终于能用上个称手的编辑器来查看和编辑文件了。

6) 看了一大堆的配置文件,确实发现/etc下面有个db_default_Jiangsu_cfg.xml里面有telecomadmin和它的密码,不过db_default_Shanghai_cfg.xml里面却没有。网上确实有一堆的说法,不过估计电信发放的路由器型号不太一样,而且相同型号里面的软件版本又不一样,大多说法看起来都没用。目录树下面有一个/userconfig/cfg/db_user_cfg.xml看起来应该是存储这些设置的地方,不过这个文件其实不是xml文件,而是一个加密处理过的二进制文件。之前的一些方法包括直接查看这个文件、或者对文件内容用base64解码都没有用了。在我家的这个F420里面,这个文件是一个文本文件,但是里面的内容都是16进制数,相比同一个目录下没有经过处理的db_default_cfg.xml,大概只有1/3的体积。折腾了一阵也没折腾出来,后来放弃了这条路。

7) 之后发现网上的另外一个方法能够奏效。修改/home/httpd/login.gch这个文件就可以了,是光猫路由的管理界面的代码,应该是个cgi的脚本啥的。应该是电信内部有人搞出来的吧,调用了一些很神奇的API之后直接可以查找到telecomadmin这个用户的密码。中国电信据说是会动态修改这个密码的,不过我也没太深究它到底是直接从本地加密的那个文件中查找的还是远程从电信的数据库里面查找出来的。

8) 用这个用户名密码登陆进去发现F420只是一个有线的路由器,没有无线功能,所以要想用Wi-Fi的话后面总是要接一个无线路由器/AP的。和别人帖出来的F460不一样,管理界面里面也没有关于最大用户连接数的限制,根本没有WLAN的管理(其实要说有的话应该就是4,因为只有4个有线的接口)。还有些DDNS什么之类的应用,感觉还有些用,但管理配置界面实在太差,根本不知道要填的到底是什么东西。到这里折腾基本完毕,4-8步骤又花费掉了近一个上午的时间。

其实这次最后没折腾出来什么结果(本来希望能够开启F420的无线功能然后不用另外一个路由器的,结果发现根本没这功能),但还是简单小结一下方法,指不定以后换个新的光猫还能用上:

1) Log into your modem (router), a BusyBox

telnet 192.168.1.1 (your-router-ip), root/root

2) Start FTP in BusyBox

/bin/vsftpd -s &

3) Connect to FTP using FileZilla, root/root (or anonymously)

4) Back up /home/httpd/login.gch

cp /home/httpd/login.gch /home/httpd/login.gch.bak

5) Navigate to “/home/httpd/login.gch” with FileZilla, “View/Edit” that file like the patch below, and then upload the saved edition back to your router.

--- /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">
6) Login to your router, http://192.168.1.1, the username is ‘telecomadmin’, and password should be displayed in the upper left corner of login page.
这里是我觉得最有用的两篇文章,讲的虽然都是F460,但是在我这里都适用: