中兴F612电信光猫备份文件破解

前段时间网络突然断了,打电话一问才知道要换光纤(这其中坑爹的事情就不多说了),电信送的光猫看了下是中兴F612,众所周知电信送的光猫都是有限制的,电信会在光猫上进行定制,为了保护广大用户那脆弱的小心脏,于是电信这个欧婆桑“善良”地将一些“不忍直视”的功能屏蔽掉,让广大脆弱小心脏用户们不会碰到这么危险滴东西,所以电信为了维护世界和平,为了宇宙的繁荣勇敢地站出来大声地说:“要有光!”,这是多么的伟大啊。。。。。。。。。 前面说的都是废话。。。。好了,现在废话不多说,拿到这个光猫后我肯定是不想就这样被电信任意摆布了,至少应该让我对这个光猫有足够的控制权,然而虽然我通过浏览器的审查元素插件做了一些电信禁止做的事情,但还是不够多,最起码,我得想办法开个telnet啊,电信真是够坑,telnet竟然是关掉的,然后有些东西根本无法设置,因为前台网页中压根就没有,即使我delete了很多很多display和disable。。。。。。 但是,我却看到了一个希望,没错,电信说要有光!!!,众所周知目前这个中兴F612有一个漏洞,就是备份文件任意下载,根本不需要任何验证,同样的我也利用了这个漏洞下载了一个备份文件,然后让我苦恼的是,这个文件是一个我不认识的文件,毫无头绪,但互联网的力量的强大的,我成功找到了一个叫作offzip的工具,并且成功地将备份文件解压了,但互联网的力量同时也是有限的。。。。。我没有找到将其打包回原来数据的工具。。。。。。(或许是真的没有找到吧),看来希望破灭了。。。 但是(你应该有预感的),我还是决定看一看这个文件,看一看它的秘密竟然是什么(什么,你以为我找到打包的工具了,那是你想多了。。。。),下面就记录下我”破解“的过程。 首先我使用offzip这个工具对这个备份文件进行解压,然后我发现在解压的过程中这个工具会返回一些信息,而我却偏偏在这个返回的信息中找到了点东西(其实也不算什么高大上的东西,任何人都能找得到这个东西),下图是解压过程返回的信息 Screenshot - 08132015 - 04:14:00 PM 原来offzip这个工具是通过在文件中进行偏移一定位置后进行解压的工具,从图上很容易看出解压出了6个文件,而每个文件的偏移位置和压缩数据长度以及解压后的数据长度,而且通过计算会发现两个偏移地址减去压缩数据长度之后总是得到同一个值,没错这个值就是12,看到这个后我很兴奋,像找到丢失了很多年心爱玩具的孩子一样(像个孩子找到了心爱的玩具,那一天,那一天。。。。。。),然后我便迅速地使用hexedit打开这个备份文件(hexedit是一个十六进制编辑器),如下图

Screenshot - 08132015 - 05:07:07 PM
从图中我们可以看到,78 da ed 3d这后面的部分是压缩数据,而前面的12字节就是我们要分析的东西,这其实很简单,用眼睛就能看出来,这12个字节分为3个4字节数据,不严格地说就是3个int数据,然后我们把它取出来再次进行计算会发现它们分别是65536 6247 6319,前两个数字是不是像是在哪里见过呢?没错,回到前张图就可以发现这正是解压后的数据长度和压缩数据的长度,而后一个数据我们经过后面的一些数字进行推断的话我发现用后一个文件头(我就把这个在压缩数据前12字节的数据叫做文件头了吧。。。。)中该数字减去该文件压缩数据的长度再减去前一个文件头中的该值同样总是会得到同一个数字,这个数字非常滴碰巧也是12,而最后一个文件中这个数字为0,但第一个数字中这个值是如何得到的,我还是不清楚,通过上面的方法,同样地减去压缩数据长度再减12后发现值是60,但这个备份文件中前204个字节中前面的一部分肯定是一个信息,比如我看到了F612这样的字眼,但还隐藏了什么这个很难解析出来。。。。。,不过就算这样我也能够通过自己写代码将整个配置文件解压出来了,下面先看看各文件头的信息,我们猜测的文件头数据结构大概是这样的

代码如下

使用我们的备份文件作为第一个参数运行结果如下图

Screenshot - 08132015 - 04:14:55 PM
同样也是6个部分,从这里我们也知道了一件事,事实上网上说的解压出来的是很多的文件,而其实这只是一个文件被分隔压缩了而已,所以其实这只是一个文件,也就是说配置文件只有一个,而不是解压出来的6个或者说多个,现在我们来写个解压的程序,可以看到,只要通过这种模式就能够将其解压了,我所使用的解压库是开源的zlib,代码如下

解压

Screenshot - 08132015 - 04:16:48 PM

成功,cat下我们解压出来的文件

Screenshot - 08132015 - 04:17:18 PM

果然没错,就是这个。

到现在为此,我们完成了备份文件的解压,也知道了它的组成原理(或者准确点说是部分原理),该备份文件其实就是一个压缩文件,只不过它并不像我们见到的压缩文件那样,它有自己的文件格式,这个格式是前204字节是头信息(我把前204字节暂时这么称呼),其后的数据组成是数据的头信息(12字节数据)加上压缩后的数据,其中12字节是前4字节表示压缩数据在未压缩之前的长度,其后4字节指明后面压缩数据的长度,最后4字节是一个暂时还未知的数据,那么从这里我们可以推出部分打包的基础。

下面的事情我并没有在我的光猫上真的做过,只是一种猜想,如果有人愿意帮我做这个实验的话,我会很高兴的,当然可能我会自己在稍后做,通过上面的分析,我们可以尝试对配置文件进行修改然后再打包,比如打开telnet功能,通过在配置文件中进行查询就能找到开启的方法,其实也就是改变一个数字的问题,不过在此之前我们先试着将解压出来的配置文件再原封不动地打包回去,方法就是先将备份文件的前204字节复制出来,然后再通过上面分析出来的数据在其后追加数据,最后生成一个新的备份文件,然后我们比对下旧的备份文件与新生成的备份文件的md5,看是否有出入,打包的代码如下

我们打包上面解压出来的config.dat

Screenshot - 08132015 - 04:18:04 PM
我们发现我们打包后的文件与我们下载的文件md5值完全相同,那么至少就说明我们后面的部分是完全正确的,那我们是不是可以通过这种方法生成新的文件再上传到光猫中进行配置呢?我还没有测试,我想如果有错误的话问题应该是出在前204字节中,只是暂时还无法破解出前204字节所隐藏的秘密,但我想如果我只是改变配置文件中的一个参数,只是将0改成1然后再使用这204字节的头的话问题应该不是太大,当然这只是种猜想,但愿事实就是这样的,当然如果有人知道那前204字节的秘密的话,希望能够不啬告知。

最后当然要鄙视下电信,为了自己的私欲,欺诈用户,并把用户困在牢笼里任意宰割,毫无顾虑,也是醉了。

–阅读次数(73)

发表评论

电子邮件地址不会被公开。

*