diff --git a/gateway.py b/gateway.py index 7940b2f..c1a5d63 100644 --- a/gateway.py +++ b/gateway.py @@ -231,7 +231,7 @@ class Gateway(): stok = re.findall(r'"token":"(.*?)"', res.text)[0] except Exception: self.webpassword = "" - die("WEB password is not correct! (encryptmode = {})".foarmat(self.encryptmode)) + die("WEB password is not correct! (encryptmode = {})".format(self.encryptmode)) self.webpassword = web_pass self.stok = stok return stok diff --git a/install_fw.py b/install_fw.py index e95fdec..eb0cfcf 100644 --- a/install_fw.py +++ b/install_fw.py @@ -453,7 +453,16 @@ class XqFlash(): if image is None: data = self.kernel.data offset = 0 - if data[offset:offset+4] != FDT_MAGIC: + dtb_offset = 0 + magic = data[offset:offset+4] + if magic == b'\x17\x00\x00\x00': + dtb_offset, fir_size = find_dtb(data, offset, maxsize = 90*1024*1024) + if not dtb_offset: + die('FIT: Incorrect image header (0)') + data = data[dtb_offset:] + offset = 0 + magic = data[offset:offset+4] + if magic != FDT_MAGIC: die('FIT: Incorrect image (0)') fit_size = get_dtb_totalsize(data, offset) if fit_size <= 0: @@ -497,7 +506,11 @@ class XqFlash(): krn_size = len(krn1.get_property("data")) print(f'KRN: data = {krn_size} bytes') - krn_dt_data = fdt1.get_property('data').data + krn_dt_data = fdt1.get_property('data') + if hasattr(krn_dt_data, 'raw_value'): + krn_dt_data = krn_dt_data.raw_value + else: + krn_dt_data = krn_dt_data.data dt = fdt.parse_dtb(krn_dt_data) self.krn_dt = dt dt_tree = dt.info(props = True) diff --git a/xmir_base/fdt/items.py b/xmir_base/fdt/items.py index cc7ce8b..0164a70 100644 --- a/xmir_base/fdt/items.py +++ b/xmir_base/fdt/items.py @@ -43,6 +43,7 @@ def new_property(name: str, raw_value: bytes) -> object: obj = PropWords(name) # Extract words from raw value obj.data = [BIGENDIAN_WORD.unpack(raw_value[i:i + 4])[0] for i in range(0, len(raw_value), 4)] + obj.raw_value = raw_value return obj elif len(raw_value): diff --git a/xqmodel.py b/xqmodel.py index 9476cdf..6c46d92 100644 --- a/xqmodel.py +++ b/xqmodel.py @@ -36,7 +36,7 @@ mi(28, "IR1200G") mi(29, "RM1800") mi(30, "R2100D") mi(31, "RA67") -mi(32, "RA69") +mi(32, "RA69", "", "ax6") mi(33, "RA71") mi(34, "CR6006", "", "mi-router-cr6606") mi(35, "CR6008", "", "mi-router-cr6608")