Initial remote commit
This commit is contained in:
51
test/kk.sh
Normal file
51
test/kk.sh
Normal file
@@ -0,0 +1,51 @@
|
||||
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]}')
|
||||
"
|
||||
Reference in New Issue
Block a user