Source code for dfvfs.volume.apfs_volume_system

"""The Apple File System (APFS) volume system."""

from dfvfs.lib import definitions
from dfvfs.volume import factory
from dfvfs.volume import volume_system


[docs] class APFSVolume(volume_system.Volume): """Volume that uses pyfsapfs."""
[docs] def __init__(self, file_entry): """Initializes an APFS volume. Args: file_entry (APFSContainerFileEntry): an APFS container file entry. """ super().__init__(file_entry.name) self._file_entry = file_entry
def _Parse(self): """Extracts attributes and extents from the volume.""" fsapfs_volume = self._file_entry.GetAPFSVolume() volume_attribute = volume_system.VolumeAttribute( "identifier", fsapfs_volume.identifier ) self._AddAttribute(volume_attribute) volume_attribute = volume_system.VolumeAttribute("name", fsapfs_volume.name) self._AddAttribute(volume_attribute)
# TODO: implement in pyfsapfs # TODO: add support for creation time # TODO: add support for volume size
[docs] class APFSVolumeSystem(volume_system.VolumeSystem): """Volume system that uses pyfsapfs.""" TYPE_INDICATOR = definitions.TYPE_INDICATOR_APFS_CONTAINER VOLUME_IDENTIFIER_PREFIX = "apfs" def _Parse(self): """Extracts sections and volumes from the volume system.""" root_file_entry = self._file_system.GetRootFileEntry() for sub_file_entry in root_file_entry.sub_file_entries: volume = APFSVolume(sub_file_entry) self._AddVolume(volume)
factory.Factory.RegisterVolumeSystem(APFSVolumeSystem)