1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//! `ufs-core` — a pure-Rust, from-scratch UFS/FFS filesystem reader.
//!
//! UFS = the Unix File System, a.k.a. the Berkeley Fast File System (FFS).
//! Parses the on-disk UFS structures a forensic tool needs — superblock and
//! geometry, cylinder-group headers and allocation bitmaps, inodes,
//! directories, and file content — over any byte source. The reader targets
//! both **UFS1** (4.4BSD/FreeBSD legacy, 128-byte inodes, 32-bit block pointers,
//! superblock at byte 8192, magic `0x00011954`) and **UFS2** (FreeBSD 5+,
//! 256-byte inodes, 64-bit block pointers, superblock at byte 65536, magic
//! `0x19540119`).
//!
//! Import path is `ufs` (see `[lib] name`): `use ufs::Superblock;`.
//!
//! UFS is endianness-agnostic on disk — the byte order is that of the host that
//! created the filesystem, and the superblock magic disambiguates it. The
//! reader supports both little- and big-endian images, selecting the order by
//! which interpretation makes the magic match (see [`Endian`]).
//!
//! # Safety and robustness
//!
//! This crate parses untrusted, attacker-controllable disk images. It is
//! `#![forbid(unsafe_code)]` and every integer is read through bounds-checked
//! readers that yield `0`/`None` out of range rather than panic (the Paranoid
//! Gatekeeper standard).
pub use Endian;
pub use ;
pub use ;
pub use UfsError;
pub use ;
pub use ;
pub use ;