查找使用的加密或散列方法

时间:2011-06-14 18:47:38

标签: algorithm encryption hash communication-protocol

我试图找出客户端应用程序用来返回会话密钥的算法。

当我启动连接时,服务器首先发送一个唯一的会话密钥。然后,客户端将使用加密或散列密码进行响应,并将用户名与服务器一起发送。

客户端和服务器之间的网络跟踪示例:(用户名:serv1ce /密码:test12)

从服务器收到的应用程序<< 52 d7 1c 3f 9f 2c 05 c9(一次会话密钥)
应用程序发送到服务器>> 11 83 2d 7d ff 0c 51 8c 53 45 52 56 31 43 45 20

“53 45 52 56 31 43 45 20”部分是明文中的用户名,即字节值(serv1ce)。

有没有人知道如何使用密码'test12'和64bit(8bytes)会话密钥“52 d7 1c 3f 9f 2c 05 c9”创建字节“11 83 2d 7d ff 0c 51 8c”?

1 个答案:

答案 0 :(得分:1)

如果他们使用加密安全散列,那么原则上从输入和输出中你不应该发现它。

实际上它们返回8个字节,即64位,这表明它们正在使用MD5的某些变体。如果他们遵循典型的做法,他们可能会以某种方式创建一个字符串,其中包括用户名,密码,会话密钥和秘密哈希的某种组合,然后对其进行哈希处理。 (请注意,我说的是典型的练习,而不是最佳练习。最好的做法是使用缓慢的东西来计算这个目的,例如bcrypt。)如果你弄清楚魔法组合,你就有了答案。

你有两个不错的方法。最简单的是强力搜索。如果您搜索md5 gpu cracking,可以找到许多工具,可以将MD5计算卸载到视频卡中。这些非常适合强力搜索,并且可以让您快速尝试上述主题的惊人数量的变化。 (这种攻击的可行性就是为什么人们应该使用bcrypt这种东西。)

另一个是你有申请。有各种方法可以跟踪应用程序内部实际发生的事情,因为它正在进行计算。成功搞清楚,你会得到答案。