Innledning
SQLite-databaser er skattekister med digitale bevis som finnes i mange apper, fra chat-meldinger til transaksjonslogger. Men hva skjer når poster slettes? Gå inn i Freeblocks-skjulte deler av ubrukt plass på databasesider som inneholder rester av slettede data. Disse freeblockene er en gullgruve for kriminalteknikere, og gjør det mulig å gjenopprette kritiske poster og avdekke skjulte bevis.
Denne bloggen avmystifiserer SQLite-freeblocks og går gjennom hvordan de fungerer, hvordan du finner dem med verktøy som hex-editorer, og hvordan du gjenoppretter slettede poster. Enten du er etterforsker eller en entusiast innen digital kriminalteknikk, vil denne guiden utstyre deg med viktige teknikker for å hente ut skjulte data.
Hva er Freeblocks i SQLite?
Freeblocks er deler av ubrukt plass på en SQLite-databaseside. Når en post slettes, overskrives ikke den tilsvarende plassen umiddelbart med mindre en sikker slettingsmekanisme er aktivert. I stedet blir den merket som en freeblock, tilgjengelig for fremtidige skriverier.
I denne prosessen
- Pekeren til den slettede posten fjernes.
- Sidetoppteksten oppdateres for å gjenspeile fjerningen.
- Hvis det er aktuelt, justeres forskyvningen som peker mot den første friblokken.
Disse freeblockene inneholder ofte rester av de opprinnelige dataene, noe som gjør dem til et kritisk fokus for rettsmedisinske etterforskere som ønsker å gjenopprette slettede oppføringer.
Eksempel:
I skjermbildet nedenfor undersøker vi en SQLite-database ved hjelp av DB Browser. Tabellen "messages" viser to aktive poster, men kriminaltekniske spor tyder på at det finnes flere slettede poster.

Hvordan Freeblocks passer inn i SQLite-sideoverskrifter
For å finne og analysere freeblocks må vi først forstå strukturen til SQLite-databasesidene. Hver side inneholder en topptekst som inneholder viktige metadata, inkludert pekere til freeblocks.
Tabellen nedenfor viser topptekststrukturen for en 0D-sidetype:
Offset | Størrelse | Beskrivelse |
---|---|---|
0 | 1 byte | Sidetype |
1 | 2 Bytes | Byteoffset til den første friblokken |
3 | 2 Bytes | Antall celler på siden |
5 | 2 Bytes | Offset til første byte av celleinnholdet |
7 | 1 byte | Antall fragmenterte frie byte i celler |
Det viktigste å ta med seg:
Verdien ved offset 1 i sidehodet peker til den første friblokken. Hvis denne verdien er 0x0000
er det ingen freeblocks på siden.
Bruke hex-editorer til å analysere friblokker
For å finne den første friblokken åpner vi databasen i en hex-editor. Den to byte store verdien ved offset 1 i sideoverskriften gir offset til friblokkens plassering.
I eksempelet nedenfor:
- Hex-redigeringsprogrammet fremhever offset
0x03A9
(desimal 937) i rødt, som peker på plasseringen av den første friblokken.

Ved å navigere til denne forskyvningen finner du starten på friblokken. Nedenfor undersøker vi cellen som ligger ved offset 937.

Dekoding av Freeblock-overskrifter
Hver friblokk inneholder en header på fire byte som består av
- De to første byte: Offset til neste friblokk (
0x0000
hvis det ikke finnes noen). - Andre 2 byte: Total størrelse på friblokken, inkludert selve overskriften.
Eksempel:
Ved forskyvning 0x03A9
, indikerer friblokkhodet:
- Neste friblokk er ved offset
0x03EA
(desimal 1002). - Størrelsen på friblokken er
0x0024
(36 byte, inkludert topptekst).
Gjenopprette slettede poster ved hjelp av Freeblocks
Freeblocks inneholder ofte rester av slettede poster, noe som gjør det mulig for kriminalteknikere å gjenopprette deler av eller hele data. I skjermbildet nedenfor er nyttelasten til en slettet post intakt og kan gjenopprettes til tross for at pekeren er fjernet.
Eksempel:
- Den slettede posten ved offset
0x03A9
inneholder beskjeden: "Ikke mye. Hvordan går det med deg?" - Nøkkelfelter forblir intakte, inkludert meldingsinnholdet, selv om andre metadata har blitt overskrevet.

Vi analyserer påfølgende freeblocks for å avdekke flere slettede poster. Ved offset 0x03EA
avslører freeblock-toppteksten:
- Størrelsen på friblokken er
0x0016
(22 byte). - Dette er den siste friblokken i kjeden, som indikert av
0x0000
i det neste friblokk-pekerfeltet.

Skjermbildet nedenfor viser hele celleområdet i den andre friblokken i kjeden, der den slettede meldingen var "Hi Andy!"

Identifisere flere slettede poster
Men det er tilfeldigvis én slettet post til på denne siden som ikke er referert til av freeblock-kjeden. Hvis vi ser tilbake på sidehodet, var det bare to poster på denne siden i henhold til to-byte-verdien ved offset 3 (0x00002
). Og siden det bare er to poster, er det bare to pekere i pekerarrayen. Disse to pekerne peker til post #2 - "Hei, hva skjer?" og post #4 - "Hei, jeg lurte på om du har noen Scooby Snax." Du vil kanskje legge merke til at det ligger en annen lang melding lenger opp på siden.
Den to byte store verdien ved offset 5 i sidehodet er offset til cellens innholdsområde, der neste post vil bli skrevet, med mindre den får plass i en av friblokkene. Denne verdien er 0x0363
som er desimal offset 867.

Pilen i skjermbildet ovenfor peker til sideoffset 867. Dette er starten på celleinnholdet, noe som betyr at neste post vil bli lagt til rett over denne posten. Den slettede posten over denne inneholder meldingen "Jeg fikk tilfeldigvis inn en ny leveranse i går kveld. Du har flaks. Hvor mye trenger du?"
Databasen anser disse dataene som uallokert plass. Den kan like gjerne fylles med 0x00
siden det ikke finnes noen peker i pekerarrayen som adresserer den.
Hvis det legges til en post som er for stor til å få plass innenfor de to friblokkene på siden, vil den overskrive meldingen, som tilfeldigvis er post #5.
La oss se hvordan det ser ut nå som vi har identifisert de to freeblockene sammen med den tredje slettede posten som venter på å bli overskrevet:

Etter å ha analysert databasen i råformat, kan vi konkludere med at den inneholdt mer enn bare de to "live"-postene som databasevisningen viste.
Opptak #1 var sannsynligvis meldingen "Hei Andy!", mens opptak #3 sannsynligvis var meldingen "Ikke mye. Hvordan har du det?". Record #5 har fortsatt sitt recordnummer i cellen som er identifisert som meldingen "Jeg fikk tilfeldigvis inn en ny forsyning i går kveld. Du har flaks. Hvor mye trenger du?"
Konklusjon
Freeblocks er et kraftfullt verktøy i kriminaltekniske undersøkelser, og gir innsyn i slettede poster og data som ikke er allokert. Ved å beherske disse teknikkene kan etterforskere avdekke de digitale sporene som databaser etterlater seg.
Er du klar for å ta SQLite-etterforskningskunnskapene dine til neste nivå? Utforsk våre avanserte opplæringsprogrammer, eller kontakt oss for å finne ut hvordan vi kan hjelpe deg med å bli en kriminalteknisk ekspert.