电子书格式探秘

来源:互联网 发布:php重载 编辑:程序博客网 时间:2024/06/05 06:31
1. epub格式我们非常熟悉,就是pk公司的压缩软件压制而成,所以可以用:右键-->打开方式-->压缩软件(很多种内核应该都差不多),开放使用,但核心是顶级机密的。我们不用也分析不了。
2.   mobi格式的(仅就英文文本和未加密的文档而言)相对比较压缩比较简单,有时我们看一眼也能猜到是什么内容,mobi的文本压缩大致如下:
        a. 英文:开始时一定是完整的单词(因为前面什么都没有),如果有前面出现过的内容>=3 且<=10,用2个16进制数表示:前4位一定是80--BF(X000- ),后12位表示向前索引的值和长度。其中最后3位表示长度,9位右移3位得到的数是向前索引的值。例如: This is a test.可以压缩成(This 8018a test)解释为(X000 0000 000X 0000)开头4位为8表示前面有出现过、后三位为0表示长度为0+3、最多等于(XXX)7+3、右移3位得到(000000XX),也就是说8080这个位置向前数3个字符(空格也是字符)长度为3得到is+空格。
        b. 英文空格出现的频率很高,因此如果没有长度3-10的重复,空格就和后面的字符+80(16进制)合成一个字符,如:空格+He(48+80)编码为:C865,空格+he编码成:E865。F765解压为:we。
        c. 中文和一些特别符号:看来mobi的压缩不适合中文,或许动态建议词典来索引,分析有难度,通常中文和特别符号用一个16进数表示:前4位一定是0(0000),后4位表示这几个字符没有压缩,如06表示:后面的6个字符没有压缩(照抄)。

      以上是mobi格式压缩解压abc,实际文件还有其它图片、中文索引等内容的压缩,就没有办法分析了。

用delphi编写的解码程序测试通过。插入代码片段不如其他人的博客已删除,其实知道了道理,编写程序解码很简单的。





0 0
原创粉丝点击