gpt4 book ai didi

python - 如何检查网站的 SSLv2 或 SSLv3?

转载 作者:行者123 更新时间:2023-12-04 22:37:50 24 4
gpt4 key购买 nike

我正在尝试网站列表并尝试获取每个网站支持的协议(protocol)类型。但是,我只能从 TLSv1 开始检索。

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
osobj = SSL.Context(SSL.SSLv3_METHOD)
sock.connect((host, int(port)))
oscon = SSL.Connection(osobj, sock)
oscon.set_tlsext_host_name(host.encode())
oscon.set_connect_state()
oscon.do_handshake()

protocol = oscon.get_protocol_version_name() # If website supports SSLv2, it should return 'SSLv2'
我了解 openssl 已弃用 SSLv2 和 SSLv3。
然后,我怎样才能获得网站支持的协议(protocol)的完整列表?

最佳答案

要检查在您的连接中协商的 TLS 协议(protocol)版本,您可以调用 oscon.get_protocol_version_name() .为了防止使用 SSLv2/v3,您可以使用标志 OpenSSL.SSL.OP_NO_SSLv2OpenSSL.SSL.OP_NO_SSLv2设置连接选项时set_options() .如果您需要将连接限制为仅使用 SSLv2/v3 - 设置选项 OpenSSL.SSL.OP_NO_TLSv1, OpenSSL.SSL.OP_NO_TLSv1_1, OpenSSL.SSL.OP_NO_TLSv1_2, OpenSSL.SSL.OP_NO_TLSv1_3 .通过使用这些选项付款,您可以完全控制连接的 TLS 版本。
以下是我将如何在您的代码片段中使用它:

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
osobj = SSL.Context(SSL.SSLv23_METHOD)
osobj.set_options(OpenSSL.SSL.OP_NO_TLSv1 | OpenSSL.SSL.OP_NO_TLSv1_1 | OpenSSL.SSL.OP_NO_TLSv1_2 | OpenSSL.SSL.OP_NO_TLSv1_3)
sock.connect(("google.com", int(443)))
oscon = SSL.Connection(osobj, sock)
oscon.set_connect_state()

try:
oscon.do_handshake()
print("SSL v2/v3 supported")
except OpenSSL.SSL.Error as err:
if err.args[0][0][2] == "no protocols available":
print("SSL v2/v3 is not supported")

关于python - 如何检查网站的 SSLv2 或 SSLv3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63214304/

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