udf-forensic 0.1.0

Forensic-grade, from-scratch UDF (ECMA-167 / OSTA) reader — volume recognition, partition maps (physical/virtual/sparable/metadata), File Entry and directory (FID) traversal, and file data over any Read + Seek source
Documentation
  • Coverage
  • 76.19%
    16 out of 21 items documented0 out of 7 items with examples
  • Size
  • Source code size: 33.08 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 478.59 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 2s Average build duration of successful builds.
  • all releases: 2s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Homepage
  • SecurityRonin/udf-forensic
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • h4x0r

Crates.io docs.rs License: MIT CI Sponsor

Pure-Rust forensic UDF (ECMA-167 / OSTA) reader — volume recognition, partition-map classification, File Entry and directory traversal, and file data over any Read + Seek.

Reads the UDF filesystem on DVD, Blu-ray, and packet-written optical media, with no unsafe. Type-2 partitions (Virtual/VAT, Sparable, Metadata) are detected and reported rather than silently mis-read.

Install

[dependencies]
udf-forensic = "0.1"

Quick start

use std::fs::File;

let mut f = File::open("disc.udf")?;
if udf_forensic::detect_udf(&mut f) {
    if let Some(st) = udf_forensic::parse_udf_state(&mut f) {
        println!("{:?}, {} partition map(s)", st.partition_kind, st.partition_map_count);
        if let Some(entries) =
            udf_forensic::read_dir_at_lba(&mut f, st.partition_start, st.root_fe_lba)
        {
            for e in entries {
                println!("  {}  {}  {} bytes", if e.is_dir { "dir " } else { "file" }, e.name, e.size);
            }
        }
    }
}

What it parses

Capability Notes
Volume recognition NSR02 / NSR03 sequence detection
Partition maps Physical (Type 1); Virtual / Sparable / Metadata (Type 2) classified + reported
Directory traversal File Entry + File Identifier Descriptors, OSTA CS0 names
File data short/long extent reading from the File Entry

Validation

Partition-map classification is checked against real mkudffs-authored images (VAT and Sparable); those tests skip when the 32 MB fixtures are absent.

Features

  • serde — derive Serialize/Deserialize for partition-kind and entry types.

Related

Part of the Security Ronin forensic toolkit. Sibling filesystems: hfsplus-forensic, ext4fs-forensic, ntfs-forensic. Consumed by iso9660-forensic for optical UDF/bridge discs.


Privacy Policy · Terms of Service · © 2026 Security Ronin Ltd