python3 -c " CHUNK = 128*512 # 64KB LV_START = 5120000*512 with open('/dev/sda','rb') as f: # Read full first metadata chunk phys = LV_START + 4 * CHUNK f.seek(phys) data = f.read(CHUNK) # What's in it? import struct # Check for recognizable patterns print(f'First 64 bytes:') for i in range(0, 64, 16): print(f' {data[i:i+16].hex()} {data[i:i+16].decode(\"latin1\",errors=\"replace\")}') # Check if it repeats chunk_size = len(data) period = None for p in [8, 16, 32, 64, 128, 256, 512]: if data[:p] * (chunk_size // p) == data[:chunk_size - chunk_size%p]: period = p print(f'Data repeats every {p} bytes') break # Check if first 8 bytes appear elsewhere in the chunk pattern = data[:8] count = 0 pos = 0 while True: idx = data.find(pattern, pos) if idx < 0: break count += 1 pos = idx + 1 print(f'First 8 bytes appear {count} times in chunk') # Check spacing between repetitions positions = [] pos = 0 while True: idx = data.find(pattern, pos) if idx < 0: break positions.append(idx) pos = idx + 1 if len(positions) > 1: gaps = [positions[i+1]-positions[i] for i in range(len(positions)-1)] print(f'Positions: {positions[:10]}') print(f'Gaps: {gaps[:10]}') "