我正在尝试在Python中建立一个安全的套接字连接,而且我很难使用它的SSL位.我找到了一些如何与SSL建立连接的代码示例,但它们都涉及密钥文件.我正在尝试连接的服务器不需要接收任何密钥或证书.我的问题是我如何用SSL包装python套接字连接.我知道一个事实,我想使用的密码是ADH-AES256-SHA,协议是TLSv1.这就是我一直在尝试的:
import socket
import ssl
# SET VARIABLES
packet, reply = "<packet>SOME_DATA</packet>", ""
HOST, PORT = 'XX.XX.XX.XX', 4434
# CREATE SOCKET
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)
# WRAP SOCKET ???
ssl.wrap_socket(sock, ssl_version="TLSv1", ciphers="ADH-AES256-SHA")
# CONNECT AND PRINT REPLY
sock.connect((HOST, PORT))
sock.send(packet)
print sock.recv(1280)
# CLOSE SOCKET CONNECTION
sock.close()
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我没有收到任何错误,但我得到一个空白的响应.当尝试在命令行中调试此代码时,通过在python终端中键入并逐行粘贴代码,我得到的是我在运行时假设的状态代码sock.send(packet).我得到的整数响应是26.如果有人知道这意味着什么,或者无论如何可以提供帮助,我们将不胜感激.提前致谢!
用例:我想通过 python 请求模块找出主机名支持多少密码。
我找不到提供密码名称来请求模块挂钩的方法。任何人都可以建议提供指定密码的方法。
import ssl
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.poolmanager import PoolManager
class Ssl3HttpAdapter(HTTPAdapter):
""""Transport adapter" that allows us to use SSLv3."""
def init_poolmanager(self, connections, maxsize, block=False):
self.poolmanager = PoolManager(
num_pools=connections, maxsize=maxsize,
block=block, ssl_version=ssl.PROTOCOL_SSLv3)
Run Code Online (Sandbox Code Playgroud)