Не получается распаковать сжатый пакет minecraft

Рейтинг: 0Ответов: 0Опубликовано: 27.03.2023

Я пытаюсь распаковывать пакеты, которые сервер передает клиенту. Согласно документации они сжимаются при помощи zlib. Поэтому в своем коде на питоне, я использую функцию zlib.decompress, но получаю вот такую ошибку:

zlib.error: Error -3 while decompressing data: incorrect header check

Вот код, который отвечает за парсинг пакетов:

compression =  False

def parse_packet(data):
    global compression
    cursor = 0
    print("Compression: ", compression)
    print("packet_len:", VarInt.decode(data))
    cursor += getNumLen(data)
    if compression:
        decompressed_packet_len = VarInt.decode(data[cursor:])
        print("decompressed_packet_len:", decompressed_packet_len)
        cursor += getNumLen(data[cursor:])
        if decompressed_packet_len != 0:
            data = zlib.decompress(data[cursor:])
        print("packet_id: ", hex(VarInt.decode(data[cursor:])))
        cursor += getNumLen(data[cursor:])
    else:
        print("packet_id: ", hex(VarInt.decode(data[cursor:])))
        if VarInt.decode(data[cursor:]) == 3:
            compression = True
        cursor += getNumLen(data[cursor:])
    print("\n")

Ответы

Ответов пока нет.