最近,Gaming.SE上的一位用户询问一个问题,视频游戏上行链路中的用户密码在最初设置后是否可以修改。游戏不包含更改密码的选项,密码在游戏中始终以纯文本形式反复显示。显然,如果用户不小心使用了有价值的密码,这就是一个问题。
游戏将密码存储在保存文件中,保存文件可以被编辑,但保存文件是使用Introversion的红衬衫加密方案加密的。红衬衫和REDSHIRT2加密方案是如何工作的,解密算法是什么?
请注意:已发现并公布了红衬衫加密的详细信息:
我问这个问题只是为了让未来的用户受益。我确实计划贴出我自己的答案,但我很乐意投赞成票,并接受任何比我更好解释的人。
发布于 2012-01-01 07:36:04
我不打算解释这一点,但是在查看了redshirt.c之后,程序的核心部分是跳过标头(这是"REDSHIRT" (9个字节包括一个结束空字节)之后,它有一个循环,这样做:
int j;
j = (j & 0x7F) + (~j & 0x80);如果你不认识它,就把128-255映射到0-127,0-127到128-255。(我认为这可能与交换字节的字节数相同。)和j = (j + 128) % 256一样。
发布于 2012-01-02 06:07:27
Red恤是一种简单的XOR加密方案,其中文件的每个字节(9字节头除外)都由128位异或。
下面的Python代码将解密它:
b = bytearray(open('a.in', 'rb').read())
#strip header
for i in range(9):
b.pop(0)
for i in range(len(b)):
b[i] ^= 0x80
open('b.out', 'wb').write(b)同样的转换将重新加密它,之后头应该被重新应用到文件中。
https://crypto.stackexchange.com/questions/1555
复制相似问题