: N- M: {+ f! b首先看文件头0x00-0x3b
. |3 U+ e1 F4 j0 r8 o; O- d* X其中2 n9 P& {2 z# n, P
0x09-0x0b 解压缩后配置文件大小
7 X( n9 S' [& X9 q( f0x0e-0x0f 压缩后配置文件大小+ d9 {2 }7 C1 ^6 l
0x14-0x1b 校验值. V4 h4 W' w. k2 D, ^7 f
; }) U6 e4 \3 F% s* x J; M4 J
再看之后的数据,有规律的,都是以
6 A, y3 D! a! X& R+ L6 I% Y& |00 01 00 00 00 00 17 e5 00 00 18 2d开始
. f, `3 K* `% l, o" E+ r其中17 e5 为本次数据压缩后长度
7 M+ T4 G' s7 E- M7 v9 ?18 2d为下一压缩包开始位置$ M& ` g' z7 }2 l
& S+ i8 R, T- ~6 r
由此可见,整个cfg是由原有明文cfg进行分段压缩后产生的,分段规则为每次取明文数据的65535个字节进行压缩为一个分段,压缩方式采用Zlib库
! {# d8 r; ]; }. }# n4 H: K, d, P5 D# X
我只是写了个程序通过Zlib把这些数据解开而已。
+ w: R4 |8 N. l, w* t. j* \/ v0 O
至于那个校验值目前还没有弄明白算法,如果弄明白了,我们就可以自定义cfg压缩然后通过WEB管理界面还原的方式写入路由,这样随便电信封23,21都无所谓了,我们自己就可以直接解封了,如果谁能弄明白那段校验值的算法,请告知造福大众。 |