def prepareFlash1(self, kernel=None, initrd=None): nflasha1 = archive.readFat(self.readFirmwareFile('nflasha1')) if kernel: nflasha1.write('/boot/vmlinux.bin', kernel) if initrd: nflasha1.write('/boot/initrd.img', initrd) return archive.writeFat(nflasha1, 0x800000)
def prepareFlash3(self, kernel=None, rootfs=None): nflasha3 = self.firmware.getPartition(3) if kernel: nflasha3.write('/boot/vmlinux', kernel) if rootfs: nflasha3.write('/boot/rootfs.img', rootfs) return archive.writeFat(nflasha3, 0x400000)
def prepareFlash2(self, readSettings=False, updaterMode=False, playbackMode=False, patchTouchscreenEnable=False, ntscOnly=False): nflasha2 = archive.Archive() if readSettings: settings = self.firmware.getPartition(2) for fn in settings.files: if (fn.startswith('/backup/') or fn.startswith('/factory/')) and fn.endswith('.bin'): nflasha2.write(fn, settings.read(fn)) if updaterMode: nflasha2.write('/updater/mode', b'') if playbackMode: nflasha2.patch('/factory/Areg.bin', lambda d: d[:0x100] + b'\x84' + d[0x101:]) if patchTouchscreenEnable: nflasha2.patch('/factory/Asys.bin', lambda d: d[:0x2a5] + b'\x01' + d[0x2a6:]) if ntscOnly: nflasha2.patch('/factory/Hreg.bin', lambda d: d[:0x400] + b'\x02' + d[0x401:]) return archive.writeFat(nflasha2, 0x180000)
def prepareFlash1(self, kernel=None, initrd=None): nflasha1 = self.firmware.getPartition(1) if kernel: nflasha1.write('/boot/vmlinux', kernel) if initrd: nflasha1.write('/boot/initrd.img', initrd) return archive.writeFat(nflasha1, 0x200000)
def prepareFlash2(self, updaterMode=False, patchBackupWriteComp=False): nflasha2 = archive.Archive() nflasha2.write('/Backup.bin', self.readFirmwareFile('Backup.bin')) nflasha2.write('/DmmConfig.bin', self.readFirmwareFile('DmmConfig.bin')) nflasha2.write('/ulogio.bin', self.readFirmwareFile('ulogio.bin')) nflasha2.write('/updater/dat4', b'\x00\x01') if updaterMode: nflasha2.write('/updater/mode', b'') if patchBackupWriteComp: nflasha2.patch('/Backup.bin', lambda d: d[:8] + b'\x01\0\0\0' + d[12:]) return archive.writeFat(nflasha2, 0x400000)
def prepareFlash1(self, kernel=None, initrd=None, patchConsoleEnable=False): nflasha1 = archive.readFat(self.readFirmwareFile('nflasha1')) if kernel: nflasha1.write('/boot/vmlinux.bin', kernel) if initrd: nflasha1.write('/boot/initrd.img', initrd) if patchConsoleEnable: nflasha1.patch( '/boot/kemco.txt', lambda d: d.replace(b'amba2.console=0', b'amba2.console=1')) return archive.writeFat(nflasha1, 0x800000)
def prepareFlash2(self, updaterMode=False, patchBackupWriteComp=False): initrd = archive.readCramfs( archive.readFat( self.readFirmwareFile('nflasha1')).read('/boot/initrd.img')) nflasha2 = archive.Archive() nflasha2.write('/Backup.bin', initrd.read('/root/Backup.bin')) nflasha2.write('/DmmConfig.bin', initrd.read('/root/DmmConfig.bin')) nflasha2.write('/ulogio.bin', initrd.read('/root/ulogio.bin')) nflasha2.write('/updater/dat4', b'\x00\x01') if updaterMode: nflasha2.write('/updater/mode', b'') if patchBackupWriteComp: nflasha2.patch('/Backup.bin', lambda d: d[:8] + b'\x01\0\0\0' + d[12:]) return archive.writeFat(nflasha2, 0x400000)
def prepareFlash11(self): nflasha11 = archive.Archive() return archive.writeMbr([archive.writeFat(nflasha11, 0x7ffe00)])
def prepareFlash6(self): nflasha6 = self.firmware.getPartition(6) return archive.writeFat(nflasha6, 0x1000000)
def prepareFlash5(self): nflasha5 = self.firmware.getPartition(5) return archive.writeFat(nflasha5, 0x380000)
def prepareFlash2(self, updaterMode=False): nflasha2 = archive.Archive() if updaterMode: nflasha2.write('/updater/mode', b'') return archive.writeFat(nflasha2, 0x400000)