dissect.target.filesystems.smb#

Module Contents#

Classes#

SmbFilesystem

Filesystem implementation for SMB.

SmbFilesystemEntry

Base class for filesystem entries.

SmbStream

Stream implementation for reading SMB files.

Attributes#

log

dissect.target.filesystems.smb.log#
class dissect.target.filesystems.smb.SmbFilesystem(conn: impacket.smbconnection.SMBConnection, share_name: str, *args, **kwargs)#

Bases: dissect.target.filesystem.Filesystem

Filesystem implementation for SMB.

__type__ = 'smb'#
static detect(fh: BinaryIO) bool#

No, your file is not an SMB connection.

get(path: str) dissect.target.filesystem.FilesystemEntry#

Returns a SmbFilesystemEntry object corresponding to the given path.

class dissect.target.filesystems.smb.SmbFilesystemEntry(fs: Filesystem, path: str, entry: Any)#

Bases: dissect.target.filesystem.FilesystemEntry

Base class for filesystem entries.

fs: SmbFilesystem#
entry: impacket.smb.SharedFile#
get(path: str) dissect.target.filesystem.FilesystemEntry#

Retrieve a FilesystemEntry relative to this entry.

Parameters:

path – The path relative to this filesystem entry.

Returns:

A relative FilesystemEntry.

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, return them as FilesystemEntry’s.

Returns:

An iterator of directory entries as FilesystemEntry’s.

open() SmbStream#

Open this filesystem entry.

Returns:

A file-like object. Resolves symlinks when possible

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.

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#

Determine the stat information of this entry, without resolving the symlinks.

When it detects a symlink, it will stat the information of the symlink, not the path it points to.

Returns:

The stat information of this entry.

class dissect.target.filesystems.smb.SmbStream(conn: impacket.smbconnection.SMBConnection, share_name: str, path: str, size: int)#

Bases: dissect.util.stream.AlignedStream

Stream implementation for reading SMB files.

close() None#

Flush and close the IO object.

This method has no effect if the file is already closed.