def unpackCommand(file, outDir): """Extracts the input file to the specified directory""" mkdirs(outDir) mtime = os.stat(file.name).st_mtime datConf = None fdatConf = None if pe.isExe(file): with open(outDir + '/firmware.dat', 'w+b') as datFile, open(outDir + '/firmware.fdat', 'w+b') as fdatFile: mtime = unpackInstaller(file, datFile) datConf = unpackDat(datFile, fdatFile) fdatConf = unpackFdat(fdatFile, outDir, mtime) elif dat.isDat(file): with open(outDir + '/firmware.fdat', 'w+b') as fdatFile: datConf = unpackDat(file, fdatFile) fdatConf = unpackFdat(fdatFile, outDir, mtime) elif fdat.isFdat(file): fdatConf = unpackFdat(file, outDir, mtime) elif msfirm.isMsFirm(file): datConf = {'crypterName': 'msfirm'} fdatConf = unpackMsFirm(file, outDir) elif flash.isPartitionTable(file): unpackDump(file, outDir, mtime) elif bootloader.isBootloader(file): unpackBootloader(file, outDir, mtime) elif wbi.isWbi(file): unpackWbi(file, outDir, mtime) else: raise Exception('Unknown file type!') with open(outDir + '/config.yaml', 'w') as yamlFile: writeYaml({'dat': datConf, 'fdat': fdatConf}, yamlFile)
def unpackCommand(file, outDir): """Extracts the input file to the specified directory""" mkdirs(outDir) mtime = os.stat(file.name).st_mtime datConf = None fdatConf = None if pe.isExe(file): with open(outDir + '/firmware.dat', 'w+b') as datFile, open(outDir + '/firmware.fdat', 'w+b') as fdatFile: mtime = unpackInstaller(file, datFile) datConf = unpackDat(datFile, fdatFile) fdatConf = unpackFdat(fdatFile, outDir, mtime) elif dat.isDat(file): with open(outDir + '/firmware.fdat', 'w+b') as fdatFile: datConf = unpackDat(file, fdatFile) fdatConf = unpackFdat(fdatFile, outDir, mtime) elif fdat.isFdat(file): fdatConf = unpackFdat(file, outDir, mtime) elif flash.isPartitionTable(file): unpackDump(file, outDir, mtime) else: raise Exception('Unknown file type!') with open(outDir + '/config.yaml', 'w') as yamlFile: writeYaml({'dat': datConf, 'fdat': fdatConf}, yamlFile)