小编Raf*_*ffi的帖子

在Python中打开SSL套接字连接

我正在尝试在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 sockets ssl

32
推荐指数
3
解决办法
7万
查看次数

Python套接字-将数据包发送到服务器并等待响应

我目前正在实现以下代码,以将数据包发送到Parallels PVA XML API。我正在尝试将两个 XML数据包发送到服务器。第一个是指定用户凭据的登录数据包,第二个是包含有关API请求信息的数据包。这些数据包应该以空字节分隔\0。通常,服务器会发回多个数据包,第一个数据包是登录成功的说明,第二个数据包包含有关API请求的信息。

我遇到的问题是似乎第二个数据包没有被发送。我得到的唯一响应是第一个说明登录成功的数据包,但我没有得到包含有关API请求信息的数据包。我认为这可能是因为我要发送一个空字节,所以我尝试在base64中对所有内容进行编码,但最终得到了相同的结果。

因此,在我看来,要么连接被关闭,服务器没有足够的时间发送第二个数据包,要么由于空字节而完全忽略了该数据包。

任何帮助或评论将不胜感激。先感谢您!

import socket
import base64

def client(string):
    HOST, PORT = '[IP_ADDRESS]', 4433
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(10)
    sock.connect((HOST, PORT))
    sock.send(base64.b64encode(string))
    reply = sock.recv(131072)
    sock.close()

    return reply

packet = "<packet></packet>\0<packet></packet>"
print client(packet)
Run Code Online (Sandbox Code Playgroud)

请不要故意在数据包中没有信息,因为它包含敏感信息,并且ip地址被“ [IP_ADDRESS]”故意取代了

python python-sockets

1
推荐指数
1
解决办法
2万
查看次数

标签 统计

python ×2

python-sockets ×1

sockets ×1

ssl ×1