Remove NR >= 2 check
It seems that the NR value doesn't really matter, as it is equal to 0 in some images. The presence of a particular region is tied to the condition region_end > region_start.
This commit is contained in:
parent
0ac4b4bfd4
commit
ba885fa9fc
1 changed files with 13 additions and 18 deletions
|
@ -329,29 +329,24 @@ if __name__ == "__main__":
|
|||
|
||||
f.seek(0x14)
|
||||
flmap0, flmap1 = unpack("<II", f.read(8))
|
||||
nr = flmap0 >> 24 & 0x7
|
||||
frba = flmap0 >> 12 & 0xff0
|
||||
fmba = (flmap1 & 0xff) << 4
|
||||
if nr >= 2:
|
||||
f.seek(frba)
|
||||
flreg0, flreg1, flreg2 = unpack("<III", f.read(12))
|
||||
fd_start = (flreg0 & 0x1fff) << 12
|
||||
fd_end = flreg0 >> 4 & 0x1fff000 | 0xfff + 1
|
||||
me_start = (flreg2 & 0x1fff) << 12
|
||||
me_end = flreg2 >> 4 & 0x1fff000 | 0xfff + 1
|
||||
f.seek(frba)
|
||||
flreg0, flreg1, flreg2 = unpack("<III", f.read(12))
|
||||
fd_start = (flreg0 & 0x1fff) << 12
|
||||
fd_end = flreg0 >> 4 & 0x1fff000 | 0xfff + 1
|
||||
me_start = (flreg2 & 0x1fff) << 12
|
||||
me_end = flreg2 >> 4 & 0x1fff000 | 0xfff + 1
|
||||
|
||||
if me_start >= me_end:
|
||||
sys.exit("The ME/TXE region in this image has been disabled")
|
||||
if me_start >= me_end:
|
||||
sys.exit("The ME/TXE region in this image has been disabled")
|
||||
|
||||
f.seek(me_start + 0x10)
|
||||
if f.read(4) != b"$FPT":
|
||||
sys.exit("The ME/TXE region is corrupted or missing")
|
||||
f.seek(me_start + 0x10)
|
||||
if f.read(4) != b"$FPT":
|
||||
sys.exit("The ME/TXE region is corrupted or missing")
|
||||
|
||||
print("The ME/TXE region goes from {:#x} to {:#x}"
|
||||
.format(me_start, me_end))
|
||||
else:
|
||||
sys.exit("This image does not contains a ME/TXE firmware NR = {})"
|
||||
.format(nr))
|
||||
print("The ME/TXE region goes from {:#x} to {:#x}"
|
||||
.format(me_start, me_end))
|
||||
else:
|
||||
sys.exit("Unknown image")
|
||||
|
||||
|
|
Loading…
Reference in a new issue