示例#1
0
 def decompress(self):
     """Handle decompressing data if necessary"""
     indata = self.data
     if self.compress == COMPRESS_LZ4:
         data = tools.Decompress(indata, 'lz4', with_header=False)
     elif self.compress == COMPRESS_LZMA:
         data = tools.Decompress(indata, 'lzma', with_header=False)
     else:
         data = indata
     self.memlen = len(data)
     self.data = data
     self.data_len = len(indata)
示例#2
0
 def ReadChildData(self, child, decomp=True):
     tout.Debug("ReadChildData for child '%s'" % child.GetPath())
     parent_data = self.ReadData(True)
     offset = child.offset - self._skip_at_start
     tout.Debug("Extract for child '%s': offset %#x, skip_at_start %#x, result %#x" %
                (child.GetPath(), child.offset, self._skip_at_start, offset))
     data = parent_data[offset:offset + child.size]
     if decomp:
         indata = data
         data = tools.Decompress(indata, child.compress)
         if child.uncomp_size:
             tout.Info("%s: Decompressing data size %#x with algo '%s' to data size %#x" %
                         (child.GetPath(), len(indata), child.compress,
                         len(data)))
     return data
示例#3
0
 def ReadChildData(self, child, decomp=True, alt_format=None):
     tout.Debug(f"ReadChildData for child '{child.GetPath()}'")
     parent_data = self.ReadData(True, alt_format)
     offset = child.offset - self._skip_at_start
     tout.Debug("Extract for child '%s': offset %#x, skip_at_start %#x, result %#x" %
                (child.GetPath(), child.offset, self._skip_at_start, offset))
     data = parent_data[offset:offset + child.size]
     if decomp:
         indata = data
         data = tools.Decompress(indata, child.compress)
         if child.uncomp_size:
             tout.Info("%s: Decompressing data size %#x with algo '%s' to data size %#x" %
                         (child.GetPath(), len(indata), child.compress,
                         len(data)))
     if alt_format:
         new_data = child.GetAltFormat(data, alt_format)
         if new_data is not None:
             data = new_data
     return data