2017-02-22 79 views
2

我有一个二进制文件,我需要从中提取信息。 我知道这是一个压缩文件,该文件的前3个字符是zip 我非常确定LZ Substitution和/或Huffman Coding被用来压缩这个文件。 但该文件不遵循任何规则的档案格式,如.rar或.zip文件等从未知的压缩文件中提取数据

我试图读取该文件,并发现了以下模式 Part (C) is truncated to make it fit the figure

的文件有3个部分:

部分(A)示出为16个字节,并包括8个字节作为签名 具有下列特征值头:122,105,112,1,0,12,0,0

部分(B)是一个列表的地址(271),每个指向一个特定的地址文件的ss,我相信它是(C)部分中的记录起点。

(C)部分是实际的数据

第一地址(716在图中)示出的部分(C)中的第一个记录(组块)的地址中,由于(C)部分开始的确切时间的部分( B)结束第一个地址是部分(B)结束和部分(C)开始的地址,并且由于文件在部分(C)结束之后结束,部分B列表中的最后一个地址指向文件结尾部分(C)中的最后一个记录(块)结束。

为了使它适合图中我不得不削减部分(C)中的记录(块),他们有更多的字符,正如你在图中看到的第一个记录(块)有472字节长度。

每个块有不同的长度,所以它们的长度不相等。 也是最大的记录长度存储在头(字节13,14,15,16)这是955(187,3,0,0)我不知道为什么它可能会来得心应手,而阅读压缩文件。

当你看到所有记录以两个字节开头(120,218) 结尾字符不会被记录重复记录,实际上它们看起来非常随机。

我在记录末尾没有看到霍夫曼树或霍夫曼表之间有任何相似之处,但为了看看这个文件,我已经在这里上传了它。

任何帮助提取文件中的压缩数据真的很感激。

Download Part (C)

回答

3

在(C)部分中的每一行是一个zlib的压缩块的文件。

前两个字节是120,218这是zlib签名和4最后应该是adler32。

+0

典型的zlib格式 – Rassam

相关问题