脚本转换2.7到3(套接字)

问题描述 投票:0回答:1

我正在尝试将用python2.7编写的脚本转换为python3。第一个障碍是如何在两者之间处理字节字符串,我相信我已经解决过了。

我正在看的剧本就是这个:https://labs.mwrinfosecurity.com/tools/r...r-checker/

第一个障碍是如何在两者之间处理字节字符串,我相信我已经解决过了。

python3

s.send(packet.encode('utf-8'))

python2.7

s.send(packet)

下一个问题似乎是围绕套接字的实现。

for n in list(enc_protocols.keys()):
    packet = X224_CONNECTION_REQUEST % n

    print(binascii.hexlify(n.encode('utf-8')))

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host, port))
    #s.sendall(packet.encode('utf-8'))
    s.send(packet.encode('utf-8'))
    #s.send(packet)
    response = s.recv(1024)
    #response = s.recv(4096)

    if (response[3] == "\x0b"):
        enc_protocols["\x00"][1] = True
        break
    else:
        if (response[11] == "\x02"):
            enc_protocols[n][1] = True
        else:
            errors[response[15]] = True

    #print binascii.hexlify(response)

    s.close()

特别是这一行:

response = s.recv(1024)

它抛出错误:

“回溯(最近一次调用最后一次):文件”rdp_check_ciphers.py“,第81行,在响应中= s.recv(1024)ConnectionResetError:[Errno 104]连接由同行重置”

如果有人自己经历过这类问题,我只是在指出可能出现的问题。

我可以补充说,代码适用于我的Windows 7 VM的python2.7。我只是不明白为什么移动python3给我一个ConnectionResetError。

谢谢!

python-3.x sockets exception rdp recv
1个回答
0
投票

整个问题是在python版本之间处理不同的字节字符串。

例如,需要进行以下更改:

enc_protocols = {b'\x00' : ["Native RDP", False], b'\x01' : ["SSL", False], b'\x03' : ["CredSSP", False]}
enc_methods = {b'\x01' : ["40-bit RC4", False], b'\x02' : ["128-bit RC4", False], b'\x08' : ["56-bit RC4", False], b'\x10' : ["FIPS 140-1", False]}
enc_levels = {b'\x00' : ["None", False], b'\x01' : ["Low", False], b'\x02' : ["Client Compatible", False], b'\x03' : ["High", False], b'\x04' : ["FIPS 140-1", False]}
© www.soinside.com 2019 - 2024. All rights reserved.