Skip to main content

Interactive platform for identifying and analyzing data structures in memory dumps

Project description

MemDiver MemDiver logo: a diver descending toward a golden key inside a teal memory blob

Interactive platform for identifying and analyzing data structures in memory dumps.

CI status on main PyPI version Supported Python versions License Apache-2.0 Documentation MCP enabled

MemDiver workspace with an MSL capture loaded — dark theme MemDiver workspace with an MSL capture loaded — light theme

MemDiver workspace with a sample .msl capture loaded — dark and light themes side by side.

MemDiver

MemDiver is a browser-based workbench for exploring binary memory dumps. A FastAPI backend drives a React dockable workspace, with an optional Marimo sandbox for deeper research workflows and an MCP server that exposes the same analysis engine to AI assistants. For automation and integration into existing pipelines, MemDiver also runs in headless mode via a CLI.

It combines known-key search, entropy scanning, change-point detection, structural parsing, and cross-run differential analysis to locate and classify data structures in memory.

Features

  • Interactive workspace — React-based dockable UI for hands-on exploration
  • Research sandbox — Optional Marimo environment for reproducible notebooks and custom analysis
  • AI-assisted analysis — MCP server integration for use with Claude and other assistants
  • Headless mode — CLI interface for CI/CD, batch processing, and integration into forensic pipelines
  • Analysis engine — Known-key search, entropy scanning, change-point detection, structural parsing, and cross-run differential analysis

Install

pip install memdiver                 # web UI + CLI + MCP server (everything runtime-side)
pip install "memdiver[experiment]"   # + frida-tools, memslicer for dump collection
pip install "memdiver[docs]"         # + Sphinx toolchain for building the docs site
pip install "memdiver[dev]"          # + pytest and contributor tooling

LLDB is installed via your operating system — Xcode Command Line Tools on macOS, apt install lldb on Debian/Ubuntu. memdiver experiment exits gracefully with an install hint when no backend is present.

Quick start

# 1. Web app (FastAPI + React SPA, opens on http://127.0.0.1:8080)
memdiver                 # or: memdiver web

# 2. One-shot CLI analysis
memdiver analyze <library_dirs> --phase pre_abort --protocol-version TLS13

# 3. MCP server (stdio transport) — wire into AI assistants
memdiver mcp

# 4. Collect fresh dumps from a target process
memdiver experiment --target path/to/target.py --num-runs 10

# 5. Marimo research sandbox (houses the 5 deeper visualization views)
memdiver ui

At a glance

Surface Count Location
Detection algorithms 8 algorithms/exact_match, entropy_scan, change_point, differential, constraint_validator, user_regex, pattern_match, structure_scan
CLI subcommands 20 cli.py
FastAPI routers 12 + WebSocket api/routers/
MCP tools 15 mcp_server/
Exporters YARA · JSON · Volatility3 architect/
Dump backends memslicer · lldb · fridump (Frida; not friTap) core/dump_driver.py
Visualization views 4 SPA + 5 Marimo research-mode frontend/ + ui/

Under the hood: DuckDB ProjectDB, .memdiver SessionStore, Welford incremental consensus, Aho-Corasick multi-pattern scan, Kaitai Struct binary-format parsers, ASLR-aware region alignment, auto-discovered KDF plugins, BYO decryption oracles, first-class Volatility3 plugin emission.

Wire MemDiver into Claude Desktop / Claude Code

Add this block to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent on your OS:

{
  "mcpServers": {
    "memdiver": { "command": "memdiver", "args": ["mcp"] }
  }
}

Restart the MCP client — the 15 MemDiver tools (scan_dataset, analyze_library, get_entropy, brute_force, emit_plugin, …) appear in the tool picker.

Power-user CLI

All 20 subcommands exposed by cli.py:

Detection & analysis Consensus (Welford) Pipeline (Phase-25) Format conversion Runtime shells
analyze · scan · batch · verify consensus · consensus-begin · consensus-add · consensus-finalize search-reduce · brute-force · n-sweep · emit-plugin export · import · import-dir web · ui · app · mcp · experiment

Run memdiver <cmd> --help for any of them, or see the full CLI reference.

Screenshots

Workspace Hex + overlay Entropy Consensus
Workspace thumbnail Hex viewer thumbnail Entropy profile thumbnail Consensus view thumbnail

Screenshots regenerate deterministically via the Playwright harness under docs/screenshots/. Pipeline shots 09 and 10 use precomputed n-sweep fixtures produced by scripts/precompute_pipeline_fixtures.py against the gocryptfs reference dataset.

Chart backend

The four analysis charts — Entropy, Variance Map, VAS, and the Pipeline Survivor Curve — ship with two interchangeable renderers:

  • Plotly (default) — full interactive experience with pan/zoom/legend-toggle and a ~2.3 MB bundle.
  • SVG — hand-rolled React + SVG with hover tooltips but no pan/zoom, zero runtime dependencies, code-split so users who stay on SVG never download the Plotly chunk.

Switch via Settings → Display → Chart backend. The preference persists per-browser. No reload required. Both backends share the same theme tokens so dark/light/high-contrast behaviour is identical.

Where to go next

Architecture

api/            FastAPI backend — 12 routers + WebSocket, OpenAPI docs at /docs
frontend/       React + Vite SPA (TypeScript, Tailwind, Zustand) — dockable workspace
core/           Stdlib-only data layer (models, discovery, parsing, entropy, KDF, variance, ASLR alignment)
engine/         Differential Engine — ConsensusVector (Welford), SearchCorrelator, DiffStore,
                ProjectDB (DuckDB), SessionStore (.memdiver), oracle loader, Vol3 plugin emission
algorithms/     8 algorithms auto-discovered via pkgutil registry
harvester/      Data ingestion — DumpIngestor, SidecarParser, MetadataStore
architect/      Pattern Architect — static checker + generator + YARA / JSON / Volatility3 exporters
msl/            Memory Slice (.msl) v1.1.0 — hand-rolled container with BLAKE3 integrity chain
mcp_server/     MCP server — 15 tools exposed to AI assistants
ui/             Marimo research sandbox (houses the 5 deeper views) + legacy NiceGUI shell
docs/           Sphinx site (Read the Docs theme), published to GitHub Pages via docs.yml

Release process (maintainers)

  1. Bump version in pyproject.toml and move the [Unreleased] block in CHANGELOG.md under a new version heading.
  2. Commit and tag: git tag vX.Y.Z && git push origin vX.Y.Z.
  3. .github/workflows/publish.yml builds the React bundle, runs python -m build, and publishes to PyPI via OIDC trusted publishing (no token).
  4. .github/workflows/docs.yml rebuilds the Sphinx site and deploys to https://memoryslice.github.io/MemDiver/.
  5. For a pre-release dry run: gh workflow run publish.yml — the workflow_dispatch trigger publishes to test.pypi.org via the testpypi environment.

License

Apache License 2.0 — see LICENSE.

Citation

If MemDiver supports your research, please cite the accompanying IMF conference submission. Author attribution is withheld during double-blind review; this entry will be updated once camera-ready.

@software{memdiver2026,
  author = {Anonymous},
  title  = {MemDiver: Interactive Memory-Dump Structure Analysis},
  year   = {2026},
  url    = {https://github.com/MemorySlice/MemDiver},
  note   = {Artifact accompanying an IMF (IT Security Incident Management \& IT Forensics) conference submission}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

memdiver-0.5.6.tar.gz (2.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

memdiver-0.5.6-py3-none-any.whl (1.9 MB view details)

Uploaded Python 3

File details

Details for the file memdiver-0.5.6.tar.gz.

File metadata

  • Download URL: memdiver-0.5.6.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for memdiver-0.5.6.tar.gz
Algorithm Hash digest
SHA256 eabd7ab5581fb8e11d5cb6795d6fc34c300e28acf3504fe07a8382138d005d6b
MD5 4994903951738a04c034748ae76f5cde
BLAKE2b-256 186ec7ecae44c57b56475952a32d9a1290c7f46f19cbbec08ca164bf9aab1d33

See more details on using hashes here.

Provenance

The following attestation bundles were made for memdiver-0.5.6.tar.gz:

Publisher: publish.yml on MemorySlice/MemDiver

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file memdiver-0.5.6-py3-none-any.whl.

File metadata

  • Download URL: memdiver-0.5.6-py3-none-any.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for memdiver-0.5.6-py3-none-any.whl
Algorithm Hash digest
SHA256 06f4806950f5793ac59d46654ba8f3b902842f3198adcb6356270339fe7d5364
MD5 cb201034ba21530776a6b35a05f31879
BLAKE2b-256 e0c84703c2ca65411a1740374b1a3d72988ed2312f14c2f4ea3be4c92d5ba459

See more details on using hashes here.

Provenance

The following attestation bundles were made for memdiver-0.5.6-py3-none-any.whl:

Publisher: publish.yml on MemorySlice/MemDiver

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page