* x0 d. e5 X* r6 p% P+ N$ i. P4 i
首先看文件头0x00-0x3b
+ Z- t: ` G4 C/ u: x# p; }其中
% o7 A$ }' v1 h9 y# M, z0x09-0x0b 解压缩后配置文件大小& c9 w* c% y& F, F; V7 W4 N9 Y
0x0e-0x0f 压缩后配置文件大小4 N( J/ M/ W5 E% D% l3 u
0x14-0x1b 校验值
1 l' a/ y5 N+ V5 o! q1 _' o: J' D% ^! b/ `# u5 a1 \
再看之后的数据,有规律的,都是以( F8 s d" ~" Z. q* t- J
00 01 00 00 00 00 17 e5 00 00 18 2d开始- @: d3 [% r/ j; g) `8 G
其中17 e5 为本次数据压缩后长度
" t* t- F% Q. l18 2d为下一压缩包开始位置6 ~) I5 z, D" q$ x1 j; O: Y: U; ~ R
+ G: {/ i; j$ H( @7 C" Y R
由此可见,整个cfg是由原有明文cfg进行分段压缩后产生的,分段规则为每次取明文数据的65535个字节进行压缩为一个分段,压缩方式采用Zlib库& d, ?3 m, C [( Q" R
. [. S7 o' j1 H3 t# a* S4 `
我只是写了个程序通过Zlib把这些数据解开而已。
; D0 U) J! R N( d$ m7 D2 l. L0 T1 I; l2 |# r+ D7 f
至于那个校验值目前还没有弄明白算法,如果弄明白了,我们就可以自定义cfg压缩然后通过WEB管理界面还原的方式写入路由,这样随便电信封23,21都无所谓了,我们自己就可以直接解封了,如果谁能弄明白那段校验值的算法,请告知造福大众。 |