/ z+ S. e! K6 B0 E+ |5 B& D7 l
首先看文件头0x00-0x3b
+ s: z( r( r+ I( _& k. a其中
: p& ?: U7 m l6 p$ V) n- e) m0x09-0x0b 解压缩后配置文件大小
% x# A( S2 z# u& P/ E0x0e-0x0f 压缩后配置文件大小! D+ ^' Z' _# I
0x14-0x1b 校验值
`! l3 X7 {# m1 c V, c( R, q9 X( o" e' X- @- F
再看之后的数据,有规律的,都是以
' ] y" ~: p2 Z7 Z00 01 00 00 00 00 17 e5 00 00 18 2d开始
: _7 B0 {9 |- A其中17 e5 为本次数据压缩后长度/ h; Q" b) ?0 c
18 2d为下一压缩包开始位置: M$ N$ e6 n2 u, {' B g
! H# t1 K7 v' E% p' u5 u p
由此可见,整个cfg是由原有明文cfg进行分段压缩后产生的,分段规则为每次取明文数据的65535个字节进行压缩为一个分段,压缩方式采用Zlib库' r4 D; b$ t+ P5 I2 Q: j
: W' B F1 _( n7 u. u, V& U6 ?; y我只是写了个程序通过Zlib把这些数据解开而已。1 t: n' r% |# U
) E5 f6 O/ c. Q至于那个校验值目前还没有弄明白算法,如果弄明白了,我们就可以自定义cfg压缩然后通过WEB管理界面还原的方式写入路由,这样随便电信封23,21都无所谓了,我们自己就可以直接解封了,如果谁能弄明白那段校验值的算法,请告知造福大众。 |