我有一个二进制文件,我需要从中提取信息。 我知道它是一个压缩文件,文件的前3个字符是 zip 我很确定LZ Substitution和/或Huffman Coding被用来压缩这个文件。 但是,该文件不遵循任何常规存档格式,如.rar,.zip等。
该文件包含3个部分:
部分(A)显示了16字节的标题,包括8个字节作为签名 具有以下字符值:122,105,112,1,0,12,0,0
部分(B)是地址列表(271),每个地址指向文件的特定地址,我相信它是部分(C)中的记录起点。
部分(C)是实际数据
第一个地址(图中的716)显示了部分(C)中的第一个记录(块)地址,因为部分(C)恰好在部分(B)结束时开始,第一个地址是部分(B)的地址)结束和部分(C)开始,并且由于文件在部分(C)结束后结束,部分B列表中的最后一个地址指向文件的末尾,其中部分(C)中的最后一个记录(块)结束。 / p>
为了使其适合图中我必须剪切部分(C)中的记录(块),它们具有更多的字符,如图所示,第一个记录(块)的长度为472字节。 / p>
每个块具有不同的长度,因此它们的长度不相等。 此外,最大记录的长度存储在标题(字节13,14,15,16)中,即955(187,3,0,0)我不知道为什么它在阅读压缩文件时可能会派上用场。
如您所见,所有记录都以两个字节开头(120,218) 结尾字符不会被记录重复记录,实际上它们看起来非常随机。
我没有看到记录末尾的霍夫曼树或霍夫曼表之间有任何相似之处,但为了查看该文件,我已将其上传到此处。
非常感谢您提取文件中压缩数据的任何帮助。
答案 0 :(得分:3)
(C)部分中的每一行都是一个zlib压缩块文件。
前两个字节是120,218,它是zlib签名,最后4个字节应该是adler32。