From a617f59a992a1d56328f0c32e3e303db3fef975d Mon Sep 17 00:00:00 2001 From: WitherOrNot Date: Thu, 13 Feb 2025 18:37:59 -0500 Subject: Add files via upload --- tokens_rebuild_v2.py | 219 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 tokens_rebuild_v2.py (limited to 'tokens_rebuild_v2.py') diff --git a/tokens_rebuild_v2.py b/tokens_rebuild_v2.py new file mode 100644 index 0000000..a91697a --- /dev/null +++ b/tokens_rebuild_v2.py @@ -0,0 +1,219 @@ +#!/usr/bin/env python3 + +import struct +import sys +import os +import hashlib + +TOKENS_VERSION = 3 + +BLOCK_SIZE = 16384 +ENTRY_SIZE = 158 +MAX_ENTRIES = (BLOCK_SIZE - 8) // ENTRY_SIZE + +ENTRY_CONTENTS_HEADER = b'\x55' * 32 +ENTRY_CONTENTS_FOOTER = b'\xAA' * 32 + +def parse_entry(f, offset): + f.seek(offset) + unpacked = struct.unpack(' MAX_ENTRIES: + write_entries = MAX_ENTRIES + write_next_block_offset = True + + for _ in range(write_entries): + data, data_len, meta = build_entry(o_meta, o_data, entries.pop(0)) + + meta_block = meta + meta_block + o_meta -= ENTRY_SIZE + + data_block += data + o_data += data_len + + for _ in range(MAX_ENTRIES - write_entries): + meta = build_entry_meta(o_meta, False, 0, 0xFFFFFFFF, ('', '')) + + meta_block = meta + meta_block + o_meta -= ENTRY_SIZE + + if write_next_block_offset: + next_block = o_data + + finished_block = struct.pack("