====== Forenzika SQLite baza podataka ====== ===== Sažetak ===== SQLite je lagani, ugrađeni sustav za upravljanje bazama podataka koji se široko koristi u mobilnim aplikacijama, web preglednicima i IoT uređajima. Zbog svoje rasprostranjenosti, SQLite baze podataka često predstavljaju vrijedan izvor digitalnih dokaza u forenzičkim istragama. Ovaj rad obrađuje temeljne koncepte forenzike SQLite baza podataka, način njihovog prikupljanja, strukturu datoteka i metode analize. Rad se detaljno bavi tehnikama oporavka obrisanih podataka iz WAL datoteka i freelist stranica, što omogućava rekonstrukciju izbrisanih informacija koje korisnici namjerno pokušavaju sakriti. U radu su prikazani praktični primjeri forenzičke analize popularnih mobilnih aplikacija poput WhatsApp-a, tehnike za ekstrakciju metapodataka te alati koji se koriste u profesionalnoj forenzičkoj praksi. Razmatrani su i izazovi s kojima se forenzičari susreću, poput enkripcije baza podataka i anti-forenzičkih tehnika. Keywords: SQLite, digitalna forenzika, forenzika baza podataka, WAL datoteke, mobilna forenzika, podatak ===== Uvod ===== U današnjem digitalnom okruženju mobilni uređaji i aplikacije postali su glavni izvor komunikacije i pohrane osobnih podataka. Velika većina tih aplikacija koristi SQLite baze podataka za lokalnu pohranu informacija, što ih čini jednim od najvažnijih izvora digitalnih dokaza u forenzičkim istragama. SQLite je prisutan gotovo svugdje: u mobilnim operacijskim sustavima (Android i iOS), web preglednicima (Chrome, Firefox, Safari), aplikacijama za razmjenu poruka (WhatsApp, Viber, Telegram), društvenim mrežama i brojnim drugim aplikacijama. Primjeri aplikacija koje koriste SQLite: - WhatsApp – msgstore.db (poruke, kontakti, grupni razgovori) - Google Chrome – History (povijest pretraživanja i preuzimanja) - Android OS (contacts2.db (kontakti), telephony.db (SMS poruke)) - iOS (sms.db (SMS/iMessage), AddressBook.sqlitedb (kontakti)) - Viber – viber_messages (poruke i mediji) - Facebook Messenger – threads_db2 (razgovori) Upravo zbog ovako široke primjene, SQLite forenzika postala je nezaobilazna vještina u digitalnoj forenzici, osobito kod mobilnih istraga. Forenzičari mogu iz SQLite baza ekstraktirati poruke, lokacije, kontakte, povijest pretraživanja, vremenske oznake aktivnosti i mnoge druge vrijedne informacije. Cilj ovog rada je prikazati kako se SQLite baze prikupljaju, analiziraju i interpretiraju u forenzičkom kontekstu, s naglaskom na tehnike oporavka obrisanih podataka koji često predstavljaju najvažnije dokaze u istrazi. ===== Definicija SQLite forenzike ===== SQLite forenzika je poddisciplina digitalne i mobilne forenzike koja se bavi identifikacijom, prikupljanjem, analizom i prezentacijom SQLite baza podataka kao digitalnih dokaza. Elementi koji se analiziraju u SQLite forenzici uključuju strukturu baze podataka, aktivne zapise, metapodatke, obrisane zapise, WAL datoteke i slobodni prostor unutar baze. Cilj SQLite forenzike je osigurati dokaze koji se mogu koristiti u sudskim, administrativnim i građanskim postupcima u slučajevima računalnog kriminala, mobilne forenzike, kibernetičkih istraga i drugih pravnih postupaka. Za razliku od tradicionalne forenzike baza podataka, koja se često fokusira na velike klijent-poslužitelj sustave (Oracle, MySQL, PostgreSQL), SQLite forenzika specifična je po sljedećim obilježjima: * cijela baza podataka pohranjena je u jednoj datoteci * ne postoji centralni poslužitelj niti centralizirani sustav logiranja * podaci su lokalno pohranjeni na uređaju * enkripcija često nije prisutna, osim ako aplikacija ne implementira dodatna sigurnosna rješenja * obrisani podaci mogu ostati u slobodnom prostoru baze dulje vrijeme ===== Povijesni razvoj i značaj ===== SQLite je stvoren 2000. godine od strane D. Richarda Hippa kao lagano rješenje za pohranu podataka bez potrebe za poslužiteljem. Naziv „Lite” u SQLiteu ne odnosi se na funkcionalnost (koja je vrlo moćna), već na jednostavnost implementacije i mali memorijski otisak. U početku je SQLite bio zamišljen kao jednostavna ugrađena baza podataka za aplikacije koje nisu trebale klijent-poslužitelj arhitekturu. Kako su mobilni uređaji postali sve rašireniji, SQLite je postao standardni način lokalne pohrane podataka na mobilnim platformama. U Androidu je SQLite prisutan od samih početaka platforme, a u iOS-u se također široko koristi u aplikacijama već dugi niz godina. ===== Forenzički značaj ===== Forenzička analiza SQLite baza postaje kritično važna zbog: * Široke primjene u mobilnim aplikacijama – mnoge aplikacije koriste SQLite za lokalnu pohranu podataka * Bogatstva podataka – poruke, lokacije, kontakti i povijest aktivnosti često se nalaze u SQLite bazama * Mogućnosti oporavka – obrisani podaci mogu ostati dostupni u slobodnom prostoru baze ili u WAL datotekama * Prihvatljivosti dokaza – SQLite podaci mogu biti prihvatljivi kao dokaz na sudu ako su prikupljeni i analizirani prema forenzičkim standardima * Podrške cyber istragama – SQLite baze mogu sadržavati informacije relevantne za analizu malwarea, botneta i drugih kibernetičkih aktivnosti Prema smjernicama NIST-a za mobilnu forenziku, analiza lokalnih podataka na mobilnim uređajima, uključujući SQLite baze, predstavlja važan korak u digitalnoj forenzici. ===== Osnovne značajke SQLite baza podataka ===== SQLite je relacijski sustav za upravljanje bazama podataka koji ne koristi klijent–poslužitelj arhitekturu. Za razliku od tradicionalnih baza podataka poput MySQL-a ili PostgreSQL-a, SQLite pohranjuje cijelu bazu u jednu datoteku na disku i ne zahtijeva zaseban poslužiteljski proces. Glavne karakteristike SQLitea uključuju serverless arhitekturu, pristup bez potrebe za konfiguracijom (zero-configuration), usklađenost s ACID načelima te podršku za većinu SQL-92 standarda. SQLite je cross-platform rješenje koje se ponaša identično na svim većim operacijskim sustavima. Iz forenzičke perspektive, SQLite nudi jednostavniju analizu jer se svi podatci nalaze u jednoj datoteci koju je lako kopirati i analizirati. Međutim, određeni izazovi uključuju čest nedostatak enkripcije na razini baze podataka, nepostojanje centraliziranih log-datoteka te mogućnost trajnog brisanja podataka korištenjem naredbe VACUUM. ===== Struktura SQLite baze podataka ===== SQLite baza podataka organizirana je u stranice (pages) fiksne veličine, najčešće 4096 bajtova, iako veličina može varirati ovisno o konfiguraciji baze. Razumijevanje unutarnje strukture SQLite baze ključno je za naprednu forenzičku analizu i oporavak obrisanih podataka. **Database Header (prvih 100 bajtova)** Svaka SQLite baza započinje s 100-bajtnim zaglavljem (header) koje sadrži ključne informacije o strukturi baze: * Offset 0–15: "SQLite format 3\000" (magic string) * Offset 16–17: Veličina stranice (1024, 2048, 4096, 8192...) * Offset 18: Verzija formata za pisanje * Offset 19: Verzija formata za čitanje * Offset 40–43: Ukupan broj stranica u bazi * Offset 44–47: Prva freelist stranica (FORENZIČKI VAŽNO) * Offset 48–51: Ukupan broj freelist stranica {{:racfor_wiki:seminari2025:sqliteheader.png?400|}} Forenzičar može ručno provjeriti je li datoteka valjana SQLite baza pregledom prvih 16 bajtova u hex editoru, gdje se mora pojaviti ASCII niz "SQLite format 3" s null-terminatorom (00). **Vrste stranica (Page types)** SQLite koristi nekoliko tipova stranica unutar baze podataka: - Page 1 – sadrži database header i B-tree korijen tablice sqlite_master - Internal B-tree pages – sadrže pokazivače na druge B-tree stranice - Leaf B-tree pages – sadrže stvarne zapise tablica ili indeksa - Freelist pages – stranice koje su označene kao obrisane(FORENZIČKI IZUZETNO VAŽNE) - Overflow pages – koriste se za pohranu velikih vrijednosti koje ne stanu u jednu stranicu **Sistemska tablica sqlite_master** Svaka SQLite baza sadrži posebnu sistemsku tablicu sqlite_master koja pohranjuje kompletnu shemu baze podataka, uključujući definicije tablica, indeksa, viewova i triggera. Ova tablica je ključna za forenzičku analizu jer omogućuje razumijevanje strukture baze bez potrebe za vanjskom dokumentacijom. Pregledom tablice sqlite_master forenzičari mogu dobiti nazive tablica (npr. messages, contacts), definirane indekse (npr. idx_timestamp) te potpune SQL definicije svake strukture u bazi. Zbog toga je analiza tablice sqlite_master gotovo uvijek prvi korak u forenzičkoj obradi SQLite baze. **Dodatne SQLite datoteke** Osim glavne .db datoteke, SQLite može koristiti i dodatne pomoćne datoteke: - .journal datoteka * Rollback journal koji omogućuje atomske transakcije * Sadrži stare verzije stranica prije izmjena * Forenzički značaj: može sadržavati prethodno obrisane ili izmijenjene podatke - .wal datoteka (Write-Ahead Log) * Moderniji mehanizam zapisivanja promjena * Sadrži nove izmjene koje još nisu zapisane u glavnu bazu * Forenzički značaj: IZUZETNO VAŽNA – često sadrži najnovije podatke, uključujući obrisane zapise - shm datoteka (Shared Memory) * Pomoćna datoteka za indeksiranje WAL zapisa * Ograničen forenzički značaj, ali korisna za rekonstrukciju WAL stanja ===== Prikupljanje SQLite baza podataka u forenzičke svrhe ===== Prikupljanje SQLite baza mora se provoditi na forenzički ispravan način kako bi dokazi bili prihvatljivi na sudu. Osnovni principi uključuju očuvanje integriteta podataka, dokumentiranje lanca čuvanja i rad isključivo na kopiji podataka. **Lokacije SQLite baza podataka** Android: * /data/data//databases/ * /data/data/com.whatsapp/databases/msgstore.db * /data/data/com.android.providers.contacts/databases/contacts2.db * /data/data/com.android.chrome/databases/webview.db iOS: * /private/var/mobile/Containers/Data/Application// * /var/mobile/Library/SMS/sms.db * /var/mobile/Library/AddressBook/AddressBook.sqlitedb Desktop sustavi: * Windows: C:\Users\\AppData\Local\\ * macOS: /Users//Library/Application Support// * Linux: /home//.config// **Postupak prikupljanja** - Izrada forenzičke kopije * Prije analize izračunavaju se hash vrijednosti (MD5 i SHA-256). Analiza se provodi isključivo na kopiji, dok original ostaje netaknut. - Prikupljanje povezanih datoteka * Ne smije se kopirati samo .db datoteka. Potrebno je prikupiti i: * .db-wal (Write-Ahead Log – često sadrži obrisane podatke) * .db-shm * .db-journal - Osiguranje integriteta * Kopirane datoteke postavljaju se u read-only način rada, a lanac čuvanja se dokumentira. **Izazovi pri prikupljanju** Mobilni uređaji: * potreba za root/jailbreak ovlastima * logički backup (ADB, iTunes) * fizička ekstrakcija (JTAG, chip-off) Enkripcija: * Android FDE/FBE * iOS Data Protection * Rješenje: prikupljanje dok je uređaj uključen i otključan Live vs. Dead acquisition: * Live: veći pristup podacima, ali rizik izmjena * Dead: sigurnije, ali ograničeno kod enkripcije ===== Obrisani podaci i WAL datoteke ===== Brisanje zapisa u SQLite bazi ne znači automatski da su podaci trajno izbrisani. U praksi se obrisani podaci često mogu pronaći u WAL datotekama ili u freelist stranicama. **WAL (Write-Ahead Log)** U WAL modu, promjene se ne upisuju odmah u glavnu bazu. Umjesto toga, prvo se zapisuju u .wal datoteku. Tek kasnije se ti zapisi integriraju u glavnu bazu kroz proces nazvan checkpoint. Kako WAL radi: - Write – promjena se zapisuju u .wal - Read – SQLite koristi najnoviju verziju podataka (iz WAL-a ili glavne baze) - Checkpoint – sadržaj WAL-a se zapisuje u glavnu bazu - Truncate – nakon checkpointa, WAL se resetira {{:racfor_wiki:seminari2025:walsqlite.png?400|}} Zašto je to važno u forenzici: * Obrisani zapisi mogu ostati u WAL datoteci i nakon brisanja u glavnoj bazi. * WAL se ne checkpointa odmah, pa može sadržavati podatke stare i više dana. * Checkpoint se događa pri zatvaranju aplikacije, kada WAL naraste ili ručno PRAGMA wal_checkpoint. **Freelist stranice (obrisani zapisi)** Kada se zapis obriše, SQLite ne briše odmah podatke s diska. Stranice koje više nisu u upotrebi dodaju se na freelist i mogu se ponovno koristiti kasnije. Do trenutka prepisivanja, podaci na tim stranicama mogu se forenzički oporaviti. Zašto je to važno: * Broj stranica u freelistu pokazuje količinu potencijalno obrisanih podataka. * Primjer: 47 stranica × 4096 B ≈ 188 KB podataka koji mogu biti prisutni i oporavljivi. **Ekstrakcija podataka iz freelista i WAL-a** U praksi se često izvlače čitljivi tekstualni nizovi (npr. minimalno 10 znakova) iz baze, uključujući WAL i freelist prostor. Zatim se filtriraju prema obrascima (telefoni, emailovi, imena itd.). Ova metoda često otkriva obrisane podatke koji još nisu prebrisani. **Vrijeme je ključ** Što je dulje prošlo od brisanja, veća je vjerojatnost da su podaci prebrisani novim zapisima. Zato je brzo prikupljanje dokaza i ograničavanje korištenja uređaja u forenzici presudno. ===== Oporavak izbrisanih podataka ===== Oporavak izbrisanih podataka najzahtjevniji je, ali i najvažniji dio SQLite forenzike. U većini istraga upravo izbrisane poruke predstavljaju ključne dokaze jer ih korisnici namjerno uklanjaju kako bi prikrili aktivnosti. **Tehnike oporavka** - Analiza WAL datoteke * Ako WAL datoteka postoji i još nije checkpointana, obrisani podaci mogu se u njoj i dalje nalaziti. Postupak uključuje izradu forenzičke kopije WAL datoteke, izradu dump-a baze prije i nakon checkpoint operacije te usporedbu rezultata. Razlike između ta dva stanja ukazuju na zapise koji su postojali samo u WAL-u, uključujući obrisane poruke. - Ekstrakcija stringova * Ekstrakcija čitljivih stringova iz baze jednostavna je i brza metoda oporavka. Izvlače se tekstualni fragmenti iz cijele baze, uključujući freelist stranice. Nedostatak ove metode je gubitak strukture – dobiveni podatci nemaju kontekst i zahtijevaju ručnu analizu. - Heksadecimalna analiza * Napredna tehnika koja uključuje analizu sirovih bajtova baze podataka. Forenzičari pretražuju karakteristične SQLite strukture (npr. leaf B-tree stranice koje započinju s bajtom 0x0D) kako bi identificirali obrisane zapise koji još nisu prebrisani. - Specijalizirani forenzički alati - više o njima u poglavlju ispod **Primjer uspješnog oporavka** **Scenarij:** Osumnjičeni je obrisao WhatsApp poruke neposredno prije uhićenja. **Postupak:** Utvrđeno je postojanje WAL datoteke veličine 2,3 MB, što upućuje na ne checkpointane promjene. Broj poruka u bazi iznosio je 1 523. Nakon izvršenja checkpoint operacije broj poruka porastao je na 1 543, što ukazuje na 20 zapisa koji su se nalazili isključivo u WAL datoteci. SQL upitima identificirani su zapisi koji su dodani tijekom checkpointa, čime su rekonstruirane obrisane poruke. **Rezultat:** Uspješno je oporavljeno 20 WhatsApp poruka koje su bile obrisane, ali nisu bile trajno uklonjene jer WAL datoteka nije bila checkpointana prije forenzičke analize. ===== Alati za forenzičku analizu SQLite baza podataka ===== * sqlite3 – službeni command-line alat za rad sa SQLite bazama; omogućuje izvođenje SQL upita, pregled strukture baze i osnovnu analizu podataka * DB Browser for SQLite – grafički alat s vizualnim prikazom tablica, SQL editorom i pregledom sheme baze * Autopsy / Sleuth Kit – open-source forenzička platforma s podrškom za automatsku detekciju SQLite baza, vremensku analizu i pretragu ključnih riječi * SQLite Forensic Explorer – specijalizirani alat za forenzičku analizu SQLite baza, uključujući oporavak obrisanih zapisa i WAL analizu * Oxygen Forensic – profesionalni alat za mobilnu forenziku s automatskom analizom aplikacijskih SQLite baza * Magnet AXIOM – sveobuhvatna forenzička platforma za analizu mobilnih uređaja i aplikacija koje koriste SQLite baze ===== Primjeri: Primjena SQLite forenzike ===== **Primjer 1: Analiza WhatsApp komunikacije u kaznenom slučaju** **Scenarij**: Postoji sumnja da je osumnjičeni koristio aplikaciju WhatsApp za dogovaranje kriminalnih aktivnosti. Prikupljena je forenzička kopija mobilnog uređaja. **Postupak analize**: WhatsApp baza podataka msgstore.db locirana je u standardnoj Android lokaciji aplikacije /data/data/com.whatsapp/databases/. Nakon provjere integriteta datoteke pristupilo se analizi strukture baze, koja sadrži ključne tablice: messages (poruke), chat (razgovori), message_media (multimedijski sadržaj) i jid (identifikatori kontakata). Analiza je započela identifikacijom najaktivnijih kontakata grupiranjem poruka prema identifikatorima kontakata, čime je izdvojeno deset najfrekventnijih komunikacijskih partnera. Zatim je provedena ekstrakcija poruka za odabrane kontakte u kritičnom vremenskom razdoblju (10.–20. siječnja 2024.). Vremenske oznake konvertirane su iz Unix timestamp formata u čitljiv datum i vrijeme. Dodatno je izvršena pretraga ključnih riječi unutar poruka, s fokusom na financijske pojmove (npr. novac, transfer, račun) radi identifikacije potencijalno inkriminirajuće komunikacije. **Rezultat**: Identificirano je 47 poruka u kritičnom vremenskom razdoblju s izravnim referencama na financijske transakcije. Dodatno, analizom WAL datoteke uspješno je oporavljeno 12 obrisanih poruka koje nisu bile prisutne u glavnoj bazi. **Primjer 2: Oporavak obrisanih SMS poruka na Android uređaju** **Scenarij**: Osumnjičeni je obrisao SMS poruke neposredno prije uhićenja. **Postupak analize**: SMS poruke na Android uređajima pohranjuju se u sistemskoj SQLite bazi mmssms.db, smještenoj u direktoriju /data/data/com.android.providers.telephony/databases/. Baza sadrži tablicu sms s metapodacima i sadržajem tekstualnih poruka. Tijekom analize utvrđena je prisutnost WAL datoteke uz glavnu bazu, što je ukazivalo na postojanje nesinkroniziranih zapisa. Analiza je započela brojanjem SMS poruka u trenutnom stanju baze, pri čemu je identificirano 523 zapisa. Nakon izvođenja checkpoint operacije, kojom su podaci iz WAL-a integrirani u glavnu bazu, broj poruka povećao se na 538, što predstavlja razliku od 15 zapisa. Ekstrahirane poruke sadržavale su telefonske brojeve pošiljatelja i primatelja, vremenske oznake, sadržaj poruke te smjer komunikacije (poslano ili primljeno). SQL upiti korišteni su za filtriranje zapisa dodanih nakon checkpointa. **Rezultat**: Uspješno je oporavljeno 15 SMS poruka koje je korisnik obrisao, ali su ostale pohranjene u WAL datoteci zbog odgođene sinkronizacije. ===== Izazovi i ograničenja SQLite forenzike ===== SQLite forenzika suočava se s nizom tehničkih i proceduralnih izazova koji mogu značajno otežati ili u potpunosti onemogućiti analizu. **1. Enkripcija baza podataka** **Problem**: Mnoge aplikacije koriste enkripciju SQLite baza kako bi zaštitile korisničke podatke. Najčešće implementacije uključuju: * SQLCipher – open-source enkripcija temeljena na AES-256 algoritmu * SQLite Encryption Extension (SEE) – službena komercijalna ekstenzija * Prilagođene (custom) metode enkripcije Pokušaj otvaranja enkriptirane baze standardnim SQLite alatima rezultira greškom koja sugerira da datoteka nije valjana SQLite baza. Moguća rješenja: * pokušaj probijanja lozinke (ako je slaba) * memory forensics – ekstrakcija ključa iz radne memorije * izdvajanje ključa iz sigurnosnih kopija ili konfiguracijskih datoteka * reverse engineering aplikacije radi pronalaska ključeva ili algoritama {{:racfor_wiki:seminari2025:sqlcipherencryption.png?400|}} **2. Anti-forenzičke tehnike** **Problem**: Korisnici ili aplikacije mogu primijeniti tehnike kojima se namjerno otežava forenzička analiza. * Secure delete - Kada je omogućeno, SQLite odmah prepisuje obrisane zapise nulama umjesto da ih ostavi u freelistu, čime se onemogućuje oporavak obrisanih podataka. * VACUUM operacija - VACUUM reorganizira bazu i trajno uklanja sav slobodni (freelist) prostor. Nakon izvođenja ove operacije, oporavak obrisanih zapisa postaje iznimno težak ili nemoguć. {{:racfor_wiki:seminari2025:sqlite-vacuum.jpg?400|}} **Protumjere**: * brzo i pravovremeno prikupljanje dokaza * live forensics dok je uređaj uključen * izrada memory dumpova **3. Sinkronizacija s cloud servisima** **Problem**: Moderne aplikacije često sinkroniziraju podatke s cloud servisima, zbog čega lokalna SQLite baza može sadržavati samo dio relevantnih podataka. **Rješenja**: * forenzičko prikupljanje cloud podataka (uz odgovarajuću pravnu osnovu) * analiza API komunikacije aplikacije * mrežna (network) forenzika ===== Zaključak ===== SQLite baze podataka predstavljaju ključan izvor digitalnih dokaza u modernoj forenzici, osobito u analizi mobilnih uređaja i aplikacija. Zbog široke primjene i relativno jednostavne strukture, SQLite baze često sadrže vrijedne informacije o komunikaciji, aktivnostima i lokaciji korisnika, što ih čini nezaobilaznim elementom forenzičkih istraga. Jedna od značajnih prednosti SQLite forenzike je mogućnost oporavka podataka koji su korisnici obrisali. Obrisani zapisi mogu ostati dostupni u WAL datotekama, freelist prostorima ili journal datotekama, ovisno o načinu rada baze i stanju zapisivanja. Upravo zato je važno provesti prikupljanje i analizu na ispravan način, kako bi se očuvala integritet i dobili relevantni dokazi. Istovremeno, SQLite forenzika se suočava s izazovima kao što su enkripcija baza, anti-forenzičke tehnike (npr. secure delete i VACUUM) te sinkronizacija s cloud servisima, što može ograničiti pristup podacima ili onemogućiti oporavak. Zbog toga je za uspješnu analizu potrebno kombinirati tehničko znanje o strukturi SQLite baza s odgovarajućim alatima i forenzičkim postupcima. U konačnici, razumijevanje unutarnje strukture SQLite baze, rada WAL mehanizma i mogućnosti oporavka obrisanih podataka čini SQLite forenziku neizostavnom vještinom u digitalnoj forenzici, a primjena ispravnih metoda prikupljanja i analize ključna je za valjanost dokaza. ===== Literatura ===== [1] [[https://www.sqlite.org/docs.html|SQLite Službena Dokumentacija]] [2] [[https://dfrws.org/presentation/|DFRWS Dokumenatacija]] [3] [[https://www.forensicfocus.com/articles/forensic-analysis-of-sqlite-databases-free-lists-write-ahead-log-unallocated-space-and-carving/|Forenzička analiza SQLite baza podataka]] [4] [[https://www.sciencedirect.com/science/article/pii/S1742287619301677|Forenzički oporavak obrisanih SQLite zapisa]] [5] [[https://en.wikipedia.org/wiki/SQLite|Wikipedia SQLite]] [6] [[https://www.mdpi.com/2076-3417/13/19/10736|Alat za izdvajanje SQLite dokaza na Androidu]] [7] [[https://www.geeksforgeeks.org/android/how-to-view-and-locate-sqlite-database-in-android-studio/|Lokacija Android SQLite baze]] [8] [[https://reincubate.com/support/how-to/iphone-backup-files-structure/|iOS baze poruka]]