【问题标题】:How to identify the binary compression type from the content?如何从内容中识别二进制压缩类型?
【发布时间】:2015-05-14 13:38:49
【问题描述】:

我正在尝试将存储在 MS SQL 数据库(已停止支持的第三方应用程序使用)中的文件恢复为图像数据类型(字节数组)。所以我所做的就是将这些字节数组行写入文件以转换为已知的文件扩展名。然而,其中一些是未知的,我相信它们是被压缩的。由于我在转换后在文件中得到“CC_Compress”字符串和随机字符。我想知道是否有可能找出使用了哪种压缩方法以及如何在转换它们之前对其进行解压缩。

以下是字节数组中的第一个字节: 0x43435F434F4D50524553530000000000000000000000010004F60000E4780000EC7C075C54C7F3F85CA10A8A204544796001519A0D4569414414011115238A079C80C21D5204224D632C51C19268628FC6A851638B9A88882D9604C5D83BB688A002564085FBCFBEBDC71DCD16623EFFEF2FA373B33B5B667676B6BC7DCB3B9DDFF2E677DB8D6F411D70060154CB34401514C043D4E5223A00AD80F2AA65321961B54494FD07FF5FC1C3750741304E430850A19B0B2CE8B0BFD8F16DD5019A43C88490097FC4FD1107F5404368003D740036B6E6B1D816DE0C32598BB78639F89EFDDD20801AAA1C6E8CB60205E P>

而 43435F434F4D5052455353 是转换为 CC_Compress 的部分

提前致谢,

【问题讨论】:

  • 如果您提供一个前 30 个左右字节为十六进制的示例,我们或许可以提供帮助。
  • 编辑了描述
  • 以前没见过。它有一个很长的、几乎没用的标题。也许压缩数据从 E478 开始。你能从那里开始提供另外 30 个字节吗?
  • 我添加了更多字节。顺便说一句,感谢您参与这个问题

标签: c# sql-server-2005 compression gzip binary-data


【解决方案1】:

原始的 deflate 压缩数据以 32 个字节开头(以 ec 7c 开头)。可以使用zlib解压。

【讨论】:

  • 非常感谢您的工作。以 ec 9d 开头的字节呢? zlib也可以解压吗?
  • 原始放气数据没有魔法前缀。如果您不知道 deflate 数据从哪里开始,那么您只需从每个字节开始膨胀,直到找到一个持续一段时间并成功完成的字节。
  • 哦,我明白了,如果我需要自动化流程,我该怎么办?因为我在数据库中有很多二进制数据。有什么模式可以搜索吗?
  • 没有。唯一的模式是放气流有效并终止。您的数据可能在标题中有一个模式。也许它总是从 32 个字节开始。也许标头中有一些数据指向 deflate 流的开始。这就是您应该寻找模式的地方。
  • 再次非常感谢,非常感谢,帮了大忙。顺便说一句,投票为有用的答案并将其标记为正确:)
猜你喜欢
  • 1970-01-01
  • 2015-04-16
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
相关资源
最近更新 更多