:py:mod:`dissect.target.loaders.direct` ======================================= .. py:module:: dissect.target.loaders.direct Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: dissect.target.loaders.direct.DirectLoader Attributes ~~~~~~~~~~ .. autoapisummary:: dissect.target.loaders.direct.log .. py:data:: log .. py:class:: DirectLoader(paths: list[str | pathlib.Path], case_sensitive: bool = False) Bases: :py:obj:`dissect.target.loader.Loader` A base class for loading a specific path and coupling it to a :class:`Target `. Implementors of this class are responsible for mapping any type of source data to a :class:`Target `. Whether that's to map all VMDK files from a VMX or mapping the contents of a zip file to a virtual filesystem, if it's something that can be translated to a "disk", "volume" or "filesystem", you can write a loader that maps it into a target. You can do anything you want to manipulate the :class:`Target ` object in your ``map`` function, but generally you do one of the following: * open a :class:`Container ` and add it to ``target.disks``. * open a :class:`Volume ` and add it to ``target.volumes``. * open a :class:`VirtualFilesystem `, add your files into it and add it to ``target.filesystems``. You don't need to manually parse volumes or filesystems in your loader, just add the highest level object you have (e.g. a :class:`Container ` of a VMDK file) to the target. However, sometimes you need to get creative. Take a look at the :class:`ITunesLoader ` and :class:`TarLoader ` for some creative examples. :param path: The target path to load. :param parsed_path: A URI parsed path to use. .. py:attribute:: case_sensitive :value: False .. py:attribute:: paths .. py:method:: __repr__() -> str .. py:method:: detect(path: pathlib.Path) -> bool :staticmethod: Detects wether this ``Loader`` class can load this specific ``path``. :param path: The target path to check. :returns: ``True`` if the ``path`` can be loaded by a ``Loader`` instance. ``False`` otherwise. .. py:method:: map(target: dissect.target.target.Target) -> None Maps the loaded path into a ``Target``. :param target: The target that we're mapping into. .. py:method:: check_case_insensitive_overlap() -> bool Verify if two differents files will have the same path in a case-insensitive scenario.