LCE-Emerald-Launcher/decode_hex.py
2026-05-25 13:23:01 +03:00

29 lines
755 B
Python

import zlib
def decode_varint(data, offset=0):
val = 0
shift = 0
while True:
b = data[offset]
offset += 1
val |= (b & 0x7F) << shift
shift += 7
if (b & 0x80) == 0:
break
return val, offset
hex_str = "81 9b 01 78 9c ed 5b cd 92 db 44 10 9e 14 f9 71 9c 4a 41 48"
data = bytes.fromhex(hex_str.replace(" ", ""))
uncompressed_len, offset = decode_varint(data)
compressed_data = data[offset:]
d = zlib.decompressobj()
dec = d.decompress(compressed_data)
if dec:
pkt_id, dec_offset = decode_varint(dec)
print(f"Packet ID: {pkt_id} (0x{pkt_id:02x})")
print(f"Next bytes: {dec[dec_offset:dec_offset+10].hex()}")
else:
print("Could not decompress anything (need more bytes).")