Kapitel 07 - SQLite PDF
Document Details
Uploaded by EntrancingOnyx2948
Hochschule Niederrhein
Prof. Dr. Fein
Tags
Summary
This document provides an overview of SQLite, its structure, page formats, and practical use cases in a forensic context, including recovery techniques and general concepts. The material is for educational purposes and is likely part of a lecture series or course in databases and forensics offered at Hochschule Niederrhein.
Full Transcript
7.1 SQLITE — EINFÜHRUNG 1 EINLEITUNG ▶ SQLite ist eine von Richard Hipp erstellte Datenbank ▶ Keine Client-Server-Architektur ▶ Läuft auf dem Client...
7.1 SQLITE — EINFÜHRUNG 1 EINLEITUNG ▶ SQLite ist eine von Richard Hipp erstellte Datenbank ▶ Keine Client-Server-Architektur ▶ Läuft auf dem Client ▶ Daten der Datenbank werden in Form von einer Datei abgelegt X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.1 SQLITE — EINFÜHRUNG 2 RELEVANZ ▶ Android und Apple iOS → Mobile OS ▶ Mac und Windows → Desktop OS ▶ Chrome, Firefox, Safari → Browser ▶ … X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 11 DATEIFORMAT ▶ Forensisches Motivation steht im Vordergrund ▶ Aber: Das Verständnis des Dateiformats kann auch bei der Erstellung und Abfrage der Datenbank helfen X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 12 DATEIFORMAT ▶ Eine Datenbank ist eine Sammlung von Tabellen (Tables) ▶ Jedes Table besitzt ein definiertes Format (Schema) ▶ Relational → Tabellen können über (eindeutige) Schlüssel (Keys) miteinander verknüpft sein X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 13 DATEIFORMAT ▶ Idealfall → Normalisierte Datenbank ▶ Normalisierung → Minimierung von Duplikaten und Maximierung von Effizienz und Integrität X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 14 DATEIFORMAT ▶ Ansammlung von Tabellen und Indizes ▶ Nutzung von Binärbäumen (Binary Trees) → B-Trees X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 15 PAGES ▶ Eine SQLite-Datenbank besteht aus einer Anzahl von (meist) gleich großen Einheiten von Daten → Pages ▶ Eine Page ist 2n Bytes groß (z.B. 512 Bytes) ▶ Kleinste Datenbank → 512 Bytes ▶ Größe Datenbank → ≈ 140 TB X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 16 PAGES – TYPEN ▶ B-Tree Page ▶ Overflow Page ▶ Freelist Page ▶ Pointer Map Page ▶ Lock-Byte Page X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 17 PAGES – B-TREE-PAGES B-Tree Pages ▶ Meist vorhandene Art von Pages ▶ Zwei Arten: Table-B-Tree Index-B-Tree ▶ Jeweils zwei Unterarten: Interior Pages Leaf Pages ▶ In B-Tree-Tables sind die aktiven/vorhandenen Inhalte der Datenbank abgelegt ▶ Nicht-allokierte Bereiche auf den Pages X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 20 PAGES – ERSTE PAGE ▶ Datenbank beginnt bereits auf der ersten Page ▶ Die ersten 100 Bytes → Database Header ▶ Danach → Interior oder Leaf Table B-Tree des sqlite_master-Tables ▶ sqlite_master → Table mit Informationen zu jedem Table und jedem Index X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 21 DATABASE HEADER ▶ Die ersten 100 Bytes bestehen aus insgesamt 23 Einträgen ▶ Enthält wichtige strukturelle Daten der Datenbank ▶ Anmerkung (und Abgrenzung): Integer werden in SQLite Big-Endian abgelegt! X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 23 B-TREES ▶ Datenbank besteht aus Tables und Indexes ▶ Benötigen jeweils ein oder mehrere Pages ▶ Eine Page gehört nicht zu verschiedenen Tables bzw. Indexes ▶ Zum Ablegen der Daten wird ein B-Tree genutzt X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 24 TABLE: SQLITE_MASTER ▶ Jede Datenbank besitzt eine sqlite_master-Table ▶ Beginnt in der ersten Page (nach dem Header) ▶ Beinhaltet Daten zu jeder Table in der Datenbank ▶ Beinhaltet: Typ Name Name (Bezug) Root Page → Anfang SQL-Statement der Erstellung X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 25 B-TREE – INTERIOR UND LEAF PAGES ▶ Die Struktur der B-Trees wird mit Hilfe von Interior und Leaf Pages realisiert ▶ Es existiert exakt eine Root Page am Anfang des Tables X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 26 B-TREE – INTERIOR UND LEAF PAGES Interior Pages ▶ Beinhalten Verweise (Pointer) auf weitere Pages ▶ Pointer können auf weitere Interior oder Leaf Pages zeigen Leaf Pages ▶ Beinhalten die eigentlichen Daten, die in der Datenbank abgelegt sind ▶ Ausnahme: WITHOUT_ROWID-Tables X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 27 B-TREE – INTERIOR UND LEAF PAGES ▶ Größere Tables besitzen eine komplexe Struktur aus Interior und Leaf Pages ▶ Wenn Daten innerhalb der Datenbank verändert werden, können Pages hinzugefügt oder gelöscht werden ▶ Einträge in den Pages können auch intern kopiert werden X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 28 B-TREE – AUFBAU VON INTERIOR UND LEAF PAGES ▶ Page Header ▶ Cell Pointer Array ▶ Cells (Cell Header + Cell Payload) ▶ Free Blocks X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 29 B-TREE – PAGE HEADER ▶ Flag (1 Byte) 0x02 → Interior Index 0x05 → Interior Table 0x0A → Leaf Index 0x0D → Leaf Table ▶ Erster Free Block (2 Bytes) ▶ Anzahl der allokierten Cells (2 Bytes) ▶ Offset zum ersten Eintrag (2 Bytes) ▶ Anzahl der Fragmente in Bytes (1 Bytes) ▶ Verweis ganz rechts (4 Bytes, nur Interior) X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 30 BEISPIEL EINES HEADERS b d z}| { z }| { 0D |{z} 0000 0001 |{z} 0FAC |{z} 00 a c e a = (0D)16 → Leaf Table b = (0000)16 = (0)10 → keine Free Blocks c = (0001)16 = (1)10 → eine besetzte Cell d = (0FAC)16 = (4012)10 → erster Eintrag an Offset 4012 e = (00)16 = (0)10 → 0 Bytes Fragment X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 31 VARINTS ▶ Abspeichern von Integern mit variabler Länge (1 Byte bis 9 Bytes) ▶ Zweierkomplement (Twos-Complement) → Effiziente Speicherung kleiner positiver Zahlen ▶ Genutzt für: Bytelängen, ROWID, Typen von Einträgen ▶ Existiert auch für negative Werte (ineffizient) X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 32 VARINTS ▶ Steuerungszeichen → höchstwertigstes Bit 1 → Es folgt noch mindestens ein weiteres Byte 0 → Letztes Byte ▶ Integer wird über die jeweils 7 niedrigwertigsten Bits gebildet X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 33 POSITIVER VARINT 1111010 z }| { 10000101 | {z } 11111010 01011011 | {z } 0000101 1011011 → 0000101 1111010 1011011 → 00000001 01111101 01011011 = (01 7D 5B)16 = (97627)10 X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 34 CELL POINTER ARRAY ▶ Nach dem Header folgt der sog. Cell Pointer Array ▶ Beinhaltet pro genutzter Cell einen 2 Byte großen Pointer ▶ Pointer → Offset vom Anfang der Page ▶ Anzahl der allokierten Cells ist im Page Header gegeben → Gesamtgröße des Cell Point Arrays X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 35 STRUKTUR EINES EINTRAGS ▶ Die Einträge im Cell Pointer Array zeigen auf Einträge innerhalb der Page → Records ▶ Layout der Einträge ist davon abhängig, welche Art von Page vorliegt: Interior Table Leaf Table Interior Index Leaf Index X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 36 AUFBAU DER INTERIOR UND LEAF TABLE RECORDS Interior Table Record ▶ Pointer auf linken Kindsknoten (Varint) ▶ Integer Key / ROWID (Varint) Leaf Table Record ▶ Länge des Payloads (Varint, inkl. Overflow) ▶ Integer Key / ROWID (Varint) ▶ Payload (variable Länge) ▶ Pointer auf Overflow Page (4 Bytes, nur wenn notwendig) X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 38 LEAF TABLE RECORD Payload Len ROWID Payload Overflow Page X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Abbildung in Anlehnung an Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 42 LEAF TABLE RECORD ▶ Aufbau: Länge des Payloads (Varint, inkl. Overflow) Integer Key / ROWID (Varint) Payload (variable Länge) Pointer auf Overflow Page (4 Bytes, nur wenn notwendig) ▶ Payload besteht aus: Kopf (Payload Header) Inhalt (Payload Body) X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 43 LEAF TABLE RECORD Payload Header ▶ Länge des Payload Headers (Varint) ▶ Typ jeder Spalte des Eintrags (je ein Varint) → Typ und Größe eines Attributs (Serial Type) Payload Body ▶ Die abgelegten Attribute ▶ In der Reihenfolge des Payload Headers X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 44 ATTRIBUTTYPEN Typ Größe (Bytes) Beschreibung 0 0 NULL 1 1 Integer als Zweierkomplement 2 2 Integer als Zweierkomplement 3 3 Integer als Zweierkomplement 4 4 Integer als Zweierkomplement 5 6 Integer als Zweierkomplement 6 8 Integer als Zweierkomplement X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 45 ATTRIBUTTYPEN Typ Größe (Bytes) Beschreibung 7 8 64-bit IEEE Float 8 0 Integer 0 9 0 Integer 1 10, 11 nicht genutzt N>=12 (gerade) (N-12)/2 BLOB N>=13 (ungerade) (N-13)/2 String X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 47 LEAF TABLE RECORD Payload Record Len Serial Types Data Payload Len ROWID Record Len Null txt12...... X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Abbildung in Anlehnung an Sanderson (2018) 7.3 SQLITE — DATEIFORMAT 49 INTERIOR TABLE PAGES ▶ Aufbau eines Eintrags: Verweis auf linke Page (4 Bytes) Höchster Key (z.B. ROWID) auf der linken Page ▶ Einträge sind aufsteigend sortiert X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.4 SQLITE — RECORD RECOVERY 52 EINFÜHRUNG ▶ Die Wiederherstellung von Daten in SQLite-Datenbanken ist abhängig davon, wieviel bzw. was von einem Eintrag übrig geblieben ist ▶ Möglichkeiten: Intakte Struktur → Cell Pointer Array ist intakt und zeigt auf vorhandene Struktur Verwaiste Einträge → Vollständiger Record, aber ohne Eintrag im Cell Pointer Array Partielle Einträge → Eintrag ist am Anfang mit Freeblock-Header überschrieben ▶ Es sollte klar sein, dass ein wiederhergestellter Eintrag immer noch „live“ innerhalb der Datenbank vorhanden sein kann X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.4 SQLITE — RECORD RECOVERY 54 ALLGEMEINES KONZEPT 1. Start eines Eintrags finden 2. Typen und Werte dekodieren 3. Abgleich mit vorhandenen Tabellen 4. Eintrag in eine Arbeitskopie einfügen X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.4 SQLITE — RECORD RECOVERY 56 INTAKTE STRUKTUR ▶ Vorraussetzung: Leaf Page (Flag 0x0D) Verwaiste Page, also nicht mehr Teil einer Tabelle (z.B. durch Reorganisation) Cell Pointer Array ist intakt ▶ Aufgabe: Table zu den Records identifizieren X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.4 SQLITE — RECORD RECOVERY 57 INTAKTE STRUKTUR 1. Ersten Eintrag im Cell Pointer Record finden 2. Record und dazugehörigen Payload analysieren 3. Mit vorhandenen Tables abgleichen X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.4 SQLITE — RECORD RECOVERY 58 VERWAISTE EINTRÄGE ▶ Vorraussetzung: Kein Eintrag im Cell Pointer Record ▶ Aufgabe: Record und das dazugehörige Table identifizieren X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.4 SQLITE — RECORD RECOVERY 59 VERWAISTE EINTRÄGE 1. Über alle nicht-allokierten Bytes iterieren 2. Für jedes potenzielle Start-Byte prüfen, ob ein korrekter Record vorhanden ist, der zu einem Table passt X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.4 SQLITE — RECORD RECOVERY 60 VERWAISTE EINTRÄGE – SERIAL TYPE ARRAY NICHT KORREKT (102)10 ROWID... 76 66 00... (118)10 118 Byte Länge (0)10 0 Byte für Serial Types X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.4 SQLITE — RECORD RECOVERY 61 VERWAISTE EINTRÄGE – SERIAL TYPE ARRAY NICHT KORREKT ▶ Anfang an nicht-allokierten Byte ▶ Länge des Payloads möglich (pos. VARINT) ▶ ROWID möglich (pos. VARINT) ▶ Aber: Anzahl der Bytes des Serial Type Arrays ist 0x00 → nicht möglich X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.4 SQLITE — RECORD RECOVERY 62 VERWAISTE EINTRÄGE – SERIAL TYPE ARRAY NICHT KORREKT (49)10 String mit (49 − 13)/2 Byte (26)10 (8)10 ROWID Integer 0... 2C 1A 05 31 08 08 03... (44)10 (8)10 44 Byte Länge Integer 0 (5)10 (3)10 5 Byte Serial Types Integer mit 3 Byte Rechnung: (5 + 18 + 0 + 0 + 3) Bytes = 26 Bytes ̸= 44 Bytes X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.4 SQLITE — RECORD RECOVERY 63 VERWAISTE EINTRÄGE – LÄNGE DER SERIAL TYPES ZU GROSS ▶ Anfang an nicht-allokierten Byte ▶ Eintrag könnte korrekt sein (wenn text, int, int, int in einer Tabelle definiert sind) ▶ Angegebene Länge des Payloads größer als notwendig X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.4 SQLITE — RECORD RECOVERY 64 VERWAISTE EINTRÄGE – (FAST) KORREKTER EINTRAG ▶ Ein Eintrag kann erfolgreich wiederhergestellt werden ▶ Aber: Wert ist NULL für Attribut, das mit NOT NULL gesetzt wurde → Passt nicht zum Schema des Tables X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.4 SQLITE — RECORD RECOVERY 68 PARTIELLE EINTRÄGE ▶ Überschriebene Teile eines Records können bei der Wiederherstellung Probleme bereiten → Freeblock ▶ Aber: Nach dem Löschen werden nur die ersten vier Bytes mit einem Freeblock-Header überschrieben: Pointer zum nächsten Freeblock (2 Bytes) Länge des aktuellen Freeblocks (2 Bytes) ▶ Durch das Überschreiben wird dieser Eintrag zu einem partiellen Eintrag X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.4 SQLITE — RECORD RECOVERY 69 PARTIELLE EINTRÄGE ▶ Es können aufgrund der VARINTs am Anfang eines Eintrags unterschiedliche Teile überschrieben worden sein ▶ Möglichkeiten: Nur die Länge des Payloads Kombination aus Länge des Payloads und ROWID Länge des Payloads, ROWID und weitere Daten des Headers ▶ Die Wiederherstellung ist also davon abhängig, wie das Schema des Tables ist (und wie viele Einträge vorhanden sind) X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.4 SQLITE — RECORD RECOVERY 70 PARTIELLE EINTRÄGE – AUFBAU EINES EINTRAGS Payload → Serial Types → Payload Len ROWID Record Len 1st Serial Type 2nd Serial Type X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Abbildung in Anlehnung an Sanderson (2018) 7.5 SQLITE — ROLLBACK JOURNALS 71 EINFÜHRUNG ▶ Die Datenbank selbst wird bei SQLite in einer einzigen Datei abgelegt ▶ Zur aktiven Datenbank können aber auch weitere Dateien gehören, z.B. Journals und Write Ahead Logs ▶ In diesem Kapitel → Rollback Journals X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.5 SQLITE — ROLLBACK JOURNALS 72 EINFÜHRUNG ▶ SQLite ist eine Transaktions-Datenbank → Veränderungen werden in Gruppen gesammelt und anschließend übergeben (sog. commit) ▶ Die kleinste Veränderung innerhalb der Datenbank betrifft immer mindestens eine Page ▶ Ein Commit kann auch hunderte Pages betreffen X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.5 SQLITE — ROLLBACK JOURNALS 73 HERAUSFORDERUNGEN ▶ Absturz der Software ▶ Absturz des Betriebssystems ▶ Stromausfall X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.5 SQLITE — ROLLBACK JOURNALS 78 ANSATZ ▶ Bevor eine Transaktion ausgeführt wird → Kopieren der betroffenen Page in das Rollback Journal ▶ Mit Hilfe des journal_mode wird bestimmt, wie ein Journal als ungültig erklärt wird ▶ Modi mit PRAGMA journal_mode =...: DELETE (Standard, löscht das Journal) TRUNCATE (Dateilänge wird auf 0 gesetzt) PERSIST (Journal wird nicht gelöscht, aber Header gewiped) X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.5 SQLITE — ROLLBACK JOURNALS 80 SEQUENZ EINER TRANSAKTION 1. Neue oder veränderte Pages können in die Datenbank geschrieben werden 2. Journal Header wird geschrieben 3. Page ohne Veränderungen werden in das Journal kopiert (mit Checksumme,...) 4. Neue Pages werden in die DB geschrieben 5. Wenn erfolgreich → Journal wird als ungültig markiert 6. Wenn nicht erfolgreich → Kopieren der gesicherten Page in die DB X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.6 SQLITE — WRITE-AHEAD LOGS 81 EINFÜHRUNG ▶ Write-Ahead Logs (WALs) → Änderungen in Form eines Caches ▶ Generell sind WAL schneller als Rollback Journals ▶ Auch mehrere Transaktionen können in das WAL eingetragen werden X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.6 SQLITE — WRITE-AHEAD LOGS 82 EINFÜHRUNG ▶ Alle Transaktionen werden im WAL durchgeführt ▶ Beschreiben der Datenbank nur an sog. Checkpoints ▶ Mögliche Checkpoints: > 1000 Pages Manuell durch Nutzer ausgelöst Nach dem Beenden ▶ WAL-Dateien → -wal am Ende des Dateinamens (test.db → test.db-wal) X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.6 SQLITE — WRITE-AHEAD LOGS 87 PRAKTISCHER EINSATZ 1. Start der Transaktion 2. Veränderte Pages werden in WAL hinzugefügt (DB unberührt) 3. Weitere Pages werden in WAL hinzugefügt (DB unberührt) 4. Commit der Transaktion → Commit-Frame X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.6 SQLITE — WRITE-AHEAD LOGS 88 PRAKTISCHER EINSATZ 5. Start einer neuen Transaktion 6. Veränderte Pages werden in WAL hinzugefügt (DB unberührt) 7. Weitere Pages werden in WAL hinzugefügt (DB unberührt) 8. Commit der Transaktion → Commit-Frame 9. Checkpoint (> 1000 Pages oder über Befehl) → Die aktuellsten Pages werden in die DB geschrieben X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018) 7.6 SQLITE — WRITE-AHEAD LOGS 89 PRAKTISCHER EINSATZ 10. Neue Transaktionen werden jetzt wieder an den Anfang des WAL geschrieben (Header aktualisiert, Daten nicht gewiped) 11. Software wird geschlossen → Checkpoint und Löschen der WAL-Datei X Theoretische Grundlagen zu forensischen Methoden | Hochschule Niederrhein | Wintersemester 2024/2025 | Prof. Dr. Fein Inhalt aus Sanderson (2018)