Beispiel #1
0
    def testOpenAndClose(self):
        """Test the open and close functionality."""
        file_system = apfs_file_system.APFSFileSystem(self._resolver_context,
                                                      self._apfs_path_spec)
        self.assertIsNotNone(file_system)

        file_system.Open()
Beispiel #2
0
  def setUp(self):
    """Sets up the needed objects used throughout the test."""
    self._resolver_context = context.Context()
    test_path = self._GetTestFilePath(['apfs_encrypted.dmg'])
    self._SkipIfPathNotExists(test_path)

    test_os_path_spec = path_spec_factory.Factory.NewPathSpec(
        definitions.TYPE_INDICATOR_OS, location=test_path)
    test_raw_path_spec = path_spec_factory.Factory.NewPathSpec(
        definitions.TYPE_INDICATOR_RAW, parent=test_os_path_spec)
    test_tsk_partition_path_spec = path_spec_factory.Factory.NewPathSpec(
        definitions.TYPE_INDICATOR_TSK_PARTITION, location='/p1',
        parent=test_raw_path_spec)
    self._apfs_container_path_spec = path_spec_factory.Factory.NewPathSpec(
        definitions.TYPE_INDICATOR_APFS_CONTAINER, location='/apfs1',
        parent=test_tsk_partition_path_spec)
    self._apfs_path_spec = path_spec_factory.Factory.NewPathSpec(
        definitions.TYPE_INDICATOR_APFS, location='/',
        parent=self._apfs_container_path_spec)

    resolver.Resolver.key_chain.SetCredential(
        self._apfs_container_path_spec, 'password', self._APFS_PASSWORD)

    self._file_system = apfs_file_system.APFSFileSystem(
        self._resolver_context, self._apfs_path_spec)
    self._file_system.Open()
Beispiel #3
0
  def NewFileSystem(self, resolver_context):
    """Creates a new file system object.

    Args:
      resolver_context (Context): resolver context.

    Returns:
      FileSystem: file system.
    """
    return apfs_file_system.APFSFileSystem(resolver_context)
Beispiel #4
0
  def NewFileSystem(self, resolver_context, path_spec):
    """Creates a new file system object.

    Args:
      resolver_context (Context): resolver context.
      path_spec (PathSpec): a path specification.

    Returns:
      FileSystem: file system.
    """
    return apfs_file_system.APFSFileSystem(resolver_context, path_spec)
Beispiel #5
0
    def testGetRootFileEntry(self):
        """Test the get root file entry functionality."""
        file_system = apfs_file_system.APFSFileSystem(self._resolver_context,
                                                      self._apfs_path_spec)
        self.assertIsNotNone(file_system)

        file_system.Open()

        file_entry = file_system.GetRootFileEntry()

        self.assertIsNotNone(file_entry)
        self.assertEqual(file_entry.name, '')
Beispiel #6
0
    def setUp(self):
        """Sets up the needed objects used throughout the test."""
        self._resolver_context = context.Context()
        test_file = self._GetTestFilePath(['apfs.dmg'])
        path_spec = os_path_spec.OSPathSpec(location=test_file)
        path_spec = raw_path_spec.RawPathSpec(parent=path_spec)
        partition_path_spec = tsk_partition_path_spec.TSKPartitionPathSpec(
            location='/p1', parent=path_spec)
        self._apfs_container_path_spec = (
            apfs_container_path_spec.APFSContainerPathSpec(
                location='/apfs1', parent=partition_path_spec))
        self._apfs_path_spec = apfs_path_spec.APFSPathSpec(
            location='/', parent=self._apfs_container_path_spec)

        self._file_system = apfs_file_system.APFSFileSystem(
            self._resolver_context)
        self._file_system.Open(self._apfs_path_spec)
Beispiel #7
0
  def setUp(self):
    """Sets up the needed objects used throughout the test."""
    self._resolver_context = context.Context()
    test_path = self._GetTestFilePath(['apfs.raw'])
    self._SkipIfPathNotExists(test_path)

    test_os_path_spec = path_spec_factory.Factory.NewPathSpec(
        definitions.TYPE_INDICATOR_OS, location=test_path)
    test_raw_path_spec = path_spec_factory.Factory.NewPathSpec(
        definitions.TYPE_INDICATOR_RAW, parent=test_os_path_spec)
    self._apfs_container_path_spec = path_spec_factory.Factory.NewPathSpec(
        definitions.TYPE_INDICATOR_APFS_CONTAINER, location='/apfs1',
        parent=test_raw_path_spec)
    self._apfs_path_spec = path_spec_factory.Factory.NewPathSpec(
        definitions.TYPE_INDICATOR_APFS, location='/',
        parent=self._apfs_container_path_spec)

    self._file_system = apfs_file_system.APFSFileSystem(
        self._resolver_context, self._apfs_path_spec)
    self._file_system.Open()
Beispiel #8
0
    def testFileEntryExistsByPathSpec(self):
        """Test the file entry exists by path specification functionality."""
        file_system = apfs_file_system.APFSFileSystem(self._resolver_context,
                                                      self._apfs_path_spec)
        self.assertIsNotNone(file_system)

        file_system.Open()

        path_spec = path_spec_factory.Factory.NewPathSpec(
            definitions.TYPE_INDICATOR_APFS,
            location='/passwords.txt',
            identifier=self._IDENTIFIER_PASSWORDS_TXT,
            parent=self._apfs_container_path_spec)
        self.assertTrue(file_system.FileEntryExistsByPathSpec(path_spec))

        path_spec = path_spec_factory.Factory.NewPathSpec(
            definitions.TYPE_INDICATOR_APFS,
            location='/bogus.txt',
            parent=self._apfs_container_path_spec)
        self.assertFalse(file_system.FileEntryExistsByPathSpec(path_spec))
Beispiel #9
0
    def setUp(self):
        """Sets up the needed objects used throughout the test."""
        self._resolver_context = context.Context()
        test_file = self._GetTestFilePath(['apfs_encrypted.dmg'])
        self._SkipIfPathNotExists(test_file)

        path_spec = os_path_spec.OSPathSpec(location=test_file)
        path_spec = raw_path_spec.RawPathSpec(parent=path_spec)
        partition_path_spec = tsk_partition_path_spec.TSKPartitionPathSpec(
            location='/p1', parent=path_spec)
        self._apfs_container_path_spec = (
            apfs_container_path_spec.APFSContainerPathSpec(
                location='/apfs1', parent=partition_path_spec))
        self._apfs_path_spec = apfs_path_spec.APFSPathSpec(
            location='/', parent=self._apfs_container_path_spec)

        resolver.Resolver.key_chain.SetCredential(
            self._apfs_container_path_spec, 'password', self._APFS_PASSWORD)

        self._file_system = apfs_file_system.APFSFileSystem(
            self._resolver_context)
        self._file_system.Open(self._apfs_path_spec)
Beispiel #10
0
    def testGetFileEntryByPathSpec(self):
        """Tests the GetFileEntryByPathSpec function."""
        file_system = apfs_file_system.APFSFileSystem(self._resolver_context)
        self.assertIsNotNone(file_system)

        file_system.Open(self._apfs_path_spec)

        path_spec = path_spec_factory.Factory.NewPathSpec(
            definitions.TYPE_INDICATOR_APFS,
            identifier=19,
            parent=self._apfs_container_path_spec)

        file_entry = file_system.GetFileEntryByPathSpec(path_spec)

        self.assertIsNotNone(file_entry)
        # There is no way to determine the file_entry.name without a location string
        # in the path_spec or retrieving the file_entry from its parent.

        path_spec = path_spec_factory.Factory.NewPathSpec(
            definitions.TYPE_INDICATOR_APFS,
            location='/passwords.txt',
            identifier=19,
            parent=self._apfs_container_path_spec)
        file_entry = file_system.GetFileEntryByPathSpec(path_spec)

        self.assertIsNotNone(file_entry)
        self.assertEqual(file_entry.name, 'passwords.txt')

        path_spec = path_spec_factory.Factory.NewPathSpec(
            definitions.TYPE_INDICATOR_APFS,
            location='/bogus.txt',
            parent=self._apfs_container_path_spec)
        file_entry = file_system.GetFileEntryByPathSpec(path_spec)

        self.assertIsNone(file_entry)

        file_system.Close()