python - 使用 pyOpenSSL 从捕获中解析“Server Hello”
问题描述
我有一些 TLS 交换的 PCAP 需要调试。我想以 OpenSSL 的方式从“Server Hello”消息中提取内容。
我有服务器发送的可用bytes
对象。它从b'\x16\x03\x03
握手类型开始,TLS 版本 1.2。这是 Wireshark 看到的示例。
看起来 pyOpenSSL 必须能够解释这样的对象,因为这就是 OpenSSL 在现实生活中从网络中看到的。阅读 pyOpenSSL 的单元测试,看起来可以模拟来自网络的数据。
但是,我一直无法让它工作:
from OpenSSL.SSL import Connection, Context, TLSv1_2_METHOD
context = Context(TLSv1_2_METHOD)
conn = Connection(context, None)
conn.set_connect_state()
conn.bio_write(b'\x16\x03\x03...') # this goes on for a while
conn.do_handshake()
错误是OpenSSL.SSL.Error: [('SSL routines', 'tls_process_server_hello', 'parse tlsext')]
,这是有希望的 - 它正在做某事。正确编写“客户端问候”而不是“服务器问候”会给出一个unexpected message
,而编写乱码会给出一个wrong version number
错误(这也是有道理的)。
我的目标是能够使这些Connection.get_
方法从重放的数据中返回数据。是否可以这样做,或者 pyOpenSSL 是否没有公开 OpenSSL 的必要位?
解决方案
推荐阅读
- wso2 - 如何在 wso2 中添加用户时添加角色/组是 5.9.0 使用 scim2 apis?
- plot - 使用 Paraview 在矩形网格上绘制点
- javascript - ajax中的表单提交而不刷新整个页面仅引用ATG中的特定div标签
- java - 在春季记录 SQL 查询,隐藏的 SQL 请求比预期的要多
- javascript - 使用数字序列定义 Firestore 文档字段值
- java - 我可以在安卓设备上发送消失的短信吗?
- botframework - 如何订阅刷新令牌事件
- r - 如果显示多个步骤,gganimate::transition_reveal() 会出现跳跃行为
- graphql - Gatsby - 对 Contentful 进行动态查询
- c# - 如何在使用 Asp.Net 和 OpenIDAuthentication 和 SAML2 登录后检索 AzureAD 属性?