AutoTimeliner

March 5, 2026 · View on GitHub

Automagically extract forensic timeline from volatile memory dumps.

Python Volatility3 License: MIT

AutoTimeliner runs multiple Volatility3 plugins against Windows, Linux, and macOS memory images, then merges their output into a single, sorted CSV timeline:

Generic Timeline Plugin

PluginWhat it captures
timelinerCross-plugin timestamp events (all OS families when supported)

Windows Plugin Set

PluginWhat it captures
timelinerTimestamps from processes, registry, handles, etc.
mftscanMFT file entries found in memory
shellbagsUser folder-access history from registry hives

Linux Plugin Set

PluginWhat it captures
linux.pslistProcess start/exit timeline context
linux.bashShell command history evidence
linux.lsofOpen file evidence from processes

macOS Plugin Set

PluginWhat it captures
mac.pslistProcess start/exit timeline context
mac.bashShell command history evidence
mac.lsofOpen file evidence from processes

Windows Process & Execution Analysis

PluginWhat it captures
psscanActive, terminated, and hidden processes with timestamps
cmdlineCommand-line arguments for each process
userassistProgram execution evidence from Windows registry

Windows Network Analysis

PluginWhat it captures
netscanNetwork connections with creation timestamps

Windows Malware Detection

PluginWhat it captures
malfindCode injection and suspicious memory regions
svcscanWindows services (useful for persistence detection)

Additional Windows Plugins (opt-in)

PluginWhat it captures
dlllistDLLs loaded by each process
filescanFiles open in memory at acquisition time
handlesOpen handles (files, registry keys, mutexes)
envarsEnvironment variables for processes

Requirements

DependencyVersionNotes
Python≥ 3.9
Volatility3≥ 2.5installed automatically via Poetry/pip
jsonschema≥ 4.0enables Volatility3 schema validation and avoids Dependency for validation unavailable: jsonschema warning
mactimeanyoptional — only needed for --use-mactime legacy mode

AutoTimeliner identifies the memory image family automatically and enables the appropriate plugin set for Windows, Linux, or macOS. For faster startup you can pass --os-hint to skip automatic detection.


Installation

git clone https://github.com/andreafortuna/autotimeliner.git
cd autotimeliner
poetry install

With pip

pip install .

Usage

autotimeliner -f IMAGEFILE [-t TIMEFRAME] [-o OUTPUT] [options]

Options

FlagDescription
-f, --imagefileMemory dump file or glob (e.g. '*.raw')
-t, --timeframeFilter to YYYY-MM-DD..YYYY-MM-DD range
-o, --outputOutput CSV path (default: <imagefile>-timeline.csv)
--os-hintForce image OS family (windows, linux, mac; aliases: win, macos, darwin) and skip auto-identification
--skip-timelinerSkip the timeliner plugin
--skip-mftscanSkip the mftscan plugin
--skip-shellbagsSkip the shellbags plugin
--skip-psscanSkip process scanning
--skip-cmdlineSkip command-line extraction
--skip-netscanSkip network connection scanning
--skip-userassistSkip program execution evidence
--skip-svcscanSkip Windows services scanning
--skip-malfindSkip malware/injection detection
--with-dlllistEnable DLL analysis (slow)
--with-filescanEnable open files scanning (many records)
--with-handlesEnable handle scanning (many records)
--with-envarsEnable environment variables extraction
--use-mactimeLegacy mode: use external mactime binary
-v, --verboseEnable debug logging
--versionPrint version and exit

Examples

Extract a full timeline from a single image:

autotimeliner -f TargetServer.raw

Filter to a specific time window:

autotimeliner -f TargetServer.raw -t 2023-10-17..2023-10-21

Process all .raw files in a directory, specifying output path:

autotimeliner -f './*.raw' -o /evidence/timeline.csv

Speed up startup when you already know the dump OS:

autotimeliner -f TargetServer.raw --os-hint windows

Use macOS alias values for convenience:

autotimeliner -f MacbookCapture.mem --os-hint darwin

Run only timeliner and shellbags (skip MFT scan):

autotimeliner -f TargetServer.raw --skip-mftscan

Full forensic scan (Windows plugin set + optional extended plugins):

autotimeliner -f TargetServer.raw --with-dlllist --with-filescan --with-handles --with-envars

Quick malware-focused scan:

autotimeliner -f TargetServer.raw --skip-timeliner --skip-mftscan --skip-shellbags

Linux-focused timeline collection (auto-enables linux plugins):

autotimeliner -f UbuntuWorkstation.mem

macOS-focused timeline collection (auto-enables macOS plugins):

autotimeliner -f MacbookCapture.mem

Output

The output CSV has the following columns:

ColumnDescription
Timestamp (UTC)ISO 8601 UTC timestamp
SourcePlugin that produced the record
DescriptionFile name, path, process, or registry key
DetailTimestamp type, user, or extra context
InodeMFT inode number (where applicable)
UID / GIDUser/group identifiers
SizeFile size in bytes
ModeFile mode string

Identification Performance

AutoTimeliner includes several optimizations to reduce identification time:

  • --os-hint bypasses automatic OS probing entirely.
  • Probe order is optimized using filename hints (for example linux, ubuntu, macos).
  • Identification results are cached per image key (path + size + mtime).

Cache file:

~/.cache/autotimeliner/volatility3/.autotimeliner_profile_cache.json

During detection, logs include probe progress and result messages such as:

OS probe attempt: family=windows plugin=windows.info.Info
OS probe returned no rows: windows.info.Info
Memory image identification succeeded: os=linux profile=linux:... probe=linux.banners.Banners

Migrating from v1 (Volatility2)

See docs/migration.md for a full comparison.

Key changes:

  • Volatility3 profile identification — AutoTimeliner performs a best-effort OS/profile probe via Volatility3 plugins.
  • Automatic symbol tables setup — Windows/macOS/Linux symbol packs are downloaded and installed automatically.
  • -p / --customprofile is deprecated — it is silently ignored.
  • mftparsermftscan — same data, new plugin name.
  • No body files written to disk — data flows through Python directly to CSV.
  • mactime is now optional — use --use-mactime for the old body-file workflow.

Development

poetry install
poetry run pytest

License

MIT — see LICENSE.

Author

Andrea Fortuna — andrea@andreafortuna.organdreafortuna.org