pub enum AnomalyKind {
IncompleteCatalog {
entries_recovered: usize,
},
AbsolutePath {
path: String,
},
ParentTraversal {
path: String,
},
DuplicatePath {
path: String,
},
FutureTimestamp {
path: String,
field: &'static str,
epoch_secs: i64,
},
ControlCharsInName {
path: String,
},
}Expand description
Classification of a DAR forensic anomaly.
Each variant carries the evidence needed to reproduce the observation. The
suspicious/benign framing lives in AnomalyKind::note.
Variants§
IncompleteCatalog
Catalogue parsing stopped before a clean root end-of-directory — the listing may be truncated. Consistent with a partial/damaged archive or an entry type this reader does not model (parsing stops loudly rather than silently returning a short listing).
AbsolutePath
An entry’s path is absolute (begins with /). DAR stores paths relative
to the archive root, so an absolute path is unusual; on naive extraction
it would write outside the destination directory. Consistent with an
archive crafted to overwrite system paths.
ParentTraversal
An entry’s path contains a .. parent-directory component. On naive
extraction this could escape the destination directory — a path-traversal
(“zip-slip”) vector.
DuplicatePath
More than one catalogue entry records the same path. Consistent with a crafted archive in which a later entry shadows an earlier one on extraction (the examiner sees one name but two sets of bytes).
FutureTimestamp
An entry timestamp lies implausibly far in the future (beyond the year 2100). Consistent with a misconfigured clock on the archiving host or with timestamp tampering.
Fields
ControlCharsInName
An entry’s name contains non-printable control bytes (below 0x20, or
0x7f). Consistent with an attempt to obscure the true filename in
terminal listings (e.g. an embedded escape sequence or carriage return).
Implementations§
Trait Implementations§
Source§impl Clone for AnomalyKind
impl Clone for AnomalyKind
Source§fn clone(&self) -> AnomalyKind
fn clone(&self) -> AnomalyKind
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 AnomalyKind
impl Debug for AnomalyKind
impl Eq for AnomalyKind
Source§impl PartialEq for AnomalyKind
impl PartialEq for AnomalyKind
Source§fn eq(&self, other: &AnomalyKind) -> bool
fn eq(&self, other: &AnomalyKind) -> bool
self and other values to be equal, and is used by ==.