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.
| 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 |
π |
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.