LMDB / libmdbx Database
| Format | LMDB / libmdbx Database |
|---|---|
| Kurzname | LMDB |
| Kategorie | Datenbank |
| Plattformen | Windows, macOS, Linux, iOS, Android |
| Crush Unterstützung | Noch nicht unterstützt |
| Status | Überprüft |
| Zuletzt überprüft | 2026-10-06 |
Forensische Relevanz
Memory-mapped Key-Value-Store, aufgebaut als Copy-on-Write-B+-Tree. LMDB und dessen Ableger libmdbx teilen das Design, sind aber nicht dateikompatibel. Ein Environment besteht aus einer Datendatei und einer Lock-Datei: data.mdb und lock.mdb in einem Verzeichnis (LMDB), mdbx.dat und mdbx.lck (libmdbx) oder im Einzeldateimodus ein beliebiger Dateiname mit einer Lock-Datei mit dem Suffix -lock (LMDB) bzw. -lck (libmdbx). Im Einzeldateimodus hat die Datendatei oft gar keine Endung, daher ist die Meta-Page-Signatur der verlässliche Indikator. Die Datendatei beginnt mit zwei (LMDB) bzw. drei (libmdbx) Meta Pages mit der Signatur, der ID der letzten committeten Transaktion und den Roots des Free-Page-Trees und des Main Trees; benannte Sub-Datenbanken sind Einträge des Main Trees. Von einer Transaktion freigegebene Pages werden im Free-Page-Tree verwaltet und später wiederverwendet, daher können gelöschte und überschriebene Datensätze in nicht mehr referenzierten Pages erhalten bleiben, und die älteren Meta Pages verweisen auf frühere committete Zustände. Die Lock-Datei enthält nur die Reader Table und keine Datensätze. Header-Felder verwenden die Byte-Reihenfolge des erstellenden Systems (Little-Endian auf gängigen Plattformen). In LMDB 0.9 hängt der Offset der Signatur von der Größe der Page-Nummer des Builds ab: 16 bei 64-Bit, 12 bei 32-Bit. Verwendet von OpenLDAP und vielen eingebetteten Anwendungen, z. B. Monero-Node-Daten (lmdb/data.mdb), Ethereum-Clients wie Erigon und Reth (libmdbx) und Flutter-Apps mit Isar (siehe Isar Database).
Signaturen
| Offset | Hex | ASCII (nicht druckbar als .) | Beschreibung |
|---|---|---|---|
| Offset 16 (0x10) | DE C0 EF BE 01 00 00 00 | ........ | LMDB-0.9-Meta-Page: Magic 0xBEEFC0DE und Datenversion 1 (Little-Endian, 64-Bit-Build) |
| Offset 12 (0xC) | DE C0 EF BE 01 00 00 00 | ........ | LMDB-0.9-Meta-Page: Magic 0xBEEFC0DE und Datenversion 1 (Little-Endian, 32-Bit-Build) |
| Offset 20 (0x14) | 03 11 4C EF BD 9D 65 59 | ..L...eY | libmdbx-Meta-Page: 56-Bit-Magic 0x59659DBDEF4C11 mit Datenversion 3 (Little-Endian) |
Bekannte Dateiendungen
.mdb, .dat
Referenzen
- LMDB 0.9 source: meta page, magic, file names (mdb.c) https://github.com/LMDB/lmdb/blob/mdb.RE/0.9/libraries/liblmdb/mdb.c
- libmdbx 0.12.4 internals: magic, data version, page header (source) https://github.com/isar/libmdbx/blob/v0.12.4/src/internals.h
- libmdbx (GitHub mirror) https://github.com/erthink/libmdbx
Diesen Eintrag zitieren
Crush-Format-Referenz, „LMDB / libmdbx Database“. https://kalink0.github.io/crush-forensics/formats/de/lmdb/ — Quelle: crush/data/build_formats_db.py zum Commit 640a2a9928f4e36a976b89901512a8dce824d093, erstellt 2026-10-21 06:46:19 UTC.
Eintrag in der Quelldatei bei diesem Commit · Änderungshistorie der Quelle · Korrektur melden