+ l7 a* c0 P8 i: i首先看文件头0x00-0x3b
7 Q, u* T. W: @3 o其中7 L/ j- N) J2 F4 F8 [9 r1 H
0x09-0x0b 解压缩后配置文件大小
5 [3 ]9 R0 {2 Z0x0e-0x0f 压缩后配置文件大小. _3 N8 n9 C7 T) L! g
0x14-0x1b 校验值& \) c1 |' y/ Z
. @0 {1 K t: ]0 R, Y
再看之后的数据,有规律的,都是以
; M$ p6 C* E: T; R8 L; Y* k5 ]4 U+ E00 01 00 00 00 00 17 e5 00 00 18 2d开始
8 d8 L& B7 Y9 B, o: p& B其中17 e5 为本次数据压缩后长度$ y. J; ]0 ~4 }% ] P: v
18 2d为下一压缩包开始位置! P9 z$ u3 }* P2 H' h) j* U1 n
8 j* ~7 }8 x5 L c/ Y; v, R
由此可见,整个cfg是由原有明文cfg进行分段压缩后产生的,分段规则为每次取明文数据的65535个字节进行压缩为一个分段,压缩方式采用Zlib库
+ u8 R/ G! b% `# w$ ?
2 x% S6 {% f1 T& f7 L1 d3 S我只是写了个程序通过Zlib把这些数据解开而已。
4 [6 s" {6 e. y0 h. t
' p2 Y! W4 \ r. i+ g- b& d1 R5 t至于那个校验值目前还没有弄明白算法,如果弄明白了,我们就可以自定义cfg压缩然后通过WEB管理界面还原的方式写入路由,这样随便电信封23,21都无所谓了,我们自己就可以直接解封了,如果谁能弄明白那段校验值的算法,请告知造福大众。 |