- class dissect.target.loaders.remote.RemoteStream(stream: RemoteStreamConnection, disk_id: int, size: int | None = None)#
Basic buffered stream that provides easy aligned reads.
- Must be subclassed for various stream implementations. Subclasses can implement:
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.
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.remote.RemoteStreamConnection(hostname: str, port: int, **kwargs)#
- MAX_RECONNECTS = 30#
- MAX_SHORT_READS = 10#
- RECONNECT_WAIT = 10#
- SOCKET_TIMEOUT = 30#
- COMMAND_INFO = 1#
- COMMAND_QUIT = 2#
- COMMAND_READ = 50#
- static configure(key, crt)#
- is_connected() bool #
- connect() None #
- close() None #
- class dissect.target.loaders.remote.RemoteLoader(path: pathlib.Path | str, **kwargs)#
A base class for loading a specific path and coupling it to a
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
Targetobject in your
mapfunction, but generally you do one of the following:
Containerand add it to
Volumeand add it to
VirtualFilesystem, add your files into it and add it to
You don’t need to manually parse volumes or filesystems in your loader, just add the highest level object you have (e.g. a
Containerof a VMDK file) to the target. However, sometimes you need to get creative. Take a look at the
TarLoaderfor some creative examples.
path – The target path to load.
- map(target: dissect.target.target.Target) None #
Maps the loaded path into a
target – The target that we’re mapping into.
- static detect(path: pathlib.Path) bool #
Detects wether this
Loaderclass can load this specific
path – The target path to check.
pathcan be loaded by a