首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何破解红/ REDSHIRT2加密?

如何破解红/ REDSHIRT2加密?
EN

Cryptography用户
提问于 2012-01-01 07:02:14
回答 2查看 2.7K关注 0票数 3

最近,Gaming.SE上的一位用户询问一个问题,视频游戏上行链路中的用户密码在最初设置后是否可以修改。游戏不包含更改密码的选项,密码在游戏中始终以纯文本形式反复显示。显然,如果用户不小心使用了有价值的密码,这就是一个问题。

游戏将密码存储在保存文件中,保存文件可以被编辑,但保存文件是使用Introversion的红衬衫加密方案加密的。红衬衫和REDSHIRT2加密方案是如何工作的,解密算法是什么?

请注意:已发现并公布了红衬衫加密的详细信息:

  • http://www.mario-konrad.ch/index.php?page=14002
  • http://uplinkfan.blogspot.com/2011/10/getting-book-2-of-uplink-game-bible.html

我问这个问题只是为了让未来的用户受益。我确实计划贴出我自己的答案,但我很乐意投赞成票,并接受任何比我更好解释的人。

EN

回答 2

Cryptography用户

回答已采纳

发布于 2012-01-01 07:36:04

我不打算解释这一点,但是在查看了redshirt.c之后,程序的核心部分是跳过标头(这是"REDSHIRT" (9个字节包括一个结束空字节)之后,它有一个循环,这样做:

代码语言:javascript
运行
复制
int j;
j = (j & 0x7F) + (~j & 0x80);

如果你不认识它,就把128-255映射到0-127,0-127到128-255。(我认为这可能与交换字节的字节数相同。)和j = (j + 128) % 256一样。

票数 7
EN

Cryptography用户

发布于 2012-01-02 06:07:27

Red恤是一种简单的XOR加密方案,其中文件的每个字节(9字节头除外)都由128位异或。

下面的Python代码将解密它:

代码语言:javascript
运行
复制
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)

同样的转换将重新加密它,之后头应该被重新应用到文件中。

票数 6
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/1555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档