dissect.fat.fat

Module Contents

Classes

Functions

class dissect.fat.fat.FATFS(fh: BinaryIO, encoding: str = 'ibm437')
fh
encoding = 'ibm437'
bpb
fat_size
total_sectors
first_data_sector
sector_size
cluster_size
fat
data_stream
volume_label = ''
volume_id
root
get(path: str, dirent: DirectoryEntry | RootDirectory | None = None) DirectoryEntry | RootDirectory
dissect.fat.fat.validate_bpb(bpb: dissect.fat.c_fat.c_fat.Bpb | bytes) None
class dissect.fat.fat.FAT(fh: BinaryIO, fattype: dissect.fat.c_fat.Fattype)
fh
entry_count
get
chain(cluster: int) collections.abc.Iterator[int]
runlist(cluster: int) collections.abc.Iterator[tuple[int, int]]

Create a runlist from a cluster chain.

First two clusters are reserved, so substract those. Also combine consecutive clusters for a more efficient runlist.

class dissect.fat.fat.DirectoryEntry(fs: FATFS, fh: BinaryIO, parent: DirectoryEntry | RootDirectory | None = None)
fs
parent = None
dirent = None
ldirents = []
name = None
short_name = None
__repr__() str
property path: str
property size: size
property cluster: int
property ctime: datetime.datetime
property atime: datetime.datetime
property mtime: datetime.datetime
is_readonly() bool
is_hidden() bool
is_system() bool
is_volume_id() bool
is_directory() bool
is_archive() bool
iterdir() collections.abc.Iterator[DirectoryEntry]
dataruns() list[tuple[int, int]]
open() dissect.util.stream.RunlistStream
class dissect.fat.fat.RootDirectory(fs: FATFS)

Bases: DirectoryEntry

fs
name = '\\'
short_name = '\\'
property path: str
property size: int
property cluster: int | None
property ctime: datetime.datetime
property atime: datetime.datetime
property mtime: datetime.datetime
is_readonly() bool
is_hidden() bool
is_system() bool
is_volume_id() bool
is_directory() bool
is_archive() bool
iterdir() collections.abc.Iterator[DirectoryEntry]
dataruns() list[tuple[int, int]]
open() dissect.util.stream.RangeStream | dissect.util.stream.RunlistStream
dissect.fat.fat.mask(v: int, bits: int) int