https://dl.dropboxusercontent.com/u/247623/item.dat
这是Java游戏中的文件,我想知道如何从中读取字符串数据。

我希望只给出提示。

我用十六进制编辑器进行了研究,并得出结论,由于缺少模式,文件已压缩或加密。

如果已加密,我不知道如何进行。
如果已压缩,我发现以下内容,但不知道如何进行。


熵=每字节7.999055位。

最佳压缩将使384802字节文件的大小减少0%。 384802个样本的分布为505.10,并且随机
超出该值的时间小于0.01%。

数据字节的算术平均值为128.1314(127.5 =随机)。 > Pi的Monte Carlo值为3.120328068(误差0.68%)。串行
相关系数是-0.031097(完全不相关= 0.0)。 >可根据要求提供更多信息。

预先感谢!

评论

反转使用该文件的程序,因为它是java,所以这可能是最简单的解决方案。只是JD-GUI或类似的东西。

#1 楼

小菜一碟:这是ZIP兼容的压缩编译Java。标头附近是否有任何熟悉的字节序列?反正还是个红鲱鱼。接下来:CA FE BA BE,可以是任何东西(不是文件长度,但可能是一些内部标志或ID)。

下一步:10 00 10 00。这些是熟悉的,它们可能形成一组ZLIB兼容的压缩标志。快速而简单的ZLIB解包程序为我提供了(1)积极的解包结果(这意味着该数据是有效的压缩数据并且可以被解压缩),以及(2)一个输出文件远大于输入文件(1,388,603字节,原始文件) 384,802)。

检查解压缩后的数据,我在一开始就发现了这一点: />
FA CE AF 0E 10 00 10 00 78 9C AC DD ..


-足以推断出它已成功解压缩。从这一点开始,您应该能够使用常见的Java解密/反编译技术。

#2 楼

很难将压缩良好的数据(例如LZMA)与加密良好的数据(例如AES)区分开。但是,我过去进行了一些分析,发现基于熵分析,可以将许多压缩数据与加密数据区分开,就像您显然已经做过的那样。

首先会采用更简单的方法。在文件中查找常见的“魔术”字符串和/或标题,例如gzip,zlib和lzma的字符串。游戏开发人员可能正在使用标准压缩,他们只是为其应用程序添加了自定义标头。

评论


是的,可以在开始处找到一组常见的ZLIB压缩标志。

–杂件
13年11月1日在22:15