Skip to content

Commit

Permalink
Fix issues bad lock state
Browse files Browse the repository at this point in the history
  • Loading branch information
bkerler committed Jul 12, 2023
1 parent 81694c4 commit 4723284
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 16 deletions.
6 changes: 3 additions & 3 deletions mtkclient/Library/legacy_ext.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,9 +188,9 @@ def seccfg(self, lockflag):
return False, "Unknown lockstate or no lockstate"
if not sc_org.parse(seccfg_data):
return False, "Device has is either already unlocked or algo is unknown. Aborting."
writedata = sc_org.create(lockflag=lockflag)
if writedata is None:
return False, "Error on creating seccfg, bad lock state"
ret, writedata = sc_org.create(lockflag=lockflag)
if ret is False:
return False, writedata
if self.legacy.writeflash(addr=partition.sector * self.mtk.daloader.daconfig.pagesize,
length=len(writedata),
filename=None, wdata=writedata, parttype="user", display=True):
Expand Down
18 changes: 8 additions & 10 deletions mtkclient/Library/seccfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,9 @@ def parse(self, data):

def create(self, lockflag: str = "unlock"):
if lockflag == "lock" and self.lock_state == 1:
self.error("Device is already locked")
return None
return False, "Device is already locked"
elif lockflag == "unlock" and self.lock_state == 3:
self.error("Device is already unlocked")
return None
return False, "Device is already unlocked"
if lockflag == "unlock":
self.lock_state = 3
self.critical_lock_state = 1
Expand All @@ -104,7 +102,7 @@ def create(self, lockflag: str = "unlock"):
data = seccfg_data + enc_hash
while len(data) % 0x200 != 0:
data += b"\x00"
return bytearray(data)
return True, bytearray(data)


class SECCFG_STATUS:
Expand Down Expand Up @@ -244,13 +242,13 @@ def create(self, lockflag: str = "unlock"):
seccfg_attr_new = SECCFG_ATTR.ATTR_DEFAULT

if lockflag == "lock" and self.seccfg_attr != SECCFG_ATTR.ATTR_UNLOCK:
return False, ("Can't find lock state, current (%#x)" % self.seccfg_attr)
return False, "Can't find lock state, current (%#x)" % self.seccfg_attr
elif lockflag == "unlock" and self.seccfg_attr != SECCFG_ATTR.ATTR_DEFAULT \
and self.seccfg_attr != SECCFG_ATTR.ATTR_MP_DEFAULT \
and self.seccfg_attr != SECCFG_ATTR.ATTR_CUSTOM \
and self.seccfg_attr != SECCFG_ATTR.ATTR_VERIFIED \
and self.seccfg_attr != SECCFG_ATTR.ATTR_LOCK:
return False, ("Can't find unlock state, current (%#x)" % self.seccfg_attr)
return False, "Can't find unlock state, current (%#x)" % self.seccfg_attr

data = bytearray()
wf = BytesIO(data)
Expand Down Expand Up @@ -280,14 +278,14 @@ def create(self, lockflag: str = "unlock"):
elif self.hwtype == "V3":
data = self.hwc.sej.sej_sec_cfg_hw_V3(data, True)
else:
return None
return False, "Unknown error"
wf.write(data)
wf.write(int.to_bytes(self.endflag, 4, 'little'))

data = bytearray(wf.getbuffer())
while len(data) % 0x200 != 0:
data += b"\x00"
return bytearray(data)
return True, bytearray(data)

if __name__ == "__main__":
with open("seccfg.bin","rb") as rf:
Expand All @@ -300,5 +298,5 @@ class mtk:
sej_base = None
v3=seccfgV3(hwc,mtk)
v3.parse(data)
newdata=v3.create("lock")
ret, newdata=v3.create("lock")
print(newdata.hex())
6 changes: 3 additions & 3 deletions mtkclient/Library/xflash_ext.py
Original file line number Diff line number Diff line change
Expand Up @@ -531,9 +531,9 @@ def seccfg(self, lockflag):
return False, "Unknown lockstate or no lockstate"
if not sc_org.parse(seccfg_data):
return False, "Device has is either already unlocked or algo is unknown. Aborting."
writedata = sc_org.create(lockflag=lockflag)
if writedata is None:
return False, "Error on creating seccfg, bad lock state"
ret, writedata = sc_org.create(lockflag=lockflag)
if ret is False:
return False, writedata
if self.xflash.writeflash(addr=partition.sector * self.mtk.daloader.daconfig.pagesize,
length=len(writedata),
filename=None, wdata=writedata, parttype="user", display=True):
Expand Down

0 comments on commit 4723284

Please sign in to comment.