Esempio n. 1
0
  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()
Esempio n. 2
0
  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()
Esempio n. 3
0
    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()
Esempio n. 4
0
    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()
Esempio n. 5
0
  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()
Esempio n. 6
0
  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()