gpt4 book ai didi

ssl - 在 OpenSSL 中握手后查找 SSL 版本

转载 作者:太空宇宙 更新时间:2023-11-03 13:00:33 25 4
gpt4 key购买 nike

我想找出目标支持的协议(protocol),但问题是他们有很多网站不支持特定版本,但当我执行握手时它是成功的,因为目标超过了我提供和执行的版本在支持的版本上握手[它只发生在 1 个网站上]

示例:我传递了一个版本:TLSVersion.TLS_1_2 但握手是使用 TLSv1_0 执行的,因为它不支持 TLSVersion.TLS_1_2

由于上述问题,我想在握手时检查版本,我不想使用 scapy.ssl_tls

version = [SSL.SSLv23_METHOD,
SSL.TLSv1_METHOD,
SSL.TLSv1_1_METHOD,
SSL.TLSv1_2_METHOD]
context = OpenSSL.SSL.Context(version)
soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
soc.settimeout(CONNECTION_TIMEOUT)
connection = OpenSSL.SSL.Connection(context,soc)
connection.connect((host,port))
connection.do_handshake()
#wants to check version here

最佳答案

i want to check the version on handshake

在 pyOpenSSL 中检查客户端和服务器用于剩余 session 的版本的相关函数是 get_protocol_version_nameget_protocol_version :

connection.do_handshake()
#wants to check version here
print(connection.get_protocol_version_name())

请注意,这些函数仅在 pyOpenSSL 0.16.0 之后可用

另请注意,您在创建上下文时不能指定 TLS 方法列表,但 only a single method它实质上指定了客户端支持的最小 TLS 版本。因此

context = OpenSSL.SSL.Context(SSL.TLSv1_METHOD)

允许客户端使用 TLS 1.0 及更高版本。如果您改为使用 SSL.TLSv1_2_METHOD,客户端将被限制为 TLS 1.2 或更高版本,因此无法与仅支持 TLS 1.0 的服务器建立 SSL 连接。

关于ssl - 在 OpenSSL 中握手后查找 SSL 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40064403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com