" M4 |8 t M) Q6 F4 u3 u# n) Y: H o S
首先看文件头0x00-0x3b ! a% g! Z" _# Z T% w% C其中 " O3 L. s3 P, c: ]3 g0 M0x09-0x0b 解压缩后配置文件大小! }+ m# z9 Y4 l# {3 e/ V" F1 h
0x0e-0x0f 压缩后配置文件大小! r1 }. |- u7 y7 c. G* ?$ R
0x14-0x1b 校验值# n' c7 `/ g0 S! p7 ~, P
8 f) A1 U! C: k再看之后的数据,有规律的,都是以 ) A7 C& r5 \2 G' l00 01 00 00 00 00 17 e5 00 00 18 2d开始; k7 ` {+ U/ v, p3 o0 }2 @
其中17 e5 为本次数据压缩后长度0 N+ ~5 e/ x+ {3 _) l) `- q. c
18 2d为下一压缩包开始位置 / v$ w F8 \0 A" s - |! h/ }5 q8 g8 f" a% F由此可见,整个cfg是由原有明文cfg进行分段压缩后产生的,分段规则为每次取明文数据的65535个字节进行压缩为一个分段,压缩方式采用Zlib库 2 J5 k }0 K2 m F3 J+ D$ t . P4 |/ Q8 M2 Q5 M我只是写了个程序通过Zlib把这些数据解开而已。$ E, Z/ u! t d& o
) O# @3 |7 c" i$ y# h
至于那个校验值目前还没有弄明白算法,如果弄明白了,我们就可以自定义cfg压缩然后通过WEB管理界面还原的方式写入路由,这样随便电信封23,21都无所谓了,我们自己就可以直接解封了,如果谁能弄明白那段校验值的算法,请告知造福大众。