:py:mod:`dissect.target.loaders.remote` ======================================= .. py:module:: dissect.target.loaders.remote Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: dissect.target.loaders.remote.RemoteStream dissect.target.loaders.remote.RemoteStreamConnection dissect.target.loaders.remote.RemoteLoader Attributes ~~~~~~~~~~ .. autoapisummary:: dissect.target.loaders.remote.log .. py:data:: log .. py:class:: RemoteStream(stream: RemoteStreamConnection, disk_id: int, size: Optional[int] = None) Bases: :py:obj:`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. :param size: The size of the stream. This is used in read and seek operations. None if unknown. :param align: The alignment size. Read operations are aligned on this boundary. Also determines buffer size. .. py:class:: RemoteStreamConnection(hostname: str, port: int, **kwargs) .. py:attribute:: MAX_RECONNECTS :value: 30 .. py:attribute:: MAX_SHORT_READS :value: 10 .. py:attribute:: RECONNECT_WAIT :value: 10 .. py:attribute:: SOCKET_TIMEOUT :value: 30 .. py:attribute:: COMMAND_INFO :value: 1 .. py:attribute:: COMMAND_QUIT :value: 2 .. py:attribute:: COMMAND_READ :value: 50 .. py:attribute:: CONFIG_KEY .. py:attribute:: CONFIG_CRT .. py:method:: configure(key, crt) :staticmethod: .. py:method:: is_connected() -> bool .. py:method:: connect() -> None .. py:method:: read(disk_id: int, offset: int, length: int) -> bytes .. py:method:: close() -> None .. py:method:: info() -> list[RemoteStream] .. py:class:: RemoteLoader(path: Union[pathlib.Path, str], **kwargs) Bases: :py:obj:`dissect.target.loader.Loader` Load a remote target that runs a compatible Dissect agent. .. 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:: 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.