Quite a lot has happened; I lose track
This commit is contained in:
62
assert_dd_blocks.py
Normal file
62
assert_dd_blocks.py
Normal file
@@ -0,0 +1,62 @@
|
||||
MBR_LBA_GAP = 0x3f
|
||||
BOOT_PARITION_SIZE = 0x300B85
|
||||
RECOVER_PARTITION_SIZE = 0x300BC4
|
||||
partitions = [
|
||||
0x102d83,
|
||||
0x403947,
|
||||
0x403947,
|
||||
0x48ed459,
|
||||
0x20014aa,
|
||||
]
|
||||
|
||||
|
||||
ext_offset = 0
|
||||
offsets = [0] * len(partitions)
|
||||
extended_base = MBR_LBA_GAP + BOOT_PARITION_SIZE + RECOVER_PARTITION_SIZE
|
||||
for i in range(len(partitions)):
|
||||
offsets[i] = ext_offset + extended_base
|
||||
ext_offset += partitions[i] + MBR_LBA_GAP
|
||||
|
||||
# (Start, end, data)
|
||||
accounted_for = [
|
||||
(0, 1, True), # MBR
|
||||
(1, MBR_LBA_GAP, False),
|
||||
(MBR_LBA_GAP, MBR_LBA_GAP + BOOT_PARITION_SIZE, True),
|
||||
(MBR_LBA_GAP + BOOT_PARITION_SIZE, MBR_LBA_GAP + BOOT_PARITION_SIZE + RECOVER_PARTITION_SIZE, True),
|
||||
]
|
||||
|
||||
for n, (i, j) in enumerate(zip(offsets, partitions)):
|
||||
accounted_for.append((
|
||||
i, i + 1, True
|
||||
))
|
||||
if n == 0:
|
||||
# SBR
|
||||
accounted_for.append((
|
||||
i + 1, i + 4, True
|
||||
))
|
||||
accounted_for.append((
|
||||
i + 4, i + MBR_LBA_GAP, False
|
||||
))
|
||||
else:
|
||||
accounted_for.append((
|
||||
i + 1, i + MBR_LBA_GAP, False
|
||||
))
|
||||
accounted_for.append((
|
||||
i + MBR_LBA_GAP, i + MBR_LBA_GAP + j, True
|
||||
))
|
||||
|
||||
assert accounted_for[-1][1] == 0x77fa1d7
|
||||
last = 0
|
||||
for i in accounted_for:
|
||||
assert i[0] == last
|
||||
last = i[1]
|
||||
|
||||
with open(r"G:\finale_dd\finale_dd.img", "rb") as finale_dd:
|
||||
for i in accounted_for:
|
||||
if i[2]:
|
||||
continue
|
||||
nbytes = i[1] - i[0]
|
||||
finale_dd.seek(i[0] * 512)
|
||||
print(f"Checking at {i[0] * 512:012x}-{i[1] * 512:012x}")
|
||||
if any(finale_dd.read(nbytes * 512)):
|
||||
print("!! FAIL")
|
||||
Reference in New Issue
Block a user