Не получается распаковать сжатый пакет minecraft
Я пытаюсь распаковывать пакеты, которые сервер передает клиенту. Согласно документации они сжимаются при помощи 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")
Источник: Stack Overflow на русском