예제 #1
0
        def path_table(self):
            if hasattr(self, '_m_path_table'):
                return self._m_path_table

            _pos = self._io.pos()
            self._io.seek((self.lba_path_table_le * self._root.sector_size))
            self._raw__m_path_table = self._io.read_bytes(
                self.path_table_size.le)
            _io__raw__m_path_table = KaitaiStream(
                BytesIO(self._raw__m_path_table))
            self._m_path_table = Iso9660.PathTableLe(_io__raw__m_path_table,
                                                     self, self._root)
            self._io.seek(_pos)
            return getattr(self, '_m_path_table', None)
예제 #2
0
 def _read(self):
     self._debug['extra_zero']['start'] = self._io.pos()
     self.extra_zero = self._io.read_bytes(1)
     self._debug['extra_zero']['end'] = self._io.pos()
     if not self.extra_zero == b"\x00":
         raise kaitaistruct.ValidationNotEqualError(
             b"\x00", self.extra_zero, self._io,
             u"/types/exif_in_jpeg/seq/0")
     self._debug['data']['start'] = self._io.pos()
     self._raw_data = self._io.read_bytes_full()
     _io__raw_data = KaitaiStream(BytesIO(self._raw_data))
     self.data = exif.Exif(_io__raw_data)
     self.data._read()
     self._debug['data']['end'] = self._io.pos()
예제 #3
0
        def _read(self):
            self.left = self._io.read_u2le()
            self.top = self._io.read_u2le()
            self.width = self._io.read_u2le()
            self.height = self._io.read_u2le()
            self.flags = self._io.read_u1()
            if self.has_color_table:
                self._raw_local_color_table = self._io.read_bytes(
                    (self.color_table_size * 3))
                io = KaitaiStream(BytesIO(self._raw_local_color_table))
                self.local_color_table = self._root.ColorTable(
                    io, self, self._root)

            self.image_data = self._root.ImageData(self._io, self, self._root)
예제 #4
0
        def _read(self):
            self._debug['len_header']['start'] = self._io.pos()
            self.len_header = self._io.read_u4le()
            self._debug['len_header']['end'] = self._io.pos()
            self._debug['header']['start'] = self._io.pos()
            self._raw_header = self._io.read_bytes((self.len_header - 4))
            _io__raw_header = KaitaiStream(BytesIO(self._raw_header))
            self.header = Bmp.BitmapHeader(self.len_header, _io__raw_header, self, self._root)
            self.header._read()
            self._debug['header']['end'] = self._io.pos()
            if self.is_color_mask_here:
                self._debug['color_mask']['start'] = self._io.pos()
                self.color_mask = Bmp.ColorMask(self.header.bitmap_info_ext.compression == Bmp.Compressions.alpha_bitfields, self._io, self, self._root)
                self.color_mask._read()
                self._debug['color_mask']['end'] = self._io.pos()

            if not (self._io.is_eof()):
                self._debug['color_table']['start'] = self._io.pos()
                self._raw_color_table = self._io.read_bytes_full()
                _io__raw_color_table = KaitaiStream(BytesIO(self._raw_color_table))
                self.color_table = Bmp.ColorTable(not (self.header.is_core_header), (self.header.bitmap_info_ext.num_colors_used if self.header.extends_bitmap_info else 0), _io__raw_color_table, self, self._root)
                self.color_table._read()
                self._debug['color_table']['end'] = self._io.pos()
예제 #5
0
파일: iso9660.py 프로젝트: zskdan/kaitai_fs
        def extent_as_dir(self):
            if hasattr(self, '_m_extent_as_dir'):
                return self._m_extent_as_dir if hasattr(self, '_m_extent_as_dir') else None

            if (self.file_flags & 2) != 0:
                io = self._root._io
                _pos = io.pos()
                io.seek((self.lba_extent.le * self._root.sector_size))
                self._raw__m_extent_as_dir = io.read_bytes(self.size_extent.le)
                io = KaitaiStream(BytesIO(self._raw__m_extent_as_dir))
                self._m_extent_as_dir = self._root.DirEntries(io, self, self._root)
                io.seek(_pos)

            return self._m_extent_as_dir if hasattr(self, '_m_extent_as_dir') else None
예제 #6
0
 def _read(self):
     self._raw_records = []
     self.records = []
     i = 0
     while True:
         _buf = self._io.read_bytes(self._root.recordsize)
         self._raw_records.append(_buf)
         _io__raw_records = KaitaiStream(BytesIO(self._raw_records[-1]))
         _ = Model3Hrl.Record(_io__raw_records, self, self._root)
         self.records.append(_)
         if i == (self._root.header.blocksize // self._root.recordsize -
                  1):
             break
         i += 1
예제 #7
0
        def _read(self):
            self.xp3fileindex_compressed_flag = self._io.read_u1()
            if self.xp3fileindex_compressed_flag == 1:
                self.compressed_size = self._io.read_u8le()

            self.uncompressed_size = self._io.read_u8le()
            if self.xp3fileindex_compressed_flag == 1:
                self._raw__raw_file_entries_compressed = self._io.read_bytes(
                    self.compressed_size)
                self._raw_file_entries_compressed = zlib.decompress(
                    self._raw__raw_file_entries_compressed)
                _io__raw_file_entries_compressed = KaitaiStream(
                    BytesIO(self._raw_file_entries_compressed))
                self.file_entries_compressed = self._root.FileEntries(
                    _io__raw_file_entries_compressed, self, self._root)

            if self.xp3fileindex_compressed_flag == 0:
                self._raw_file_entries_uncompressed = self._io.read_bytes(
                    self.uncompressed_size)
                _io__raw_file_entries_uncompressed = KaitaiStream(
                    BytesIO(self._raw_file_entries_uncompressed))
                self.file_entries_uncompressed = self._root.FileEntries(
                    _io__raw_file_entries_uncompressed, self, self._root)
예제 #8
0
    def _read(self):
        self._raw_header = self._io.read_bytes(16)
        _io__raw_header = KaitaiStream(BytesIO(self._raw_header))
        self.header = Ines.Header(_io__raw_header, self, self._root)
        if self.header.f6.trainer:
            self.trainer = self._io.read_bytes(512)

        self.prg_rom = self._io.read_bytes((self.header.len_prg_rom * 16384))
        self.chr_rom = self._io.read_bytes((self.header.len_chr_rom * 8192))
        if self.header.f7.playchoice10:
            self.playchoice10 = Ines.Playchoice10(self._io, self, self._root)

        if not (self._io.is_eof()):
            self.title = (self._io.read_bytes_full()).decode(u"ASCII")
예제 #9
0
 def package_capsule(self):
     if hasattr(self, "_m_package_capsule"):
         if hasattr(self, "_m_package_capsule"):
             return self._m_package_capsule
         return
     _pos = self._io.pos()
     self._io.seek(self.package_footer.capsule_offset + 8)
     self._raw__m_package_capsule = self._io.read_bytes(
         self.package_capsule_len)
     io = KaitaiStream(BytesIO(self._raw__m_package_capsule))
     self._m_package_capsule = DlstCapsule(io)
     self._io.seek(_pos)
     if hasattr(self, "_m_package_capsule"):
         return self._m_package_capsule
예제 #10
0
        def path_table(self):
            if hasattr(self, '_m_path_table'):
                return self._m_path_table if hasattr(self, '_m_path_table') else None

            _pos = self._io.pos()
            self._io.seek((self.lba_path_table_le * self._root.sector_size))
            self._debug['_m_path_table']['start'] = self._io.pos()
            self._raw__m_path_table = self._io.read_bytes(self.path_table_size.le)
            _io__raw__m_path_table = KaitaiStream(BytesIO(self._raw__m_path_table))
            self._m_path_table = Iso9660.PathTableLe(_io__raw__m_path_table, self, self._root)
            self._m_path_table._read()
            self._debug['_m_path_table']['end'] = self._io.pos()
            self._io.seek(_pos)
            return self._m_path_table if hasattr(self, '_m_path_table') else None
 def _read(self):
     self.icflag = self._root.Icflag(self._io, self, self._root)
     _on = self.icflag.type
     if _on == self._root.RecordType.data_initial:
         self._raw_content = self._io.read_bytes((1536 - 4))
         io = KaitaiStream(BytesIO(self._raw_content))
         self.content = self._root.DataInitial(io, self, self._root)
     elif _on == self._root.RecordType.data_continuation:
         self._raw_content = self._io.read_bytes((1536 - 4))
         io = KaitaiStream(BytesIO(self._raw_content))
         self.content = self._root.DataContinuation(
             io, self, self._root)
     elif _on == self._root.RecordType.text_continuation:
         self._raw_content = self._io.read_bytes((1536 - 4))
         io = KaitaiStream(BytesIO(self._raw_content))
         self.content = self._root.TextContinuation(
             io, self, self._root)
     elif _on == self._root.RecordType.text_initial:
         self._raw_content = self._io.read_bytes((1536 - 4))
         io = KaitaiStream(BytesIO(self._raw_content))
         self.content = self._root.TextInitial(io, self, self._root)
     else:
         self.content = self._io.read_bytes((1536 - 4))
예제 #12
0
 def _read(self):
     self._debug['image_header']['start'] = self._io.pos()
     self._raw_image_header = self._io.read_bytes(32)
     _io__raw_image_header = KaitaiStream(BytesIO(self._raw_image_header))
     self.image_header = self._root.ImageHeader(_io__raw_image_header, self,
                                                self._root)
     self.image_header._read()
     self._debug['image_header']['end'] = self._io.pos()
     self._debug['ilm']['start'] = self._io.pos()
     self.ilm = self._io.read_bytes(self.image_header.ilm_len)
     self._debug['ilm']['end'] = self._io.pos()
     self._debug['dlm']['start'] = self._io.pos()
     self.dlm = self._io.read_bytes(self.image_header.dlm_len)
     self._debug['dlm']['end'] = self._io.pos()
예제 #13
0
 def _read(self):
     self.padding = self._io.read_bytes(((8 - self._io.pos()) % 8))
     self.object_type = self._root.JournalObject.ObjectTypes(
         self._io.read_u1())
     self.flags = self._io.read_u1()
     self.reserved = self._io.read_bytes(6)
     self.len_object = self._io.read_u8le()
     _on = self.object_type
     if _on == self._root.JournalObject.ObjectTypes.data:
         self._raw_payload = self._io.read_bytes((self.len_object - 16))
         io = KaitaiStream(BytesIO(self._raw_payload))
         self.payload = self._root.DataObject(io, self, self._root)
     else:
         self.payload = self._io.read_bytes((self.len_object - 16))
예제 #14
0
 def _read(self):
     self.len_filename = self._io.read_u4le()
     self.filename = self._io.read_bytes(self.len_filename)
     self.len_data_uncompressed = self._io.read_u4le()
     self.timestamp = self._io.read_u4le()
     self.len_data_compressed = self._io.read_u4le()
     self.crc32 = self._io.read_u4le()
     self.flags = PharWithoutStub.FileFlags(self._io, self, self._root)
     self.len_metadata = self._io.read_u4le()
     if self.len_metadata != 0:
         self._raw_metadata = self._io.read_bytes(self.len_metadata)
         _io__raw_metadata = KaitaiStream(BytesIO(self._raw_metadata))
         self.metadata = PharWithoutStub.SerializedValue(
             _io__raw_metadata, self, self._root)
예제 #15
0
 def _read(self):
     self.version_made_by = self._io.read_u2le()
     self.version_needed_to_extract = self._io.read_u2le()
     self.flags = self._io.read_u2le()
     self.compression_method = KaitaiStream.resolve_enum(Zip.Compression, self._io.read_u2le())
     self._raw_file_mod_time = self._io.read_bytes(4)
     _io__raw_file_mod_time = KaitaiStream(BytesIO(self._raw_file_mod_time))
     self.file_mod_time = dos_datetime.DosDatetime(_io__raw_file_mod_time)
     self.crc32 = self._io.read_u4le()
     self.len_body_compressed = self._io.read_u4le()
     self.len_body_uncompressed = self._io.read_u4le()
     self.len_file_name = self._io.read_u2le()
     self.len_extra = self._io.read_u2le()
     self.len_comment = self._io.read_u2le()
     self.disk_number_start = self._io.read_u2le()
     self.int_file_attr = self._io.read_u2le()
     self.ext_file_attr = self._io.read_u4le()
     self.ofs_local_header = self._io.read_s4le()
     self.file_name = (self._io.read_bytes(self.len_file_name)).decode(u"UTF-8")
     self._raw_extra = self._io.read_bytes(self.len_extra)
     _io__raw_extra = KaitaiStream(BytesIO(self._raw_extra))
     self.extra = Zip.Extras(_io__raw_extra, self, self._root)
     self.comment = (self._io.read_bytes(self.len_comment)).decode(u"UTF-8")
예제 #16
0
 def _read(self):
     self.metadata = self._io.read_bytes(
         self._root.header.header_main.block_metadata_size)
     self._raw_data = []
     self.data = []
     i = 0
     while not self._io.is_eof():
         self._raw_data.append(
             self._io.read_bytes(
                 self._root.header.header_main.block_data_size))
         _io__raw_data = KaitaiStream(BytesIO(self._raw_data[-1]))
         self.data.append(
             Vdi.Disk.Block.Sector(_io__raw_data, self, self._root))
         i += 1
예제 #17
0
 def _read(self):
     self.unused1 = self._io.read_bytes(1)
     if not self.unused1 == b"\x00":
         raise kaitaistruct.ValidationNotEqualError(
             b"\x00", self.unused1, self._io,
             u"/types/vol_desc_primary/seq/0")
     self.system_id = (self._io.read_bytes(32)).decode(u"UTF-8")
     self.volume_id = (self._io.read_bytes(32)).decode(u"UTF-8")
     self.unused2 = self._io.read_bytes(8)
     if not self.unused2 == b"\x00\x00\x00\x00\x00\x00\x00\x00":
         raise kaitaistruct.ValidationNotEqualError(
             b"\x00\x00\x00\x00\x00\x00\x00\x00", self.unused2,
             self._io, u"/types/vol_desc_primary/seq/3")
     self.vol_space_size = Iso9660.U4bi(self._io, self, self._root)
     self.unused3 = self._io.read_bytes(32)
     if not self.unused3 == b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00":
         raise kaitaistruct.ValidationNotEqualError(
             b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
             self.unused3, self._io, u"/types/vol_desc_primary/seq/5")
     self.vol_set_size = Iso9660.U2bi(self._io, self, self._root)
     self.vol_seq_num = Iso9660.U2bi(self._io, self, self._root)
     self.logical_block_size = Iso9660.U2bi(self._io, self, self._root)
     self.path_table_size = Iso9660.U4bi(self._io, self, self._root)
     self.lba_path_table_le = self._io.read_u4le()
     self.lba_opt_path_table_le = self._io.read_u4le()
     self.lba_path_table_be = self._io.read_u4be()
     self.lba_opt_path_table_be = self._io.read_u4be()
     self._raw_root_dir = self._io.read_bytes(34)
     _io__raw_root_dir = KaitaiStream(BytesIO(self._raw_root_dir))
     self.root_dir = Iso9660.DirEntry(_io__raw_root_dir, self,
                                      self._root)
     self.vol_set_id = (self._io.read_bytes(128)).decode(u"UTF-8")
     self.publisher_id = (self._io.read_bytes(128)).decode(u"UTF-8")
     self.data_preparer_id = (self._io.read_bytes(128)).decode(u"UTF-8")
     self.application_id = (self._io.read_bytes(128)).decode(u"UTF-8")
     self.copyright_file_id = (self._io.read_bytes(38)).decode(u"UTF-8")
     self.abstract_file_id = (self._io.read_bytes(36)).decode(u"UTF-8")
     self.bibliographic_file_id = (
         self._io.read_bytes(37)).decode(u"UTF-8")
     self.vol_create_datetime = Iso9660.DecDatetime(
         self._io, self, self._root)
     self.vol_mod_datetime = Iso9660.DecDatetime(
         self._io, self, self._root)
     self.vol_expire_datetime = Iso9660.DecDatetime(
         self._io, self, self._root)
     self.vol_effective_datetime = Iso9660.DecDatetime(
         self._io, self, self._root)
     self.file_structure_version = self._io.read_u1()
     self.unused4 = self._io.read_u1()
     self.application_area = self._io.read_bytes(512)
예제 #18
0
 def __init__(self, _io, _parent=None, _root=None):
     self._io = _io
     self._parent = _parent
     self._root = _root if _root else self
     self.const1 = self._io.ensure_fixed_contents(
         struct.pack('11b', 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 1))
     self.hash1 = self._root.Hash(self._io, self, self._root)
     self.const2 = self._io.ensure_fixed_contents(
         struct.pack('6b', 29, 0, 4, 0, -95, 0))
     self.data2_hash = self._root.Hash(self._io, self, self._root)
     self._raw_data2 = self._io.read_bytes(161)
     io = KaitaiStream(BytesIO(self._raw_data2))
     self.data2 = self._root.Data2(io, self, self._root)
     self.const3 = self._io.ensure_fixed_contents(
         struct.pack('4b', 3, 0, -72, 0))
     self.data3_hash = self._root.Hash(self._io, self, self._root)
     self._raw_data3 = self._io.read_bytes(184)
     io = KaitaiStream(BytesIO(self._raw_data3))
     self.data3 = self._root.Data3(io, self, self._root)
     self.const4 = self._io.ensure_fixed_contents(
         struct.pack('4b', 5, 0, -92, 1))
     self.data4_hash = self._root.Hash(self._io, self, self._root)
     self.data4 = self._io.read_bytes(420)
     self.const5 = self._io.ensure_fixed_contents(
         struct.pack('4b', 1, 0, 0, 1))
     self.data5_hash = self._root.Hash(self._io, self, self._root)
     self.data5 = self._io.read_bytes(256)
     self.const6 = self._io.ensure_fixed_contents(
         struct.pack('4b', 2, 0, 0, 1))
     self.data6_hash = self._root.Hash(self._io, self, self._root)
     self.data6 = self._io.read_bytes(256)
     self.const7 = self._io.ensure_fixed_contents(
         struct.pack('4b', 6, 0, -112, 1))
     self.data7_hash = self._root.Hash(self._io, self, self._root)
     self._raw_data7 = self._io.read_bytes(400)
     io = KaitaiStream(BytesIO(self._raw_data7))
     self.data7 = self._root.Data7(io, self, self._root)
예제 #19
0
        def _read(self):
            self._debug['block_type']['start'] = self._io.pos()
            self.block_type = KaitaiStream.resolve_enum(
                CreativeVoiceFile.BlockTypes, self._io.read_u1())
            self._debug['block_type']['end'] = self._io.pos()
            if self.block_type != CreativeVoiceFile.BlockTypes.terminator:
                self._debug['body_size1']['start'] = self._io.pos()
                self.body_size1 = self._io.read_u2le()
                self._debug['body_size1']['end'] = self._io.pos()

            if self.block_type != CreativeVoiceFile.BlockTypes.terminator:
                self._debug['body_size2']['start'] = self._io.pos()
                self.body_size2 = self._io.read_u1()
                self._debug['body_size2']['end'] = self._io.pos()

            if self.block_type != CreativeVoiceFile.BlockTypes.terminator:
                self._debug['body']['start'] = self._io.pos()
                _on = self.block_type
                if _on == CreativeVoiceFile.BlockTypes.sound_data_new:
                    self._raw_body = self._io.read_bytes(self.body_size)
                    _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
                    self.body = CreativeVoiceFile.BlockSoundDataNew(
                        _io__raw_body, self, self._root)
                    self.body._read()
                elif _on == CreativeVoiceFile.BlockTypes.repeat_start:
                    self._raw_body = self._io.read_bytes(self.body_size)
                    _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
                    self.body = CreativeVoiceFile.BlockRepeatStart(
                        _io__raw_body, self, self._root)
                    self.body._read()
                elif _on == CreativeVoiceFile.BlockTypes.marker:
                    self._raw_body = self._io.read_bytes(self.body_size)
                    _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
                    self.body = CreativeVoiceFile.BlockMarker(
                        _io__raw_body, self, self._root)
                    self.body._read()
                elif _on == CreativeVoiceFile.BlockTypes.sound_data:
                    self._raw_body = self._io.read_bytes(self.body_size)
                    _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
                    self.body = CreativeVoiceFile.BlockSoundData(
                        _io__raw_body, self, self._root)
                    self.body._read()
                elif _on == CreativeVoiceFile.BlockTypes.extra_info:
                    self._raw_body = self._io.read_bytes(self.body_size)
                    _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
                    self.body = CreativeVoiceFile.BlockExtraInfo(
                        _io__raw_body, self, self._root)
                    self.body._read()
                elif _on == CreativeVoiceFile.BlockTypes.silence:
                    self._raw_body = self._io.read_bytes(self.body_size)
                    _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
                    self.body = CreativeVoiceFile.BlockSilence(
                        _io__raw_body, self, self._root)
                    self.body._read()
                else:
                    self.body = self._io.read_bytes(self.body_size)
                self._debug['body']['end'] = self._io.pos()
예제 #20
0
        def _read(self):
            self._debug['len_manifest']['start'] = self._io.pos()
            self.len_manifest = self._io.read_u4le()
            self._debug['len_manifest']['end'] = self._io.pos()
            self._debug['num_files']['start'] = self._io.pos()
            self.num_files = self._io.read_u4le()
            self._debug['num_files']['end'] = self._io.pos()
            self._debug['api_version']['start'] = self._io.pos()
            self.api_version = PharWithoutStub.ApiVersion(
                self._io, self, self._root)
            self.api_version._read()
            self._debug['api_version']['end'] = self._io.pos()
            self._debug['flags']['start'] = self._io.pos()
            self.flags = PharWithoutStub.GlobalFlags(self._io, self,
                                                     self._root)
            self.flags._read()
            self._debug['flags']['end'] = self._io.pos()
            self._debug['len_alias']['start'] = self._io.pos()
            self.len_alias = self._io.read_u4le()
            self._debug['len_alias']['end'] = self._io.pos()
            self._debug['alias']['start'] = self._io.pos()
            self.alias = self._io.read_bytes(self.len_alias)
            self._debug['alias']['end'] = self._io.pos()
            self._debug['len_metadata']['start'] = self._io.pos()
            self.len_metadata = self._io.read_u4le()
            self._debug['len_metadata']['end'] = self._io.pos()
            if self.len_metadata != 0:
                self._debug['metadata']['start'] = self._io.pos()
                self._raw_metadata = self._io.read_bytes(self.len_metadata)
                _io__raw_metadata = KaitaiStream(BytesIO(self._raw_metadata))
                self.metadata = PharWithoutStub.SerializedValue(
                    _io__raw_metadata, self, self._root)
                self.metadata._read()
                self._debug['metadata']['end'] = self._io.pos()

            self._debug['file_entries']['start'] = self._io.pos()
            self.file_entries = [None] * (self.num_files)
            for i in range(self.num_files):
                if not 'arr' in self._debug['file_entries']:
                    self._debug['file_entries']['arr'] = []
                self._debug['file_entries']['arr'].append(
                    {'start': self._io.pos()})
                _t_file_entries = PharWithoutStub.FileEntry(
                    self._io, self, self._root)
                _t_file_entries._read()
                self.file_entries[i] = _t_file_entries
                self._debug['file_entries']['arr'][i]['end'] = self._io.pos()

            self._debug['file_entries']['end'] = self._io.pos()
예제 #21
0
                    def data(self):
                        if hasattr(self, '_m_data'):
                            return self._m_data

                        if self.size != 0:
                            _pos = self._io.pos()
                            self._io.seek(self.offset)
                            self._raw__m_data = self._io.read_bytes(self.size)
                            _io__raw__m_data = KaitaiStream(
                                BytesIO(self._raw__m_data))
                            self._m_data = Lvm2.PhysicalVolume.Label.VolumeHeader.MetadataArea(
                                _io__raw__m_data, self, self._root)
                            self._io.seek(_pos)

                        return getattr(self, '_m_data', None)
예제 #22
0
    def index(self):
        if hasattr(self, '_m_index'):
            return self._m_index if hasattr(self, '_m_index') else None

        _pos = self._io.pos()
        self._io.seek(self.ofs_index)
        self._debug['_m_index']['start'] = self._io.pos()
        self._raw__m_index = self._io.read_bytes(self.len_index)
        _io__raw__m_index = KaitaiStream(BytesIO(self._raw__m_index))
        self._m_index = QuakePak.IndexStruct(_io__raw__m_index, self,
                                             self._root)
        self._m_index._read()
        self._debug['_m_index']['end'] = self._io.pos()
        self._io.seek(_pos)
        return self._m_index if hasattr(self, '_m_index') else None
예제 #23
0
 def _read(self):
     self.version = self._io.read_bits_int_be(2)
     self.padding = self._io.read_bits_int_be(1) != 0
     self.subtype = self._io.read_bits_int_be(5)
     self._io.align_to_byte()
     self.payload_type = KaitaiStream.resolve_enum(
         RtcpPayload.PayloadType, self._io.read_u1())
     self.length = self._io.read_u2be()
     _on = self.payload_type
     if _on == RtcpPayload.PayloadType.sr:
         self._raw_body = self._io.read_bytes((4 * self.length))
         _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
         self.body = RtcpPayload.SrPacket(_io__raw_body, self,
                                          self._root)
     elif _on == RtcpPayload.PayloadType.psfb:
         self._raw_body = self._io.read_bytes((4 * self.length))
         _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
         self.body = RtcpPayload.PsfbPacket(_io__raw_body, self,
                                            self._root)
     elif _on == RtcpPayload.PayloadType.rr:
         self._raw_body = self._io.read_bytes((4 * self.length))
         _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
         self.body = RtcpPayload.RrPacket(_io__raw_body, self,
                                          self._root)
     elif _on == RtcpPayload.PayloadType.rtpfb:
         self._raw_body = self._io.read_bytes((4 * self.length))
         _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
         self.body = RtcpPayload.RtpfbPacket(_io__raw_body, self,
                                             self._root)
     elif _on == RtcpPayload.PayloadType.sdes:
         self._raw_body = self._io.read_bytes((4 * self.length))
         _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
         self.body = RtcpPayload.SdesPacket(_io__raw_body, self,
                                            self._root)
     else:
         self.body = self._io.read_bytes((4 * self.length))
예제 #24
0
            def _read(self):
                self._raw_vars = self._io.read_bytes(self._parent.var_size)
                _io__raw_vars = KaitaiStream(BytesIO(self._raw_vars))
                self.vars = NtMdt.Frame.FdSpectroscopy.Vars(
                    _io__raw_vars, self, self._root)
                self.fm_mode = self._io.read_u2le()
                self.fm_xres = self._io.read_u2le()
                self.fm_yres = self._io.read_u2le()
                self.dots = NtMdt.Frame.Dots(self._io, self, self._root)
                self.data = []
                for i in range((self.fm_xres * self.fm_yres)):
                    self.data.append(self._io.read_s2le())

                self.title = NtMdt.Title(self._io, self, self._root)
                self.xml = NtMdt.Xml(self._io, self, self._root)
            def _read(self):
                self._raw_vars = self._io.read_bytes(self._parent.var_size)
                io = KaitaiStream(BytesIO(self._raw_vars))
                self.vars = self._root.Frame.FdSpectroscopy.Vars(
                    io, self, self._root)
                self.fm_mode = self._io.read_u2le()
                self.fm_xres = self._io.read_u2le()
                self.fm_yres = self._io.read_u2le()
                self.dots = self._root.Frame.Dots(self._io, self, self._root)
                self.data = [None] * ((self.fm_xres * self.fm_yres))
                for i in range((self.fm_xres * self.fm_yres)):
                    self.data[i] = self._io.read_s2le()

                self.title = self._root.Title(self._io, self, self._root)
                self.xml = self._root.Xml(self._io, self, self._root)
예제 #26
0
 def _read(self):
     self._debug['len_payload']['start'] = self._io.pos()
     self.len_payload = vlq_base128_be.VlqBase128Be(self._io)
     self.len_payload._read()
     self._debug['len_payload']['end'] = self._io.pos()
     self._debug['row_id']['start'] = self._io.pos()
     self.row_id = vlq_base128_be.VlqBase128Be(self._io)
     self.row_id._read()
     self._debug['row_id']['end'] = self._io.pos()
     self._debug['payload']['start'] = self._io.pos()
     self._raw_payload = self._io.read_bytes(self.len_payload.value)
     _io__raw_payload = KaitaiStream(BytesIO(self._raw_payload))
     self.payload = Sqlite3.CellPayload(_io__raw_payload, self, self._root)
     self.payload._read()
     self._debug['payload']['end'] = self._io.pos()
예제 #27
0
    def resource_map(self):
        """The resource file's resource map."""
        if hasattr(self, '_m_resource_map'):
            return self._m_resource_map if hasattr(self, '_m_resource_map') else None

        _pos = self._io.pos()
        self._io.seek(self.header.ofs_resource_map)
        self._debug['_m_resource_map']['start'] = self._io.pos()
        self._raw__m_resource_map = self._io.read_bytes(self.header.len_resource_map)
        _io__raw__m_resource_map = KaitaiStream(BytesIO(self._raw__m_resource_map))
        self._m_resource_map = self._root.ResourceMap(_io__raw__m_resource_map, self, self._root)
        self._m_resource_map._read()
        self._debug['_m_resource_map']['end'] = self._io.pos()
        self._io.seek(_pos)
        return self._m_resource_map if hasattr(self, '_m_resource_map') else None
예제 #28
0
        def type_list_and_reference_lists(self):
            """The resource map's resource type list, followed by the resource reference list area."""
            if hasattr(self, '_m_type_list_and_reference_lists'):
                return self._m_type_list_and_reference_lists if hasattr(self, '_m_type_list_and_reference_lists') else None

            _pos = self._io.pos()
            self._io.seek(self.ofs_type_list)
            self._debug['_m_type_list_and_reference_lists']['start'] = self._io.pos()
            self._raw__m_type_list_and_reference_lists = self._io.read_bytes((self.ofs_names - self.ofs_type_list))
            _io__raw__m_type_list_and_reference_lists = KaitaiStream(BytesIO(self._raw__m_type_list_and_reference_lists))
            self._m_type_list_and_reference_lists = self._root.ResourceMap.TypeListAndReferenceLists(_io__raw__m_type_list_and_reference_lists, self, self._root)
            self._m_type_list_and_reference_lists._read()
            self._debug['_m_type_list_and_reference_lists']['end'] = self._io.pos()
            self._io.seek(_pos)
            return self._m_type_list_and_reference_lists if hasattr(self, '_m_type_list_and_reference_lists') else None
예제 #29
0
        def data(self):
            if hasattr(self, '_m_data'):
                return self._m_data

            _pos = self._io.pos()
            self._io.seek(self.ofs_data)
            _on = self.stream_type
            if _on == WindowsMinidump.StreamTypes.memory_list:
                self._raw__m_data = self._io.read_bytes(self.len_data)
                _io__raw__m_data = KaitaiStream(BytesIO(self._raw__m_data))
                self._m_data = WindowsMinidump.MemoryList(
                    _io__raw__m_data, self, self._root)
            elif _on == WindowsMinidump.StreamTypes.misc_info:
                self._raw__m_data = self._io.read_bytes(self.len_data)
                _io__raw__m_data = KaitaiStream(BytesIO(self._raw__m_data))
                self._m_data = WindowsMinidump.MiscInfo(
                    _io__raw__m_data, self, self._root)
            elif _on == WindowsMinidump.StreamTypes.thread_list:
                self._raw__m_data = self._io.read_bytes(self.len_data)
                _io__raw__m_data = KaitaiStream(BytesIO(self._raw__m_data))
                self._m_data = WindowsMinidump.ThreadList(
                    _io__raw__m_data, self, self._root)
            elif _on == WindowsMinidump.StreamTypes.exception:
                self._raw__m_data = self._io.read_bytes(self.len_data)
                _io__raw__m_data = KaitaiStream(BytesIO(self._raw__m_data))
                self._m_data = WindowsMinidump.ExceptionStream(
                    _io__raw__m_data, self, self._root)
            elif _on == WindowsMinidump.StreamTypes.system_info:
                self._raw__m_data = self._io.read_bytes(self.len_data)
                _io__raw__m_data = KaitaiStream(BytesIO(self._raw__m_data))
                self._m_data = WindowsMinidump.SystemInfo(
                    _io__raw__m_data, self, self._root)
            else:
                self._m_data = self._io.read_bytes(self.len_data)
            self._io.seek(_pos)
            return getattr(self, '_m_data', None)
예제 #30
0
 def _read(self):
     self._debug['name_index']['start'] = self._io.pos()
     self.name_index = self._io.read_u2be()
     self._debug['name_index']['end'] = self._io.pos()
     self._debug['attribute_length']['start'] = self._io.pos()
     self.attribute_length = self._io.read_u4be()
     self._debug['attribute_length']['end'] = self._io.pos()
     self._debug['info']['start'] = self._io.pos()
     _on = self.name_as_str
     if _on == u"SourceFile":
         self._raw_info = self._io.read_bytes(self.attribute_length)
         _io__raw_info = KaitaiStream(BytesIO(self._raw_info))
         self.info = JavaClass.AttributeInfo.AttrBodySourceFile(
             _io__raw_info, self, self._root)
         self.info._read()
     elif _on == u"LineNumberTable":
         self._raw_info = self._io.read_bytes(self.attribute_length)
         _io__raw_info = KaitaiStream(BytesIO(self._raw_info))
         self.info = JavaClass.AttributeInfo.AttrBodyLineNumberTable(
             _io__raw_info, self, self._root)
         self.info._read()
     elif _on == u"Exceptions":
         self._raw_info = self._io.read_bytes(self.attribute_length)
         _io__raw_info = KaitaiStream(BytesIO(self._raw_info))
         self.info = JavaClass.AttributeInfo.AttrBodyExceptions(
             _io__raw_info, self, self._root)
         self.info._read()
     elif _on == u"Code":
         self._raw_info = self._io.read_bytes(self.attribute_length)
         _io__raw_info = KaitaiStream(BytesIO(self._raw_info))
         self.info = JavaClass.AttributeInfo.AttrBodyCode(
             _io__raw_info, self, self._root)
         self.info._read()
     else:
         self.info = self._io.read_bytes(self.attribute_length)
     self._debug['info']['end'] = self._io.pos()