python程序如何检查自己的md5sum?

时间:2011-02-16 00:27:09

标签: python security md5 md5sum

大约一年前我正在玩游戏。为了加快速度,我编辑了主要的.py文件并在一开始就添加了psyco。游戏跑得越来越快,但它不会让我发送我的分数。我进入了文件,它正在检查自己的md5sum。困惑我的部分是他们在文件中有md5。我的问题是,如何获取文件的md5与文件的总和,包括我还没有的md5。对我来说似乎有一个问题,但他们做到了。

希望我解释得那么好。 例如:

文件:Example.example

check md5 of Example.example
If md5 I just obtained == "###################################"
allow send score.

3 个答案:

答案 0 :(得分:5)

你不能(轻松地)在计算MD5的程序中嵌入程序的MD5,因为当你更改你正在嵌入的MD5时,程序的MD5会改变。循环一段时间,最终你可能达到稳定点。然后,你可能不会。 “一段时间”通常意味着2 ^ 128步,所以这将是一段很长的时间 - 就像在太阳变成红巨星之后。

所以有一个技巧。当程序计算自己的MD5时,它会专门识别嵌入式MD5的位置并使用设置值,就像所有NULL一样。

为了让黑客更难,不要使用所有NULL - 使用SALT值。在二进制文件中混淆该值。现在,人们更难编辑嵌入式MD5并在编辑程序后“修复”它。

答案 1 :(得分:1)

在这些情况下通常做的是,在计算MD5时,实际数字会替换为某个占位符,例如空格或零填充。

这被广泛用于像IPSEC这样的加密机制。

答案 2 :(得分:0)

这将是非常困难的,你需要暴力强迫它。你确定它不是一个 红鲱鱼和真正的验证是在其他地方完成的吗?

无论如何看起来似乎不是很好的安全性,是什么阻止你修改这样的算法(使用你的伪代码)

check md5 of Example.example
If md5 I just obtained != "###################################"
allow send score.