python 扭曲 : Create SSLv2 context

标签 python ssl twisted pyopenssl

我正在制作一个游戏服务器模拟器,游戏很老并且使用不安全的 SSLv2 协议(protocol)进行通信,我可以通过以下方式解密数据包:

ssl_sock = ssl.wrap_socket(sock, keyfile="Certificates/bfbc2.key", certfile="Certificates/bfbc2.crt", ssl_version=SSL.SSLv2_METHOD, do_handshake_on_connect=True, ciphers="DEFAULT")

如您所见,我使用了两个 ssl 模块(sslOpenSSL)。 我意识到从基本上“零”开始做这个巨大的项目工作量太大,而且在某种程度上是不可能的。

Twisted可以比 socket 模块做得更好,所以我决定切换它。

问题来了,我不知道如何创建 SSLv2 上下文。 我试过这个:

SSLContext = ssl.DefaultOpenSSLContextFactory('Certificates/bfbc2.key', 'Certificates/bfbc2.crt', sslmethod=ssl.SSL.SSLv2_METHOD)

但它给了我这个错误:

ValueError: No such protocol

如何让 SSLv2 在 Twisted 中工作?

最佳答案

查看回溯:

cacheContext 中的文件“python2.7/site-packages/twisted/internet/ssl.py”,第 113 行 ctx = self._contextFactory(self.sslmethod) __init__ 中的文件“python2.7/site-packages/OpenSSL/SSL.py”,第 600 行 raise ValueError("没有这样的协议(protocol)") ValueError:没有这样的协议(protocol)

异常来自 OpenSSL 包,它是 pyOpenSSL 的一部分。 pyOpenSSL 已放弃对 SSLv2 的支持。您也许能够找到仍然支持 SSLv2 的旧版本的 pyOpenSSL(您可能还必须找到与旧的 pyOpenSSL 兼容的旧版本的 Twisted)。

另一种选择是使用单独的工具终止 SSLv2,例如 stunnel

同样,您可能需要确保您构建的 native OpenSSL 库实际上仍然支持 SSLv2。最近的版本很可能在没有此功能的情况下编译(出于显而易见的原因)。

关于 python 扭曲 : Create SSLv2 context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45649207/

相关文章:

c# - Mono 下的 WCF over TLS

ssl - 是否可以为不安全的 docker 注册表提供 CA 签名证书,以便客户端自动信任它?

python - 关闭 Twisted conch SSH 连接的正确方法是什么?

python路径问题? "python2.5: can' t 打开文件 'dev_appserver.py' : [Errno 2] No such file or directory"

Python Pandas - Groupby 并制作列值标题

Python:对象作为另一个对象的参数

python - Pandas 一次交换多个索引级别

c# - Mono 上的 SslStream 未完全关闭

python - 使用 Internet Explorer 访问 Twisted Server 发送事件

python - Twiss SSH 多个同时命令