【问题标题】:Finding the Encryption or Hashing method used查找使用的加密或散列方法
【发布时间】:2011-06-14 18:47:38
【问题描述】:

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

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

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

从服务器收到的应用程序 应用发送到服务器 >> 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”和 64 位(8 字节)会话密钥“52 d7 1c 3f 9f 2c 05 c9”创建字节“11 83 2d 7d ff 0c 51 8c”吗?

【问题讨论】:

    标签: algorithm encryption hash communication-protocol


    【解决方案1】:

    如果他们使用加密安全散列,那么原则上从输入和输出中您应该无法发现这一点。

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

    你有两种不错的方法。最简单的是蛮力搜索。如果您搜索md5 gpu cracking,您会发现很多工具可以让您将 MD5 计算卸载到您的视频卡上。这些是蛮力搜索的理想选择,并且可以让您快速尝试上述主题的惊人数量的变化。 (这种攻击的可行性就是为什么人们应该使用 bcrypt 来处理这类事情。)

    另一个是你有应用程序。有多种方法可以跟踪应用程序内部实际发生的情况,因为它正在执行该计算。成功地弄清楚这一点,你就会得到答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 2017-05-15
      • 2019-01-14
      • 2023-02-09
      相关资源
      最近更新 更多