Как декодировать байты, полученные от функции socket.recv? - PullRequest
0 голосов
/ 13 июля 2020

Я тестирую следующий код Python, чтобы получить баннер MySQL, и пытаюсь декодировать вывод байта, чтобы получить строку версии.

Код

import socket
from pprint import pprint

def grab_banner(hostname, port):
    try:
        s = socket.socket()
        s.connect((hostname, port))
        data = s.recv(64)
        s.close()
        print(str(data))
    except Exception as e:
        print(e)

grab_banner(localhost, 3306)

Я пробовал использовать data.decode('utf-8'), но это дает мне ошибку:

'utf-8' codec can't decode byte 0xda in position 35: invalid continuation byte

Текущий выход

b'a\x00\x00\x00\n5.5.5-10.3.22-MariaDB-cll-lve\x00\xbb\xebx\x00(4kBG|\\7\x00\xfe\xf7\xe0\x02\x00\xbf\x81\x15\x00\x00\x00\x00\x00\x00\x07\x00'

Желаемый выход

5.5.5-10.3.22-MariaDB-cll-lve
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...