dissect.target.plugins.general.scrape#

Module Contents#

Classes#

ScrapePlugin

Base class for plugins.

Functions#

read_plain_chunk

Read chunk from a byte stream for provided needle, offset and chunk size

class dissect.target.plugins.general.scrape.ScrapePlugin(target: dissect.target.Target)#

Bases: dissect.target.plugin.Plugin

Base class for plugins.

Plugins can optionally be namespaced by specifying the __namespace__ class attribute. Namespacing results in your plugin needing to be prefixed with this namespace when being called. For example, if your plugin has specified test as namespace and a function called example, you must call your plugin with test.example:

A Plugin class has the following private class attributes:

  • __namespace__

  • __record_descriptors__

With the following three being assigned in register():

  • __plugin__

  • __functions__

  • __exports__

Additionally, the methods and attributes of Plugin receive more private attributes by using decorators.

The export() decorator adds the following private attributes

  • __exported__

  • __output__: Set with the export() decorator.

  • __record__: Set with the export() decorator.

The internal() decorator and InternalPlugin set the __internal__ attribute. Finally. args() decorator sets the __args__ attribute.

Parameters:

target – The Target object to load the plugin for.

__namespace__ = 'scrape'#
check_compatible() None#

Perform a compatibility check with the target.

This function should return None if the plugin is compatible with the current target (self.target). For example, check if a certain file exists. Otherwise it should raise an UnsupportedPluginError.

Raises:

UnsupportedPluginError – If the plugin could not be loaded.

find_needles(fh: BinaryIO, needles: List[bytes], block_size: int = io.DEFAULT_BUFFER_SIZE) Generator[Tuple[bytes, int], None, None]#

Yields needles and their offsets found in provided byte stream

find_needle_chunks(fh: BinaryIO, needle_chunk_size_map: Dict[bytes, int], block_size: int = io.DEFAULT_BUFFER_SIZE, chunk_reader: Callable[[BinaryIO, bytes, int, int], bytes] = None) Generator[Tuple[bytes, int, bytes], None, None]#

Yields tuples with an offset, a needle and a byte chunk found in provided byte stream.

scrape_chunks(fh: BinaryIO, needle_chunk_size_map: Dict[bytes, int], chunk_parser: Callable[[bytes, bytes], Generator], chunk_reader: Callable[[BinaryIO, bytes, int, int], bytes] = None, block_size: int = io.DEFAULT_BUFFER_SIZE) Generator[dissect.target.helpers.record.TargetRecordDescriptor, None, None]#

Yields records scraped from chunks found in a provided byte stream

scrape_chunks_from_disks(chunk_parser: Callable[[bytes, bytes], Generator], needle_chunk_size_map: Dict[bytes, int] = None, needle: bytes = None, chunk_size: int = None, chunk_reader: Callable[[BinaryIO, bytes, int, int], bytes] = None, block_size: int = io.DEFAULT_BUFFER_SIZE) Generator[dissect.target.helpers.record.TargetRecordDescriptor, None, None]#

Yields records scraped from chunks found in target.disks

scrape_needles_from_disks(needles: List[bytes] = None, needle: bytes = None, block_size: int = io.DEFAULT_BUFFER_SIZE) Generator[Tuple[BinaryIO, bytes, int], None, None]#

Yields bytestream / needle / offset tuples, scraped from target.disks

dissect.target.plugins.general.scrape.read_plain_chunk(fh: BinaryIO, needle: bytes, offset: int, chunk_size: int) bytes#

Read chunk from a byte stream for provided needle, offset and chunk size