我正试图找出客户端应用程序用于返回会话密钥的算法。
当我启动连接时,服务器首先发送一个唯一的会话密钥。然后,客户端必须使用加密或哈希密码进行响应,并将用户名一起发送到服务器。
客户端和服务器之间的网络跟踪示例:(用户名:serv1ce/密码:test12)
从服务器接收的应用<lt;52 d7 1c 3f 9f 2c 05 c9(一次性会话密钥)
应用程序发送到服务器>>11 83 2d 7 d ff 0c 51 8c53 45 52 56 31 43 45 20
"53 45 52 56 31 43 45 20"部分是明文形式的用户名字节值(serv1ce)。
有人知道字节"11 83 2d 7d ff 0c 51 8c"是如何用密码"test12"和64位(8字节)会话密钥"52 d7 1c 3f 9f 2c 05 c9"创建的吗?
如果他们使用的是加密安全的哈希,那么原则上从输入和输出中你应该无法发现这一点。
在实践中,他们返回的是8个字节,即64位,这表明他们使用的是MD5的某种变体。如果他们遵循典型的做法,他们很可能以某种方式创建了一个字符串,其中包括用户名、密码、会话密钥和一个秘密哈希的组合,然后对其进行哈希处理。
你有两个不错的方法。最简单的是暴力搜索。如果你搜索md5 gpu cracking
,你可以找到很多工具,让你卸载MD5计算到你的视频卡。这些是暴力搜索的理想选择,可以让你很快尝试上述主题的惊人数量的变体。(这种攻击的可行性就是为什么人们应该使用bcrypt来处理这种东西。)
另一个是你有申请。在应用程序进行计算时,有多种方法可以跟踪应用程序内部实际发生的情况。成功地弄清楚这一点,你就会得到答案。