def ParseFileObject(self, parser_mediator, file_object, **kwargs): """Parses a NTFS $MFT metadata file-like object. Args: parser_mediator: A parser mediator object (instance of ParserMediator). file_object: A file-like object. """ mft_metadata_file = pyfsntfs.mft_metadata_file() try: mft_metadata_file.open_file_object(file_object) except IOError as exception: parser_mediator.ProduceParseError( u'unable to open file with error: {0:s}'.format(exception)) for entry_index in range(0, mft_metadata_file.number_of_file_entries): try: mft_entry = mft_metadata_file.get_file_entry(entry_index) self._ParseMFTEntry(parser_mediator, mft_entry) except IOError as exception: parser_mediator.ProduceParseError(( u'unable to parse MFT entry: {0:d} with error: {1:s}').format( entry_index, exception)) mft_metadata_file.close()
def ParseFileObject(self, parser_mediator, file_object, **kwargs): """Parses a NTFS $MFT metadata file-like object. Args: parser_mediator (ParserMediator): mediates interactions between parsers and other components, such as storage and dfvfs. file_object (dfvfs.FileIO): file-like object. """ mft_metadata_file = pyfsntfs.mft_metadata_file() try: mft_metadata_file.open_file_object(file_object) except IOError as exception: parser_mediator.ProduceExtractionError( u'unable to open file with error: {0:s}'.format(exception)) for entry_index in range(0, mft_metadata_file.number_of_file_entries): try: mft_entry = mft_metadata_file.get_file_entry(entry_index) self._ParseMFTEntry(parser_mediator, mft_entry) except IOError as exception: parser_mediator.ProduceExtractionError( (u'unable to parse MFT entry: {0:d} with error: {1:s}' ).format(entry_index, exception)) mft_metadata_file.close()
def ParseFileObject(self, parser_mediator, file_object): """Parses a NTFS $MFT metadata file-like object. Args: parser_mediator (ParserMediator): mediates interactions between parsers and other components, such as storage and dfvfs. file_object (dfvfs.FileIO): file-like object. """ mft_metadata_file = pyfsntfs.mft_metadata_file() try: mft_metadata_file.open_file_object(file_object) except IOError as exception: parser_mediator.ProduceExtractionWarning( 'unable to open $MFT file with error: {0!s}'.format(exception)) return for entry_index in range(0, mft_metadata_file.number_of_file_entries): try: mft_entry = mft_metadata_file.get_file_entry(entry_index) if (not mft_entry.is_empty() and mft_entry.base_record_file_reference == 0): self._ParseMFTEntry(parser_mediator, mft_entry) except IOError as exception: parser_mediator.ProduceExtractionWarning( ('unable to parse MFT entry: {0:d} with error: {1!s}' ).format(entry_index, exception)) mft_metadata_file.close()
def ParseFileObject(self, parser_mediator, file_object): """Parses a NTFS $MFT metadata file-like object. Args: parser_mediator (ParserMediator): mediates interactions between parsers and other components, such as storage and dfvfs. file_object (dfvfs.FileIO): file-like object. """ mft_metadata_file = pyfsntfs.mft_metadata_file() try: mft_metadata_file.open_file_object(file_object) except IOError as exception: parser_mediator.ProduceExtractionError( 'unable to open file with error: {0!s}'.format(exception)) for entry_index in range(0, mft_metadata_file.number_of_file_entries): try: mft_entry = mft_metadata_file.get_file_entry(entry_index) self._ParseMFTEntry(parser_mediator, mft_entry) except IOError as exception: parser_mediator.ProduceExtractionError(( 'unable to parse MFT entry: {0:d} with error: {1!s}').format( entry_index, exception)) mft_metadata_file.close()
def ParseFileObject(self, parser_mediator, file_object, **kwargs): """Parses a NTFS $MFT metadata file-like object. Args: parser_mediator: A parser mediator object (instance of ParserMediator). file_object: A file-like object. Raises: UnableToParseFile: when the file cannot be parsed. """ mft_metadata_file = pyfsntfs.mft_metadata_file() try: mft_metadata_file.open_file_object(file_object) except IOError as exception: display_name = parser_mediator.GetDisplayName() raise errors.UnableToParseFile( u'[{0:s}] unable to parse file {1:s} with error: {2:s}'.format( self.NAME, display_name, exception)) for entry_index in range(0, mft_metadata_file.number_of_file_entries): try: mft_entry = mft_metadata_file.get_file_entry(entry_index) self._ParseMFTEntry(parser_mediator, mft_entry) except IOError as exception: parser_mediator.ProduceParseError(( u'unable to parse MFT entry: {0:d} with error: {1:s}').format( entry_index, exception)) mft_metadata_file.close()