PAGES
← all tools
◆ Digital Forensics & Incident Response

dfvfs

20260717 open-source

Digital Forensics Virtual File System (dfVFS)

Summary

dfvfs is an open-source Python library that gives read-only access to file-system objects across different storage media types and file formats, presenting them through one generic interface backed by several format-specific implementations. It is imported into other code rather than run as a standalone application, which makes it a building block for someone writing forensic tooling rather than an end-user utility itself. It grew out of the Plaso project and draws on ideas from GRR, and it targets digital forensics practitioners and DFIRDFIRDigital forensics and incident response, investigating what happened during a security incident and containing it. The work includes preserving evidence, reconstructing activity and restoring systems. tool developers who need to parse disk images, volumes and file systems programmatically. Supported formats span storage media, volume systems, file systems and various compressed, encoded and encrypted stream types, with recent work switching FAT parsing to pyfsfat as the default back-end. First committed in 2013, it has 7 contributors and remains active, with 38 commits and 4 releases in the past year.

Digital Forensics Virtual File System (dfVFS)

How dfvfs helps

Which files exist inside this disk image without altering the original evidence?

walks the file-system objects through the read-only interface and lists names, paths and metadata straight from the image, so nothing written back can taint the source

How do I get at a file that is inside a partition inside a raw disk image?

chains the storage-media, volume-system and file-system back-ends into one path specification, so a single lookup resolves through the container layers to the actual file object

Can I read a file that was extracted from an encrypted or encoded stream without extracting it to disk first?

exposes encrypted, encoded and compressed streams through the same generic file object interface as a plain file, so the caller reads bytes without a separate decode step

Which volume or partition on this image actually holds the file system I care about?

enumerates the volume system's partitions and their offsets so a caller can pick the right one before descending into it

Will my FAT-parsing results change if I upgrade to the latest release?

now parses FAT volumes with a different back-end by default, so file listings or metadata pulled from FAT volumes can differ from what an older setup produced on the same image

What kind of storage object am I actually holding when my code walks a path?

tags every resolved object with a type indicator naming its format, so code can branch on whether it has a volume, a stream or a file system entry rather than guessing

all 3 features, with the evidence for each →

Languages

Not documented

Features

3 capabilities

Built from dfvfs's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

  • dfvfs covers 1 of the 8 investigation and response capabilities we track.
Disk and filesystem forensics 3 features Investigation and response since 2026
Keramics file-system parsing documented Parses Keramics file-system volumes, using pykeramics as the back-end, with support for file I/O, path specifications, attributes, directories, file entries, and resolver helpers. 6 other sources · first seen Oct 2026

Shared capability: Disk and filesystem forensics

docs

  • dfvfs.file_io.keramics_file_io module The Keramics file-like object implementation. dfvfs.file_io.keramics_file_io. KeramicsFile File input/output (IO) object using pykeramics.VfsDataStream. IOError IOError IOError IOError docs update · Oct 2026 · source
  • dfvfs.file_io.keramics_file_io dfvfs.path.keramics_path_spec dfvfs.resolver_helpers.keramics_resolver_helper dfvfs.vfs.keramics_attribute dfvfs.vfs.keramics_directory dfvfs.vfs.keramics_file_entry dfvfs.vfs.keramics_file_system docs update · Oct 2026 · source
  • (dfvfs.file_io.keramics_file_io.KeramicsFile method) (dfvfs.path.keramics_path_spec.KeramicsPathSpec method) (dfvfs.vfs.keramics_attribute.KeramicsExtendedAttribute method) (dfvfs.vfs.keramics_directory.KeramicsDirectory method) (dfvfs.vfs.keramics_file_entry.KeramicsFileEntry method)… docs update · Oct 2026 · source
  • dfvfs.path.keramics_path_spec module The Keramics path specification implementation. dfvfs.path.keramics_path_spec. KeramicsPathSpec Keramics path specification. KERAMICS docs update · Oct 2026 · source
  • dfvfs.vfs.keramics_attribute module The Keramics attribute implementation. dfvfs.vfs.keramics_attribute. KeramicsExtendedAttribute pykeramics_extended_attribute Keramics extended attribute that uses pykeramics. docs update · Oct 2026 · source
  • dfvfs.resolver_helpers.keramics_resolver_helper module The Keramics path specification resolver helper implementation. dfvfs.resolver_helpers.keramics_resolver_helper. KeramicsResolverHelper Keramics resolver helper. KERAMICS docs update · Oct 2026 · source
FAT file-system parsing shipped Parses FAT file-system volumes, using pyfsfat as the default back-end. 2 releases · 3 other sources · first seen Jul 2026

Shared capability: Disk and filesystem forensics

release

  • Promotes pyfsfat to the default back-end for FAT file-system parsing, replacing the previous default. 20260717 · Jul 2026 · source · release history
  • pyfsfat is now the default FAT back-end; setups relying on the previous default FAT back-end behavior may see differences in FAT volume parsing on upgrade. 20260717 · Jul 2026 · source · release history

docs

  • dfvfs.lib.tsk_time module The SleuthKit (TSK) timestamp. dfvfs.lib.tsk_time. TSKTime DateTimeValues The SleuthKit timestamp. fraction_of_second fraction of second, which is an integer that contains the number 100 nanoseconds before Sleuthkit 4.2.0 or number of nanoseconds in Sleuthkit 4.2.0 and later. seen Aug 2026 · source
  • (dfvfs.lib.tsk_time.TSKTime method) CopyFromDateTimeString() (dfvfs.lib.tsk_time.TSKTime method) CopyToDateTimeString() (dfvfs.lib.tsk_time.TSKTime method) CopyToSerializableDict() (dfvfs.lib.tsk_time.TSKTime method) dfvfs.lib.tsk_time fraction_of_second (dfvfs.lib.tsk_time.TSKTime attribute) GetDate()… seen Aug 2026 · source
  • dfVFS provides read-only access to file-system objects from various storage media types and file formats via a generic interface.
Volume path specification with FILETIME and serial number documented Supports path specifications that encode a volume by its creation time (FILETIME) and serial number, as found in SuperFetch databases and Prefetch files. 1 other source

Shared capability: Disk and filesystem forensics

docs

  • | Path with volume creation time (FILETIME) and (volume) serial number (found in SuperFetch database and Prefetch files) | \VOLUME{01d15f816d07b85e-5e6d77ca}\Windows\System32 seen Oct 2026 · source

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for dfvfs, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail dfvfs puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Coverage

Missing something? Tell us

What dfvfs connects to, runs on and detects, read from its release notes and docs. So far: 2 new integrations.

Show

2 changes, tracked since Oct 3, 2026.

  • Oct 32026

    new Keramics path specification resolver helper

    With KeramicsResolverHelper, dfvfs.resolver_helpers.keramics_resolver_helper

    dfvfs.resolver_helpers.keramics_resolver_helper module The Keramics path specification resolver helper implementation. dfvfs.resolver_helpers.keramics_resolver_helper. KeramicsResolverHelper Keramics resolver helper. 'KERAMICS'

    Source ↗

  • Oct 32026

    new Keramics path specification

    With KeramicsPathSpec, dfvfs.path.keramics_path_spec

    dfvfs.path.keramics_path_spec module The Keramics path specification implementation. dfvfs.path.keramics_path_spec. KeramicsPathSpec Keramics path specification. 'KERAMICS'

    Source ↗

How we count

Read from 4 of 7 release notes and docs updates we hold for dfvfs. "First seen" is the earliest note that names something; "last" is the latest. Our history may start partway through dfvfs's life, so an old integration can show a recent first-seen date.

Each change counts once: "added 40 checks" is one line, so the numbers measure how often coverage moves, not how big the catalogue is or how well it detects.

Releases

Show
Coverage in all entries

7 entries

  1. October 20266
  2. July 20261
    Show
    Coverage in all entries

    7 entries

    Project health

    Issue, contributor and maintainer activity in log2timeline/dfvfs, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 1 ±0 vs prior 12 months
    2. Maintainers 1 +0 joined · −0 left, last 12 months
    3. Bus factor 1 committers behind half the commits
    4. Community-filed 33% of issues opened, last 12 months
    5. Median time to close 3 years first maintainer reply 0.7 hours
    6. Open backlog 78 of 233 issues ever filed
    1. Issues opened / month 0 · 0 communitymaintainers
    2. Open backlog 78
    3. Contributors / month 1
    4. Commits / month 1
    5. Stars 220
    Issue themes, last 12 months
    • features 33%
    • other 67%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    None of its release's images build from a lockfile we can read.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →