从压缩/加密的 .DAT 文件中提取文本数据

逆向工程 反编译 文件格式 解密
2021-06-14 11:08:17

你好,

我来自乌拉圭,所以我会尽最大努力用英语解释我的“问题”。我想阅读 .DAT 文件中的一些文本,但是“加密”或“压缩”(我不知道哪个是正确的“术语”)。该文件来自游戏 SMITE,该文件基本上包含游戏中的大部分文本(如未发布的物品描述),这就是我想阅读该文件的原因:D

以前版本的文件可以用 Notepad ++ 读取,如下所示: http : //i.stack.imgur.com/LCi71.png

但当前版本只是随机字母和字符。(由于“只有两个链接”的限制,我无法发布图片)。

我只对两个文件感兴趣。一个,名为“Lang_INT.dat”,在 Localization 文件夹中,该文件夹中有另一个名为“GFxTranslation.int”的文件,其中有一些出现在大厅屏幕中的文本等,这就是“Localization”的原因文件夹必须是文本所在的位置...但在我分享的第一张图片中,您可以看到出现在游戏中和大厅屏幕中的文本,它位于另一个名为“内容”的文件夹中,文件名为“assembly.dat”,还有另一个名为“behavior_trees.dat”的文件,但我认为该文件对我来说并不重要。

顺便说一句,这可能作为“参考”很有用,还有另一个名为“单词过滤器”的 .DAT 文件(我想)如果单词过滤器被激活,它会在聊天中审查“坏词”。此 .DAT 位于本地化文件夹内。

这是这篇文章中提到的所有 .DAT 的链接

我会很感激这方面的任何帮助,我做了一些研究,但我没有找到任何有用的东西......我唯一知道的是:一个对编程或“一些”知识一无所知的人,可以“解压缩”“解密”其中一个文件......或者看起来像,不,那个人不想帮助我:c

再次提前致谢,抱歉英语不好:

-奥古斯丁

1个回答

这些文件绝对没有压缩。behavior_trees.dat 是一个二进制文件,它没有加密也没有压缩,只是二进制文件。就我所见,加密看起来像替换密码,如果您知道应该有什么,那么使用频率分析应该相对容易破解。假设旧版本和新版本文件的解密内容相似,您可以尝试根据以前版本的文件计算符号的频率。

这是我为解密(例如) assembly.dat 文件所做的:

  1. 从以前的版本中获取不应加密的相应文件。
  2. 每个符号出现的帐户频率(应该可以用简单的python脚本轻松完成)
  3. 计算每个符号在较新版本文件中出现的频率。
  4. 尝试将新文件中的符号替换为旧文件中具有相同(或相似)出现率的符号,然后看看会发生什么。

更新,只是为了完整起见:

我使用了Didier Stevens 的一个很好的工具XorSearch(@Andy Dove 在回答另一个问题时提到了它,这提醒我回到这个问题)并发现以下内容:

  • 假设当前文件的解密内容与之前的内容相似,我试图从您提供的图片中找到一些单词(例如 item、Pickup 和 Physical 等单词)。
  • 该工具显示它是异或替换密码,密钥为 0x2a,将其应用于单词过滤器和 lang int 文件给出了合理的结果。
  • 应用这个键会给出很多合理的字符串,对于我尝试过的所有文件,键是一样的。
  • 根据您的说法,您了解一些编程基础知识。这意味着您将能够对您的文件运行以下 python 脚本并了解发生的情况或将其翻译成您选择的语言。

祝你好运。

import os
import sys

f = open(sys.argv[1], "rb")
o = open(sys.argv[2], "wb")

data = f.read()

for d in data:
    o.write("" + chr (ord(d) ^ 0x2a))


f.close()
o.close()