dissect.target.loaders.targetd
#
Module Contents#
Classes#
Basic buffered stream that provides easy aligned reads. |
|
A base class for loading a specific path and coupling it to a |
Functions#
Attributes#
- dissect.target.loaders.targetd.TARGETD_AVAILABLE = False#
- dissect.target.loaders.targetd.TARGETD_AVAILABLE = True#
- class dissect.target.loaders.targetd.TargetdStream(size: int | None = None, align: int = STREAM_BUFFER_SIZE)#
Bases:
dissect.util.stream.AlignedStream
Basic buffered stream that provides easy aligned reads.
- Must be subclassed for various stream implementations. Subclasses can implement:
_read(offset, length)
_seek(pos, whence=io.SEEK_SET)
The offset and length for _read are guaranteed to be aligned. The only time that overriding _seek would make sense is if there’s no known size of your stream, but still want to provide SEEK_END functionality.
Most subclasses of AlignedStream take one or more file-like objects as source. Operations on these subclasses, like reading, will modify the source file-like object as a side effect.
- Parameters:
size – The size of the stream. This is used in read and seek operations. None if unknown.
align – The alignment size. Read operations are aligned on this boundary. Also determines buffer size.
- class dissect.target.loaders.targetd.TargetdLoader(path: pathlib.Path | str, **kwargs)#
Bases:
dissect.target.loader.Loader
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.
- instance#
- plugin_bridge(plugin_func: str, peers: int, host: str, local_link: str, port: int, adapter: str)#
Command Execution Bridge Plugin for Targetd.
This is a generic plugin interceptor that becomes active only if using the targetd loader. This plugin acts as a bridge to connect to the Targetd broker and will translate the requested plugin-operation into Targetd-commands using the selected adapter (i.e. Flow.Remoting).
- map(target: dissect.target.target.Target) None #
Maps the loaded path into a
Target
.- Parameters:
target – The target that we’re mapping into.
- 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.
- dissect.target.loaders.targetd.command_runner(link: str, targetd: targetd.clients.Client)#