dissect.target.loader
#
Module Contents#
Classes#
Functions#
Attributes#
A lazy loaded |
- dissect.target.loader.RawLoader: Loader#
A lazy loaded
dissect.target.loaders.raw.RawLoader
.
- class dissect.target.loader.Loader(path: pathlib.Path, **kwargs)#
A base class for loading a specific path and coupling it to a
Target
.Implementors of this class are responsible for mapping any type of source data to a
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
Target
object in yourmap
function, but generally you do one of the following:open a
Container
and add it totarget.disks
.open a
Volume
and add it totarget.volumes
.open a
VirtualFilesystem
, add your files into it and add it totarget.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
Container
of a VMDK file) to the target. However, sometimes you need to get creative. Take a look at theITunesLoader
andTarLoader
for some creative examples.- Parameters:
path – The target path to load.
- __repr__()#
Return repr(self).
- abstract static detect(path: pathlib.Path) bool #
Detects wether this
Loader
class can load this specificpath
.- Parameters:
path – The target path to check.
- Returns:
True
if thepath
can be loaded by aLoader
instance.False
otherwise.
- static find_all(path: pathlib.Path) Iterator[pathlib.Path] #
Finds all targets to load from
path
.This can be used to open multiple targets from a target path that doesn’t necessarily map to files on a disk. For example, a wildcard in a hostname a loader that opens targets from an API or Unix socket, such as the Carbon Black loader.
- Parameters:
path – The location to a target to try and open multiple paths from.
- Returns:
All the target paths found from the source path.
- abstract map(target: dissect.target.Target) None #
Maps the loaded path into a
Target
.- Parameters:
target – The target that we’re mapping into.
- dissect.target.loader.register(module_name: str, class_name: str, internal: bool = True) None #
Registers a
Loader
class insideLOADERS
.This function registers a loader using
modname
relative to theMODULE_PATH
. It lazily imports the module, and retrieves the specific class from it.- Parameters:
module – The module where to find the loader.
class_name – The class to load.
internal – Whether it is an internal module or not.
- dissect.target.loader.open(item: str | pathlib.Path, *args, **kwargs)#
Opens a
Loader
for a specificitem
.This instantiates a
Loader
for a specificitem
. TheDirLoader
is used as the last entry due to how the detection methods function.- Parameters:
item – The target path to load.
- Returns:
A
Loader
class for the specific target if one exists.