Skip to content

Feature-Parity Matrix

The goal: the most comprehensive USB-device-history analyzer available β€” matching or exceeding every dedicated competitor, then adding the pipeline/reproducibility wedge no incumbent has. This page is the authoritative checklist: every row is a capability one of the reference tools ships, and the status column tracks usb-forensic against it.

Status legend: βœ… implemented & tested Β· πŸ— build in progress Β· πŸ“‹ planned Β· β€” not applicable. No cell is marked βœ… until it is implemented and validated against an independent oracle (see validation).

Reference tools absorbed: USB Detective (the depth/scoring leader), USB Forensic Tracker / USBFT (breadth: multi-OS, image mounting, VSCs, encrypted-volume history), USB Historian, USBDeview, KAPE + RegRipper / Registry Explorer.

1. Input & acquisition

Capability Seen in Status
Live system processing USB Detective, USBFT, USBDeview πŸ“‹
Individual files / folders of extracted artifacts all πŸ— (core accepts decoded records)
Logical drives USB Detective, USBFT πŸ“‹
Mounted forensic images (E01/raw/…) USB Detective (Pro), USBFT πŸ— (raw disk-image boot sectors β€” MBR disk signature + FAT volume serial β€” read directly by usb4n6; E01 via ewfexport to raw. Tier-1: CFReDS RM#2 stick β†’ its host label)
Built-in image mounting (no external mounter) USBFT (Arsenal Image Mounter) πŸ“‹ (fleet 4n6mount FUSE bridge)
Volume Shadow Copies β€” auto-aggregated USB Detective, USBFT πŸ“‹ (fleet [H] VSS layer)
Registry transaction-log replay (uncommitted data) USB Detective πŸ“‹
Remote-machine enumeration USBDeview πŸ“‹
Cross-platform runtime (analyze from any OS) USBFT (parses), β€” (none scores) πŸ— (Rust, OS-agnostic)

2. Windows artifact coverage

Artifact Signal Seen in Status
USBSTOR (SYSTEM) device class/serial/VID-PID, first/last connect all dedicated βœ… (PeripheralSource via peripheral-core registry reader; regipy-validated)
Enum\USB (SYSTEM) parent USB device, container id USB Detective, RegRipper βœ… (same reader)
Enum\SCSI (UASP / USB-3 drives) modern drives absent from USBSTOR (gap in most) βœ… (same reader; Szechuan VMware disk validated)
MountedDevices (SYSTEM) drive-letter ↔ device mapping USB Detective, USBFT, RegRipper βœ… (peripheral-core 0.3 decodes device-path entries β†’ DriveLetter claim; Szechuan D:β†’CD-ROM validated)
WPDBUSENUM / Windows Portable Devices (SOFTWARE) MTP/PTP + mass-storage, volume label USB Detective, USBFT πŸ“‹
VolumeInfoCache + EMDMgmt (SOFTWARE) volume label ↔ serial history USB Detective βœ… (VolumeCacheSource (label by drive letter) + EmdMgmtSource (label + 4-byte volume serial, the LNK DriveSerialNumber join key) via peripheral-core 0.4/0.7. Tier-1 on the real NIST CFReDS SOFTWARE hive: Authorized USB/1551191358 and IAMAN $_@/2657770370, matching the answer key)
MountPoints2 (NTUSER.DAT) per-user mounts USB Detective, USBFT, RegRipper βœ… (MountPoints2Source via peripheral-core 0.6; per-user volume-GUID mount + time, unified with the drive letter & label by the MountedDevices MBR-signature bridge. Tier-1 on the real NIST CFReDS: informant mounted {a2f2048e} = E: = IAMAN $_@ at 2015-03-24 21:02:33)
Amcache.hve execution / first-seen corroboration USB Detective πŸ“‹
SetupAPI (setupapi.dev.log) first-install time (local, TZ-normalized) all dedicated βœ… (PeripheralSource)
Linux kernel log (syslog/dmesg) USB enumeration (VID/PID, serial, first-seen) USBFT (parses) βœ… (PeripheralSource via peripheral-core linux_syslog; UAC-syslog validated)
Partition/Diagnostic event log volume serial numbers, connect events USB Detective βœ… (PartitionDiagSource via winevt-extract 0.3 EID-1006 extractor; disk-arrival connect events, Tier-1 on the real DFIRArtifactMuseum .evtx. Volume-serial VBR decode: follow-up)
Other USB event-log providers (Kernel-PnP, DriverFrameworks-UserMode, Ntfs) connect/disconnect, mount RegRipper/KAPE workflows πŸ“‹
LNK files files opened on device (volume-serial join) USB Detective, USBFT βœ… (LnkSource)
Jump Lists recent items per app on device USB Detective βœ… (JumpListSource, MRU access times)
ShellBags folders browsed on device USB Detective, USBFT πŸ“‹

3. Correlation & scoring (the moat)

Capability Seen in Status
Merge all sources into one per-device record USB Detective βœ… (correlate / correlate_sources)
Cross-source timestamp comparison per attribute USB Detective βœ… core primitive (Consistency)
Consistency grading (corroborated / conflicting / single-source) USB Detective (colour-coded) βœ… Consistency
Anti-forensics / tampering leads (impossible timestamp ordering) USB Detective (timestamp scoring) βœ… (audit USB-IMPOSSIBLE-ORDERING: first-connect after last-connect β†’ MITRE T1070.006)
Per-value source provenance retained USB Detective βœ… (ProvenancedValue: source + locator)
Reproducibility chain (raw bytes β†’ decoding rule per value) (none) πŸ“‹ the wedge
Deleted / removed-device recovery (Win10 cleanup) USB Detective πŸ“‹
Prior volume names/serials for formatted devices USB Detective πŸ“‹
Device/volume encryption-type detection USB Detective βœ… (BitLocker via the -FVE-FS- VBR signature read from a device image β†’ Encryption attribute + USB-VOLUME-ENCRYPTED finding. Spec-defined rule (Tier-3); validated against a signature fixture AND the real CFReDS FAT stick as a non-false-positive)
TrueCrypt/VeraCrypt mounted-volume history USBFT πŸ“‹
Physical-deviceβ†’host attribution (image the stick, tie it to its host footprint) USB Detective, USBFT βœ… (DeviceImageSource + disk-signature canonicalization: a raw device image's MBR disk signature joins the MountedDevices bridge AND its FAT volume serial joins EMDMgmt/LNK β€” unifying the physical device, drive letter, volume label, and per-user mount into ONE record. Tier-1 on the real CFReDS RM#2 stick: the SanDisk 'IAMAN' stick tied to drive E:, label 'IAMAN \$_@', and the informant's 2015-03-24 mount β€” volume serial Corroborated across the device media and the host SOFTWARE hive)
File-to-device linking (which files touched which stick) USB Detective, USBFT βœ… (reconcile_volume_serials β€” LNK volume-keyed file access re-attributed to the device carrying that volume serial; ambiguous/unmatched left untouched. Rule-tested; end-to-end join needs a FAT-volume + LNK corpus)
Timezone normalization (local ↔ UTC) USB Detective βœ… (--tz-offset; clock_is_local per source)
OS-version-aware artifact semantics USB Detective πŸ“‹

4. Cross-platform evidence (USBFT breadth)

Per-OS modules report what each system actually retains, with explicit retention windows β€” a timestamped event list, not a fabricated consistency score where the sources cannot support one (see roadmap Phase 3).

Source OS Status
com.apple.iPod.plist (Apple-device connection history) macOS βœ… (AppleIPodSource via the plist crate; per-device serial, model, last-connected. Tier-1 on a real macOS com.apple.iPod.plist. Unified logs / IORegistry: follow-up)
syslog/dmesg kernel USB blocks (journald/GVFS planned) Linux βœ… wired end-to-end (peripheral-core linux_syslog, --year); UAC-syslog validated

5. Output & reporting

Capability Seen in Status
Results grid / high-level report USB Detective, USBFT, Historian, USBDeview βœ… (usb4n6 --table)
Verbose per-value report with provenance USB Detective βœ… (usb4n6 --report)
Per-device timeline USB Detective βœ… (per-device JSONL / report block)
Aggregate super-timeline USB Detective βœ… (usb4n6 --timeline; every timestamped event across all devices, chronological JSONL)
Opened/accessed-files report USB Detective πŸ“‹
Machine-readable output (JSONL, diffable, pipeable) (weak in all β€” Excel/CSV only) βœ… (to_jsonl, default)
forensicnomicon::report findings (fleet-uniform, MITRE-tagged) (fleet-only) βœ… (audit)
Court-ready report with per-value source chain (Excel only elsewhere) βœ… native DOCX + PDF (--docx/--pdf, both oracle-validated) + Markdown (--report)
Volume / MBR export USB Detective πŸ“‹
Differential mode vs USB Detective / RegRipper (validation) (none) πŸ“‹

6. Engineering posture (the fleet differentiators)

Property Status
Single static binary, no runtime deps, cargo install πŸ— (usb4n6 builds & runs; cargo install at publish)
Library-embeddable (used by Issen / other fleet crates) βœ… (this crate)
#![forbid(unsafe_code)], panic-free (unwrap/expect denied) βœ…
100% line coverage gate βœ…
Fuzzed at every parse boundary πŸ“‹ (upstream reader crates + own adapters)
Validated against independent oracle on real images πŸ“‹

The correlation core (source-agnostic: claims β†’ consistency + provenance β†’ findings) is the highest-leverage work; every artifact row above becomes "add a HistorySource" once it is solid. That is what is being built first.