c - OpenSSL - 找到 AES key

标签 c encryption openssl aes ssl

我使用 OpenSSL 库在客户端和主机之间用 C 语言创建了一个 SSL 套接字。 我需要 SSL session 的 AES key 来正确加密消息,但我无法使用标准函数 ssl_write 和 ssl_read。 我发现有一个名为AES_KEY的结构,但我不知道如何找到它!

SSL_write 和 SSL_read 仅适用于数据包类型:23(“应用程序协议(protocol)”)

我如何解密,例如,来自服务器的 SSL Hello 消息(我打开了与该服务器的 SSL channel )?我如何加密来自其他客户端的 SSL Hello 客户端(在 clair 中)?

我正在尝试演示 TLS 协议(protocol)“TLS 重新协商”阶段的攻击。我正在尝试使用自定义代理模拟攻击 MITM。

现在,服务器向代理发送一定数量的加密消息,类型为 22 (Handshake) 和 20 (ChangeCipherSpec)。我怎样才能阅读这些消息并解密它们?标准库 ssl_read 仅适用于消息 23(应用程序)。

此外,客户端向代理发送客户端 Hello 和其他类型为 22 和 20 的消息。我如何编写这些消息并对其进行加密?我尝试使用 ssl_write,但服务器不理解这些消息。

最佳答案

您应该使用 SSL_CTX_set_info_callback 而不是手动(en|de)加密记录获取您想要的信息。

关于c - OpenSSL - 找到 AES key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5559094/

相关文章:

c - Linux Socket 坏文件描述符

c - 减少在套接字上发送的调用是否有意义?

encryption - 如何批量加密 MySQL 数据库中的现有密码?

php - Openssl RSA加密-解密

python 3 smtplib 异常 : 'SSL: WRONG_VERSION_NUMBER' logging in to outlook

c - 在 C 中发出信号和使用处理程序

c++ - volatile 变量在一个客户线程和一个生产者线程中安全吗?

php - 使用 Javascript/PHP 验证公钥

C#,将字符串编码/解码为一些带有校验和的简单代码

c++ - 如何在 openssl 中从 SHA 切换到 SHA-1