SQLite dosya biçimi ve veri kurtarma
SQLite dosyasının başlığını, sayfalarını, B-ağaçlarını, boş listesini ve WAL dosyasını onaltılık düzeyde inceler; silinmiş kayıtları ve bozuk dosyaları kurtarırsın.
Seviye 401 · 15 ders · 12 pratik lab
Dersler
Dosya biçimi
- Veritabanı başlığı
- Sayfa türleri ve B-ağacı yapısı
- Hücre ve kayıt biçimi: varint ve seri türleri
- Taşma sayfaları
- Kısa görev: bir satırı onaltılık düzeyde bul
Silinmiş veri
- Boş liste ve serbest bloklar
- secure_delete ve VACUUM’un etkisi
- WAL dosyasının biçimi ve çerçeveler
- Silinmiş satırları kurtarmak
- Kısa görev: silinen sohbet iletilerini kurtar
Bozulma
- Bozulmanın nedenleri
- integrity_check ve dbstat
- .recover ile kurtarma
- Python ile küçük bir SQLite ayrıştırıcı
- Bitirme görevi: bozulmuş bir uygulama veritabanından veri kurtar
Pratik lablar
- Dosya başlığından sayfa boyutunu oku: Bir veritabanının ilk 100 baytını hex olarak incele; sayfa boyutu, sayfa sayısı ve metin kodlamasını bul.
- Uzantısı değiştirilmiş veritabanını tanı: Bir klasördeki uzantısız dosyalar arasından SQLite veritabanlarını sihirli dizgiyle bul ve sürümlerini çıkar.
- Bir satırı sayfa sayfa izle: Kök sayfadan başlayıp B-ağacı üzerinden belirli rowid'nin bulunduğu yaprak sayfaya hex düzeyinde in.
- Bir kaydın varint'lerini çöz: Verilen hücre baytlarındaki varint'leri elle çözerek kayıt uzunluğunu ve rowid'yi bul.
- Seri türlerden sütun değerlerini çıkar: Kayıt başlığındaki seri tür kodlarını okuyup bir müşteri satırının tüm sütunlarını hex'ten geri kur.
- Taşma sayfasına bölünmüş uzun metni birleştir: Taşma sayfalarına yayılmış bir e-posta gövdesini sayfa zincirini izleyerek eksiksiz geri çıkar.
- Silinmiş satırın izini serbest blokta bul: Bir not silindikten sonra sayfadaki serbest blokta metninin hâlâ durduğunu strings ve hex ile göster.
- WAL dosyasından eski sürümü çıkar: Ana dosyada güncellenmiş bir kaydın eski halini WAL çerçevelerini tek tek okuyarak geri getir.
- Silinmiş sohbet mesajlarını geri kazan: Bir sohbet uygulamasının veritabanında boş liste sayfalarını ve serbest blokları tarayarak silinen mesajları tarihleriyle geri çıkar.
- Bozulmayı integrity_check ile teşhis et: Açılmayan bir envanter veritabanında integrity_check çıktısını oku ve hangi tablonun hasarlı olduğunu bul.
- .recover ile kurtarılabilen veriyi çıkar: Başlığı sağlam ama sayfaları bozuk bir veritabanından .recover ile kurtarılabilen satırları yeni dosyaya aktar ve kaybı say.
- Python'la küçük bir sayfa ayrıştırıcısı yaz: sqlite3 modülünü kullanmadan yaprak sayfalardaki kayıtları okuyan ve bozuk dosyadan satır çıkaran bir Python betiği yaz.
Kurs hakkında
SQLite dosyasının başlığını, sayfalarını, B-ağaçlarını, boş listesini ve WAL dosyasını onaltılık düzeyde inceler; silinmiş kayıtları ve bozuk dosyaları kurtarırsın.
Ne öğreneceksin
- Dosya biçimi
- Silinmiş veri
- Bozulma
Ön koşullar
Aynı yolun 301 düzeyine kadar olan konularını uygulamış olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 401 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.