diff --git a/xqimage.py b/xqimage.py index 8bfbe11..108a077 100644 --- a/xqimage.py +++ b/xqimage.py @@ -73,11 +73,11 @@ xqModelList = [ "", # 40 "", "", - "RA80", - "RA81", - "RA82", + "RA80", # AX3000 + "RA81", # Redmi AX3000 + "RA82", # AX3000 "RA83", - "RA74", + "RA74", # AX5400 "", "YY01", "RB01", # 50 @@ -102,6 +102,7 @@ def buf_align(buf, align, padfill = b'\x00'): class XQImage(): + testmode = False model = None type = 0 version = None @@ -109,7 +110,8 @@ class XQImage(): padfill = b'\xFF' files = [] # list of files - def __init__(self, model, type = 0): + def __init__(self, model, type = 0, testmode = False): + self.testmode = testmode self.model = model.upper() self.type = type self.header = XQImgHdr() @@ -187,6 +189,9 @@ class XQImage(): if self.model == "R3G": poffset = 0x1058 payload = i2b(0x416078) + i2b(0) + i2b(0) + i2b(0x402810) # 2.25.124, 2.28.44 + if self.model == "R3P": + poffset = 0x1058 + payload = i2b(0x416078) + i2b(0) + i2b(0) + i2b(0x402810) # 2.16.29 if self.model == "R3600": # AX3600 poffset = 0x1070 payload = i2b(0x415290) + i2b(0) + i2b(0x402634) + i2b(0) # 1.0.17 ... 1.1.19 @@ -205,15 +210,19 @@ class XQImage(): sign = i2b(poffset) + (b'\x00' * 12) # add fake sign size = poffset - len(payload) - for i in range(0, size, 4): - sign += (0xEAA00000 + i).to_bytes(4, byteorder='little') + if self.testmode: + for i in range(0, size, 4): + sign += (0xEAA00000 + i).to_bytes(4, byteorder='little') + else: + sign += b'\xFF' * size # add payload sign += payload return sign def create_xqimage(model, name, mtd, size, data, outfilename = None): - img = XQImage(model) + testmode = True if os.getenv('XQTEST', default = '0') == '1' else False + img = XQImage(model, testmode = testmode) if data is None: data = b'' if len(data) > size: