#!/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("