pub enum Ext4Anomaly {
SuperblockBackupMismatch {
group: u32,
block: u64,
differences: Vec<String>,
},
DeletedInode {
ino: u64,
file_type: FileType,
size: u64,
dtime: u32,
recoverability: f64,
},
SlackResidue {
ino: u64,
file_size: u64,
block: u64,
slack_offset: usize,
nonzero_bytes: usize,
},
JournalInconsistent {
sequence: u32,
commit_seconds: i64,
prior_sequence: u32,
prior_commit_seconds: i64,
},
}Expand description
A classified ext4 forensic anomaly, carrying the engine evidence needed to
reproduce the observation. The benign / suspicious framing lives in
Ext4Anomaly::note: an anomaly is an observation, never an assertion of
intent.
Variants§
SuperblockBackupMismatch
A backup superblock disagrees with the primary on one or more invariant
fields. ext4 replicates the superblock at group 0 (primary), group 1,
and powers of 3/5/7; the copies are written together and should be
identical. A divergence is consistent with a filesystem resize that did
not propagate, a tune2fs edit, on-disk corruption, or deliberate
tampering of one copy.
Fields
DeletedInode
An inode whose deletion time (dtime) is set — the kernel stamps dtime
when a file is removed. The inode metadata (and, when the block bitmap
still shows its data blocks free, the file content) may be recoverable.
Fields
SlackResidue
Non-zero bytes in a file’s block slack — the unused tail of its final allocated block, past the recorded file size. ext4 does not zero this region on allocation, so it commonly retains fragments of previously resident data; consistent with leaked residue from prior block use (often benign) or, rarely, deliberately hidden bytes.
Fields
JournalInconsistent
A committed journal (jbd2) transaction whose commit timestamp precedes that of an earlier-sequenced, already-committed transaction. jbd2 commits transactions in strictly increasing sequence order, so commit times should be non-decreasing along that order. A regression is consistent with a wall-clock change between commits, a journal assembled from out-of-order sources, or tampering — and is replay-relevant, since recovery replays by sequence regardless of the timestamp.
Implementations§
Source§impl Ext4Anomaly
impl Ext4Anomaly
Sourcepub fn severity(&self) -> Severity
pub fn severity(&self) -> Severity
Severity assigned to this kind — the single source of truth.
Sourcepub fn category(&self) -> Category
pub fn category(&self) -> Category
Analytical lens. The keyword classifier in
forensicnomicon::report::Category::from_code does not recognise these
ext4-specific codes, so each is set explicitly.
Trait Implementations§
Source§impl Clone for Ext4Anomaly
impl Clone for Ext4Anomaly
Source§fn clone(&self) -> Ext4Anomaly
fn clone(&self) -> Ext4Anomaly
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Ext4Anomaly
impl Debug for Ext4Anomaly
Source§impl Observation for Ext4Anomaly
impl Observation for Ext4Anomaly
Source§fn severity(&self) -> Option<Severity>
fn severity(&self) -> Option<Severity>
None if the analyzer deliberately does not grade this kind.Source§fn category(&self) -> Category
fn category(&self) -> Category
Category::from_code of Observation::code.
Override when a code’s keyword classification is wrong.