2015-01-08 43 views
0

我开发了一个应用程序,它接收来自服务器的信息,自动读取数据包并将其保存为数据库中的浮点数。用1字节密钥解码1字节

示例: 数据接收(00 00 D0 41) - >反向顺序(41 D0 00 00) - >转换为浮点(26.0)

最近的信息已稍有改变的,而不是发送4个字节服务器将发送5.

实施例: 0A 0C 0C 0F C0

我想出的是,第一字节是某种关键的,并且当此键是06,数据没有被加密。

实施例: 06 00 00 D0 41

我看到的唯一键到目前为止是00 06 08 0A和。

样品义同:
06 00 00 D0 41(原始的,键06)
08 32 32 12 B4(编码与键08)
00 EF EF 1B BF(编码与键00)
0A 0C 0C C0 0F(用密钥0A编码)

看起来,它只是逐字节编码,我得出这个结论是因为在几个数据包上,我知道原始字节是什么,并且加密的字节保持不变。

示例:00(密钥06)= 32(密钥08)= EF(密钥00)= 0C(密钥0A)在每个数据包中。

我发现在数量上一些逻辑为4的差异,

主要0A

00=>0C 
04=>1C 
08=>6C 
0C=>7C 
10=>CB 
14=>DB 
18=>2C 
1C=>3C 
20=>8B 
24=>9B 
28=>EB 
2C=>FB 
30=>4D 
34=>5D 
38=>AD 
3C=>BD 

我的问题是,什么是找出加密算法的最佳方式?

  • 我应该蛮力强制多个操作(XOR,旋转和,...),看看他们是否匹配?
  • 是否有算法有这种行为?

回答

0

我会依次回答两个相关的问题。

  • 是的,我会蛮力使用通常的嫌疑犯的算法。不要忘记加法(模256)。
  • 这不是我知道的算法,它似乎不是编码或加密,更多的是混淆问题。

现代加密算法不处理已知的单字节密钥并产生与随机无法区分的数据。它也不是编码,至少有字节似乎超出了字符编码所期望的字节或例如BCD编码。

+0

谢谢你的回答,这是我正在寻找的答案,你能给我一些关于如何暴力的提示吗?另外,你知道任何可以帮助我的程序吗? – someone32

+0

我通常不会做分析。必须有一些网站或应用程序能够以自动方式做到这一点,但我不知道如何。也就是说,这个我可以通过笔/纸或类似的东西(用二进制而不是十六进制写下来)弄清楚。这需要时间。 –

+0

PS也有http://reverseengineering.stackexchange.com/ –

相关问题