当我知道加密文件名和原始文件名时获取加密方法

逆向工程 反编译 解密 十六进制 异或
2021-06-15 00:34:59

我正忙着解密一些游戏数据。所有加密的文件名都是相同长度的十六进制字符串,例如1790C6E445C7E38EFCD5B3042F9B4443.

我发现其中一些文件是未加密的 OGG 文件,并且我已经使用该strings命令来查找.ogg游戏二进制文件中包含字符串列表

现在我想知道,有没有办法找出文件名是如何创建的?

并且是否有可能以某种方式重新创建目录结构(现在它都是扁平的,但根据我找到的字符串,应该有目录)。

1个回答

这看起来可能是原始文件名上的一些散列,并且因为它们的长度为 32 个字符,所以它很可能是一个 md5 散列。或者,它可能是 sha* 变体之一,在 32 个字符后剪切。

如果您可以访问 linux 系统,则可以尝试类似

$ echo -n 'introduction.ogg' | md5sum
dc8f2a080281b924622580a8d662874c

如果这不匹配,请尝试sha1sum, sha224sum, sha256sum, sha384sum, sha512sum这些都会导致更长的结果,因此您的文件名可能位于结果的开头、结尾或中间的某个位置。

或者,只需将您的文件名粘贴到这个具有这些和更多算法的在线工具中。

坏消息是,您将无法从哈希中猜测原始文件名。所有这些散列都是(打算成为)单向函数——很容易从原始数据中获取散列,但没有退路。这就是为什么像这样的散列用于密码存储的原因 - 您可以通过加密来验证密码,但您无法从散列中获取密码。