0

我有一个在我的计算机上运行的客户端应用程序,它使用 openssl 与使用 SSLv3 的服务器进行通信。我需要看看他们在说什么,所以我基本上想编辑和重新编译 openssl 库以获得相关的加密密钥。

该应用程序通常使用 TLS-DHE-RSA-WITH-AES-256-CBC-SHA 作为密码套件。有时它使用 aes128 而不是 aes256,但这在这个阶段并不重要。到目前为止,我编辑了 s3_enc.c 文件。在 ssl3_setup_key_block 函数结束时,我将主密钥、密钥块(因此客户端-服务器写入密钥、mac 密钥和 IV)、服务器和客户端随机写入文件。http://www.ietf.org/rfc/rfc2246.txt说如果流密码是可导出的,则客户端-服务器写入密钥将相应地更新为最终的客户端-服务器写入密钥。我不确定这个密码套件是否被认为是可导出的(无论这意味着什么),但无论如何我都会创建最终的写入密钥。

问题是无论我尝试了什么,我都无法成功解密使用wireshark获取的任何数据包。无论如何,输出都是毫无意义的,我被卡住了。我正在考虑在解密后检查数据包的 mac 字段,以查看解密是否正确。但这似乎也是一条死胡同。

有谁知道我错过了什么,我可能做错了什么?

4

1 回答 1

1

如果您可以修改 OpenSSL 并让您的客户端应用程序使用它,那么您需要做的就是让您修改后的 OpenSSL 将解密的数据转储到文件中。更简单的替代方案是让 OpenSSL 使用 NULL 密码套件之一,即使应用程序请求某些加密也是如此。

于 2010-12-16T11:24:51.720 回答