Python的扭曲:创建的SSLv2方面

Python的扭曲:创建的SSLv2方面

问题描述:

我在做一个游戏私人服务器,游戏是很老,并使用不安全的SSLv2协议进行沟通,我可以解密数据包波谷这样的:Python的扭曲:创建的SSLv2方面

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上下文。 我tryed这一点:

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

但它给我这个错误:

ValueError: No such protocol 

如何获得的SSLv2在扭曲的工作?

看回溯:

File "python2.7/site-packages/twisted/internet/ssl.py", line 113, in cacheContext ctx = self._contextFactory(self.sslmethod) File "python2.7/site-packages/OpenSSL/SSL.py", line 600, in __init__ raise ValueError("No such protocol") ValueError: No such protocol

唯一的例外来自OpenSSL包,pyOpenSSL的一部分。 pyOpenSSL已经放弃了对SSLv2的支持。您可能能够找到仍然支持SSLv2的pyOpenSSL的旧版本(您可能还必须找到较旧版本的旧版pyOpenSSL兼容的Twisted)。

另一种选择是使用单独的工具(如stunnel)来终止SSLv2。

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

+0

那么,为什么我可以使用SSL,OpenSSL和套接字模块创建SSLv2套接字? –

+0

回溯清楚地表明你不能使用'OpenSSL'。 'ssl'和'socket'模块实际上只是一件事,它们与'OpenSSL'包是分开的。你可以用它们做什么以及你可以用'OpenSSL'做什么,根据它们的实现和接口保证,必然会有所不同。 –

+0

您的pyOpenSSL安装可能使用比'socket' /'ssl'使用的更新版本的OpenSSL。尽管如此,从这里很难说(也就是说,在你的问题中没有足够的信息来做出关于行为不同的明确陈述)。 –

SSLv2(通常甚至是SSLv3)现在通常不受OpenSSL支持(即未编译),因为它不安全。由于Twisted最终使用OpenSSL,所以当您尝试使用SSLv2时,您会得到No such protocol