コード例 #1
0
 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)
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
 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)
コード例 #5
0
 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)
コード例 #6
0
 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)
コード例 #7
0
 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)
コード例 #8
0
 def prepareFlash11(self):
     nflasha11 = archive.Archive()
     return archive.writeMbr([archive.writeFat(nflasha11, 0x7ffe00)])
コード例 #9
0
 def prepareFlash6(self):
     nflasha6 = self.firmware.getPartition(6)
     return archive.writeFat(nflasha6, 0x1000000)
コード例 #10
0
 def prepareFlash5(self):
     nflasha5 = self.firmware.getPartition(5)
     return archive.writeFat(nflasha5, 0x380000)
コード例 #11
0
 def prepareFlash2(self, updaterMode=False):
     nflasha2 = archive.Archive()
     if updaterMode:
         nflasha2.write('/updater/mode', b'')
     return archive.writeFat(nflasha2, 0x400000)