dissect.target.filesystems.zip

Module Contents

Classes

ZipFilesystem

Filesystem implementation for zip files.

ZipFilesystemEntry

Virtual directory implementation. Backed by a dict.

Attributes

log

dissect.target.filesystems.zip.log
class dissect.target.filesystems.zip.ZipFilesystem(fh: BinaryIO, base: str | None = None, *args, **kwargs)

Bases: dissect.target.filesystem.Filesystem

Filesystem implementation for zip files.

Python does not have symlink support in the zipfile module, so that’s not currently supported. See https://github.com/python/cpython/issues/82102 for more information.

__type__ = 'zip'

A short string identifying the type of filesystem.

zip
base = ''
get(path: str, relentry: dissect.target.filesystem.FilesystemEntry = None) dissect.target.filesystem.FilesystemEntry

Returns a ZipFilesystemEntry object corresponding to the given path.

class dissect.target.filesystems.zip.ZipFilesystemEntry(fs: ZipFilesystem, path: str, entry: zipfile.ZipInfo)

Bases: dissect.target.filesystem.VirtualDirectory

Virtual directory implementation. Backed by a dict.

fs: ZipFilesystem
entry: zipfile.ZipInfo
open() BinaryIO

Open this filesystem entry.

Returns:

A file-like object. Resolves symlinks when possible

iterdir() Iterator[str]

Iterate over the contents of a directory, return them as strings.

Returns:

An iterator of directory entries as path strings.

scandir() Iterator[dissect.target.filesystem.FilesystemEntry]

Iterate over the contents of a directory, yields FilesystemEntry.

Returns:

An iterator of FilesystemEntry.

is_dir(follow_symlinks: bool = True) bool

Determine if this entry is a directory.

Parameters:

follow_symlinks – Whether to resolve the entry if it is a symbolic link.

Returns:

True if the entry is a directory or a symbolic link to a directory, return False otherwise. If follow_symlinks is False, return True only if the entry is a directory (without following symlinks).

is_file(follow_symlinks: bool = True) bool

Determine if this entry is a file.

Parameters:

follow_symlinks – Whether to resolve the entry if it is a symbolic link.

Returns:

True if the entry is a file or a symbolic link to a file, return False otherwise. If follow_symlinks is False, return True only if the entry is a file (without following symlinks).

Determine whether this entry is a symlink.

Returns:

True if the entry is a symbolic link, False otherwise.

Read the link where this entry points to, return the resulting path as string.

If it is a symlink and returns the entry that corresponds to that path. This means it follows the path a link points to, it tries to do it recursively.

Returns:

The path the link points to.

Read the link where this entry points to, return the resulting path as FilesystemEntry.

If it is a symlink and returns the string that corresponds to that path. This means it follows the path a link points to, it tries to do it recursively.

Returns:

The filesystem entry the link points to.

stat(follow_symlinks: bool = True) dissect.target.helpers.fsutil.stat_result

Determine the stat information of this entry.

If the entry is a symlink and follow_symlinks is True, it gets resolved, attempting to stat the path where it points to.

Parameters:

follow_symlinks – Whether to resolve the symbolic link if this entry is a symbolic link.

Returns:

The stat information of this entry.

lstat() dissect.target.helpers.fsutil.stat_result

Return the stat information of the given path, without resolving links.