使用“加密”与存档文件格式作斗争

逆向工程 文件格式 解密 解压 散列函数
2021-06-20 06:00:28

我目前正在研究一种用于打包(仅存储,无压缩)不同文件类型以进行传输的文件格式。使用了某种非常简单的“加密”,到目前为止我还没有任何运气。不过,我确实知道确切的(部分)纯文本。

这是我第一次反转任何东西,所以很可能我遗漏了一些明显的东西!

我已经计算出格式的完整结构:

  • 带有一些信息的标题
  • 所有“打包”文件连接起来,填充到 mod4 并“加密”
  • 每个文件的位置、大小和 md5 的文件列表

此外,每个 md5 后跟一个 32 位分隔符(在每个块和每个文件上都相同,值 = 2)然后跟随一个 32 位“密钥”,至少这是我的猜测,因为这些 32 位在文件列表中的每个块上都是相同的,但是每个存档文件都有自己的“密钥”。我确实知道某些文件(全是黑色 .png)的确切内容,并且可以在“密文”文本中找到它们,多个 png 中的每一个都被“加密”完全相同,所以我认为它不可能是任何东西过于复杂。

我可以创建多个具有完全相同内容的档案。如果它们被区分,唯一改变的是数据块和 32 位“密钥”。用于创建存档的软件确实在其配置文件之一中保存了一个键值,并在每次创建存档时更改它,但此键是 7 位,而 32 位键(如果读取为 LIT 32 位 int)是完全不同的 9数字。由于文件已满,因此它们是 mod4=0,我尝试使用“密钥”对每个 32 位块进行异或,但这并没有导致已知的纯文本(例如 png 标头数据)。

没有向这些文件的接收机器发送(或在创建存档之前接收)额外的数据,所以我假设解密密钥必须是原始文件的一部分。

由于反转格式的整个过程非常困难,但进展也非常有益,我只是希望得到一些我遗漏的指示或明显的东西,而不是彻底的解决方案,因为这是拼图的最后一部分:D

谢谢

0个回答
没有发现任何回复~