亲爱的逆向工程@ SE,
背景信息: 我有理由相信我玩过的一个老游戏仍然对几乎所有的输入/输出数据包使用他们的 XOR 加密。我还相信,当我分析数据包数据时,加密方案中使用的密钥保持静态,至少某些值的频率表明如此。
我知道以前的密钥是长度为 9 字节的 ASCII 密钥
问题: 我无法解密包。我尝试过直接循环密钥,对 TCP 包中包含的数据进行异或运算,还尝试了以下用于 XOR 加密的 C# 函数(请参阅附录)。
假设要使用 Vigenere 密码作为基础,前面的密钥表明长度可能是 9 个字符。
因为我可以在游戏中使用聊天功能,所以我确实可以完全控制解密包的明文(在这种情况下为 ASCII)将包含的内容。因此,我尝试发送相同的消息并观察 Wireshark 中的数据差异,如下所示:
游戏中发送的明文:
测试TheKeyTestingTheKeyTestingTheKeyTestingTheKey
以下快照是同一消息的三个数据包。注意长度如何保持不变,进一步指示静态密钥长度:
概览 (3 个点表示数据流量)
数据并排(突出显示非标题数据)
最后:相同数据包的十六进制转储。(见附录)
我对密码学比较陌生,但发现该领域非常有趣,希望有好心人愿意提供一些帮助。任何事情都值得赞赏。
谢谢你。
附录代码 http://pastebin.com/F0py05Lz
十六进制转储(由于低代表)
0000 aa 00 41 0e ad ce ff ce f0 ef e9 a0 f1 f8 9b a2
0010 fe df f8 e5 9c fb ed b8 a0 f6 f0 ca f7 ae d6 f8
0020 b4 9c fc e5 eb f7 a4 fb c8 a2 aa d5 f4 e1 cd a8
0030 e8 ef a2 a0 f8 c4 f1 fd 87 ff e3 c8 c3 e2 99 42
0040 de 51 ef 2b
0000 aa 00 41 0e ae 9a a8 ca f2 eb bf a3 a1 aa cf f5
0010 fa dd fc b3 9f ab bf ec f7 f2 f2 ce a1 ad 86 aa
0020 e0 cb f8 e7 ef a1 a7 ab 9a f6 fd d1 f6 e5 9b ab
0030 b8 bd f6 f7 fc c6 f5 ab 84 af b1 9c 94 d9 fd 32
0040 91 07 59 ba
0000 aa 00 41 0e af 9b fe 9a f9 e8 e3 f1 f2 a9 ce a3
0010 aa d6 ff ef cd f8 bc ed a1 a2 f9 cd fd ff d5 a9
0020 e1 9d a8 ec ec fd f5 f8 99 f7 ab 81 fd e6 c7 f9
0030 eb be f7 a1 ac cd f6 f7 d6 fc b2 9d c2 3f 2d 7a
0040 bd f6 42 d6