【问题标题】:Extracting data from an unknown compressed file从未知压缩文件中提取数据
【发布时间】:2017-02-22 19:43:44
【问题描述】:

我有一个二进制文件,我需要从中提取信息。 我知道它是一个压缩文件,文件的前 3 个字符是 zip 我很确定正在使用 LZ 替换和/或霍夫曼编码来压缩此文件。 但是该文件不遵循任何常规存档格式,例如 .rar 、 .zip 等。

我尝试读取文件并发现以下架构

该文件有 3 个部分:

(A)部分显示了 16 字节的标头,其中包含 8 字节作为签名 具有以下字符值:122,105,112,1,0,12,0,0

(B)部分是一个地址列表(271),每个地址都指向一个特定的文件地址,我认为这是(C)部分的记录起点。

(C)部分是实际数据

第一个地址(图中的716)显示了(C)部分的第一个记录(chunk)地址,因为(C)部分恰好在(B)部分结束时开始,第一个地址是(B)部分所在的地址) 结束并且 (C) 部分开始,并且由于文件在 (C) 部分完成后结束,因此 B 部分列表中的最后一个地址指向 (C) 部分中最后一条记录(块)结束的文件末尾。

为了使其适合图中,我必须在 (C) 部分中剪切记录(块),它们具有更多的字符,如图所示,第一条记录(块)的长度为 472 字节。

每个块的长度不同,因此它们的长度不相等。 最大记录的长度也存储在标头(字节 13,14,15,16)中,即 955 (187,3,0,0) 我不知道为什么它在读取压缩文件时会派上用场。

如您所见,所有记录都以两个字节 (120,218) 开头 结尾字符不会被记录重复记录,实际上它们看起来很随机。

我没有看到记录末尾的霍夫曼树或霍夫曼表有任何相似之处,但为了查看文件,我已将其上传到此处。

非常感谢任何帮助提取文件中的压缩数据。

Download Part (C)

【问题讨论】:

    标签: decode unzip lzo compression


    【解决方案1】:

    (C)部分的每一行都是一个zlib压缩的chunk文件。

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

    【讨论】:

      猜你喜欢
      • 2017-07-17
      • 2018-07-10
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      相关资源
      最近更新 更多