解包和打包中兴光猫配置文件

自从中国移动推出了高端套餐送宽带这项活动以来,我身边的朋友基本上都从中国信不过叛逃到了中国移不动

这本无可厚非,毕竟市场竞争,最终还是价格决定一切吗。

但是在日常使用过程中,却由于由于光猫的各种问题,导致上网体验非常不好。

为了改善这种情况,就必须得修改光猫的配置,而我用的 F663N 的配置文件又不是明文的。

于是在研究的过程中,就顺手写了个小工具,今天就花点时间跟大家黄婆卖瓜自卖自夸一下……

吐槽

正式开始之前,先来个吐槽大会,数数运营商光猫的几宗罪。

现在移动配备的都是各个厂家出品的光猫、路由、Wi-Fi 一体机,其性能可想而知。

在 100M 带宽的情况下,用支持 802.11ac 的手机测带宽,就从来没有达到过 100M 的时候。

为什么呢?因为人家只有 2.4GHz 的无线网络,而且也只能支持到 802.11n。

也就是说就算你是 200M,300M,甚至是 1000M 的带宽都好,理论上也只能用到 50M 左右的带宽。

我就问你坑爹不坑爹?所以小伙伴们,我再说一次,好的路由器很重要,好的无线 AP 也很重要!

还有就是,这个光猫只有一个口是千兆口,其余的都是百兆口,如果你没有接 LAN1 的话,就算你是 200M 以上的宽带,理论上也最多只能当 100M 宽带用。

同时也意味着我的 NAS 在局域网内也只能以 100M 的带宽传输文件,也就是大概每秒 10MB 的样子。囧rz

如果是 NAS 跟手机之间传输,也就是每秒 5M 的样子,真的是好开心呢,9102 年都过去了,网速咋还这么慢呢?

如果是千兆交换机的话,局域网内轻轻松松跑个 130MB+ 每秒,一点问题都没有,节约 10 几倍的时间啊!

更开心的是,只要连接终端数超过 4 个,很多设备就上不了网了。

那我们把光猫一体机就只做光猫,然后用自己的路由器吧。嗯,少年,想法很好,但是……

人家运营商是强制光猫路由模式的,也就是说不给你上网的账号和密码,想改?没门儿。

为了能好好上网学习,只好自己研究下如何修改光猫配置了……

获得配置文件

首先访问光猫的管理界面,一般都是:http://192.168.1.1/

输入从网上找到的登录用户名:CMCCAdmin,和密码:aDm8H%MdA

找一个 FAT32 分区的 U 盘插到光猫背面的 USB 接口上。

然后在管理界面选择「管理」->「设备管理」->「USB备份配置」,应该会看到类似下面的界面,点击「开始备份

备份好了以后,拔下 U 盘放到电脑上,会看到一个名为 e8_Config_Backup 的目录,里面有一个叫 ctce8_F663N.cfg 的配置文件。

这个就是我们要处理的文件了。

解包

经过几个昼夜地研究与分析,终于搞明白了这个 cfg 文件的结构。

这里省略一万字,感兴趣的可以直接去 GitHub 看源代码,不感兴趣的直接看怎么操作就行了。

首先去下载最新的可执行版本:https://github.com/TommyLau/ztecfg/releases

写这篇文章的时候只有 v0.1.0 版本,选择对应平台的可执行文件就行了。

如果你的电脑有装 Python 3 的话,直接下载 ztecfg.py 这个文件就可以了。

把刚才得到的配置文件复制到 ztecfg 所在的目录,打开终端或命令行,运行如下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
$ ./ztecfg -u ctce8_F663N.cfg

Device name: F663N

Block 1: size=65536, compressed=5724, offset=5796
Block 2: size=65536, compressed=7018, offset=12826
Block 3: size=65536, compressed=1828, offset=14666
Block 4: size=65536, compressed=2551, offset=17229
Block 5: size=65536, compressed=7136, offset=24377
Block 6: size=65536, compressed=5343, offset=29732
Block 7: size=12717, compressed=1305, offset=0

Write XML output to file "ctce8_F663N.xml"

于是乎我们就得到了一个名为 ctce8_F663N.xml 的文件,就是解包出来的配置文件。

修改配置

既然你都找到这里,说明你知道自己要修改什么了。

如果不清楚的话,可以参考一下《上海电信光猫F460开启telnet》这篇文章。

简单说,你可以修改用户权限,获得 root 密码,打开 telnet、ftp 等功能。

我这里主要是将路由模式修改成了桥接模式,顺便查了一下我的上网账号和密码。😊

终于知道了为什么超过 4 个设备就会断网,原来人家设置了最多 4 个用户啊!

再比如说,打开 FTP / TELNET 之类的服务。

还可以查看和修改账号权限:

比如上面可以看到超级密码,也可以把普通用户的 level 修改为 1,这样普通用户也变成了管理员用户。

就算是将来超级管理员的密码被修改了,也可以用普通账户登录进行管理。

反正根据你自己的需求,调整和修改 XML 内对应的字段就好了。

打包

修改完 XML 文件以后,运行下面的命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
$ ./ztecfg.py -p ctce8_F663N.cfg ctce8_F663N.xml

Device name: F663N

Block 1: size=65536, compressed=5724, offset=5796
Block 2: size=65536, compressed=7018, offset=12826
Block 3: size=65536, compressed=1828, offset=14666
Block 4: size=65536, compressed=2551, offset=17229
Block 5: size=65536, compressed=7136, offset=24377
Block 6: size=65536, compressed=5343, offset=29732
Block 7: size=12717, compressed=1305, offset=0

Write CFG output to file "ctce8_F663N.xml.cfg"

程序执行后会生成一个名为 ctce8_F663N.xml.cfg 的文件,把它复制到 U 盘的e8_Config_Backup 的目录里,删除旧文件,并重命名为 ctce8_F663N.cfg

写入新配置

把保存了新配置的 U 盘插到中兴的光猫上,然后打开光猫的管理界面。

选择「管理」->「设备管理」->「USB恢复配置」,勾选「启用」,然后点击「确定」。

然后再选择左侧的「设备重启」,重新启动光猫后,配置就生效了。

后记

改成了桥接,换成了自己的路由器,刷了 OpenWrt,同时上了 802.11ac 的 Wi-Fi AP。

结果就是有图有真相,终于跑满了 100Mbps 的带宽!

左侧为使用移动光猫时的测速,右侧为使用自己路由器和 AP 时的测速。

测速时间前后差距 1-2 分钟,测试服务器都为 China Mobile Shenzhen。

除此之外,所有内网的设备都拿到了 IPv6 的地址,相当于有了公网 IP,可以直连家里的 NAS 了。

最后

工具使用过程中有什么问题和建议,可以访问项目主页提 issue:

https://github.com/TommyLau/ztecfg