SQLite Rollback Journal
| Format | SQLite Rollback Journal |
|---|---|
| Kurzname | SQLite Journal |
| Kategorie | Datenbank |
| Plattformen | Windows, macOS, Linux, iOS, Android, QNX |
| Crush Unterstützung | Unterstützt (SQLiteJournalParser) |
| Status | Überprüft |
| Zuletzt überprüft | 2026-10-04 |
Forensische Relevanz
Legacy-Begleitdatei (vor WAL) für eine SQLite-Datenbank im journal_mode DELETE/TRUNCATE/PERSIST. Enthält den Inhalt vor der Transaktion für jede Page, die eine noch offene oder durch einen Absturz unterbrochene Transaktion berührt hat, damit SQLite einen unvollständigen Schreibvorgang beim nächsten Öffnen zurückrollen kann. Anders als bei -wal ist das der *alte* Page-Inhalt, nicht der aktuelle. Forensisch bedeutet das das Gegenteil: Die aktuellen Pages der Datenbankdatei auf dem Datenträger zu den Page-Nummern eines Hot Journals sind der unterbrochene, nie committete Schreibvorgang, und das Journal selbst enthält das, was ein ordnungsgemäßer Rollback wiederherstellt. Eine vorhandene Journal-Datei mit genulltem/ungültigem Header (der PERSIST-Modus behält die Datei nach jedem Commit, nullt aber ihren Header) ist veraltet, nicht hot. Sie darf nicht zurückgerollt werden, aber die Page-Datensätze nach dem genullten Header können noch ältere Page-Versionen enthalten, bis die nächste Transaktion sie überschreibt. Header (in der Spezifikation des SQLite-Dateiformats dokumentiert): 8-Byte-Magic (d9 d5 05 f9 20 a1 63 d7), Anzahl der Page-Datensätze, Prüfsummen-Nonce, Datenbankgröße vor der Transaktion in Pages, Sektorgröße, Page-Größe, danach null oder mehr Datensätze (Page-Nummer + Page-Inhalt + Prüfsumme), möglicherweise über mehrere Header-Segmente wiederholt. Gelöschte Zeilen und Unallocated-Slack innerhalb einer Page im Journal lassen sich genauso wiederherstellen wie in einer Page einer aktiven Datenbank (Freeblock-Kette, Lücke im Page-Content-Bereich).
Signaturen
| Offset | Hex | ASCII (nicht druckbar als .) | Beschreibung |
|---|---|---|---|
| Offset 0 (0x0) | D9 D5 05 F9 20 A1 63 D7 | .... .c. | Magic des SQLite-Rollback-Journals |
Bekannte Dateiendungen
-journal, .db-journal
Referenzen
- SQLite rollback journal format (SQLite file format specification, section 4.1) https://www.sqlite.org/fileformat2.html#rollbackjournal
- SQLite journal_mode pragma (DELETE, TRUNCATE, PERSIST, MEMORY) https://www.sqlite.org/pragma.html#pragma_journal_mode
- SQLite file format specification (main database, for page-level context) https://www.sqlite.org/fileformat.html
- What Hides in the WAL — SQLite Forensics with crush (beBinary) https://bebinary4n6.blogspot.com/2026/05/what-hides-in-wal-sqlite-forensics-with.html
Diesen Eintrag zitieren
Crush-Format-Referenz, „SQLite Rollback Journal“. https://kalink0.github.io/crush-forensics/formats/de/sqlite-journal/ — 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