我有一个二进制文件,我需要从中提取信息。我知道它是一个压缩文件,文件的前 3 个字符是zip 我很确定 LZ 替换和/或 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) 部分中最后一条记录(块)结束的文件末尾。
为了使它适合图中,我必须在 (C) 部分中剪切记录(块),它们具有更多的字符,如图所示,第一条记录(块)的长度为 472 字节。
每个块的长度不同,因此它们的长度不相等。此外,最大记录的长度存储在标头(字节 13、14、15、16)中,即 955(187、3、0、0)我不知道为什么它在读取压缩文件时会派上用场。
正如您所看到的,所有记录都以两个字节 (120,218) 开头,结束字符不会被记录重复,实际上它们看起来非常随机。
我没有看到记录末尾的霍夫曼树或霍夫曼表之间有任何相似之处,但为了查看文件,我已将其上传到此处。
非常感谢任何帮助提取文件中的压缩数据。