我正在尝试将用python2.7编写的脚本转换为python3。第一个障碍是如何在两者之间处理字节字符串,我相信我已经解决过了。
我正在看的剧本就是这个:https://labs.mwrinfosecurity.com/tools/r...r-checker/
第一个障碍是如何在两者之间处理字节字符串,我相信我已经解决过了。
s.send(packet.encode('utf-8'))
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版本之间处理不同的字节字符串。
例如,需要进行以下更改:
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]}