01Oturum planı
| Dakika | Bölüm | Ne yapılır |
|---|---|---|
| 0–10 | Brifing ve kurallar | Senaryoyu yüksek sesle okuyun. Cevapların çoğunu belirleyen kuralları söyleyin: yalnızca kopyalar, önce doğrulama, her zaman esasını okuma, dosyalar davranışı değil saklamayı gösterir. |
| 10–30 | Bütünlük ve ana dosya (Q1–Q4) | Hash kontrolü, ardından başlık baytları: günlük kipi ve sayfa boyutu. Q4, çıkarım günlüğündeki karışık zaman esaslarını çalıştırır. |
| 30–65 | WAL yapısı (Q5–Q9) | Elle ya da kısa bir betikle çalışın. Üç bölgeyi belirleyin: işlenmiş çerçeveler, geçerli ama işlenmemiş çerçeveler, önceki kuşaktan eski çerçeveler. Ardından sayfa 5 sorusu. |
| 65–85 | İçerik: ana dosya ve işlenmiş durum (Q10–Q12) | Ana dosyanın tek başına ve çiftin birlikte kopyaları. Dört satırlık fark paketin amacıdır. |
| 85–110 | Kaydın neyi gösterip neyi gösteremediği (Q13–Q15) | Alım mesajı, düzenleme ve işlenmemiş çerçeveler için raporun taşıyacağı cümleleri yazın. Seçenekleri çiftler hâlinde karşılaştırın. |
| 110–120 | Değerlendirme | Değerlendirme sorularını yürütün. Her katılımcıdan imzalamayacağı bir cümle isteyin. |
Malzemeler: her katılımcının bilgisayarında paket dosyaları, paket sayfasından yazdırılmış bir çalışma kağıdı ve bir inceleme günlüğü formu. Paket sayfası →
02Cevap anahtarı
S011 puan
chatstore.db-wal dosyasının SHA-256 değerini hesaplayın ve manifest.txt ile karşılaştırın. Hesapladığınız değerin ilk sekiz onaltılık karakterini girin.
Cevapf54a0199
Değer f54a0199 ile başlar ve bildirimle eşleşir. Rakamlardan çok alışkanlık önemlidir: WAL, açılmakla en kolay değişen dosyadır; bu yüzden hash'i, çifte herhangi bir araç dokunmadan önce kaydedilir.
- Nerede
- manifest.txt, chatstore.db-wal satırı; hash aracıyla ya da sha256sum ile yeniden hesaplayın.
- Olağan hata
- WAL'ı, çifti bir veri tabanı aracında açtıktan sonra hash'lemek; araç onu zaten yeniden yazmış ya da silmiş olabilir.
Hash hesaplayıcıF-04 İnceleme günlüğüSOP-02 Delil kabul ve kayıt
S021 puan
chatstore.db dosyasının 18. ve 19. ofsetlerindeki baytlar (dosya biçimi yazma ve okuma sürümü) ikisi de 02. Bu ne söyler?
CevapB — Veri tabanı WAL kipindedir: işlenmiş değişiklikler henüz ana dosyada değil, -wal dosyasında olabilir.
1 değeri geri alma günlüğünü, 2 değeri WAL'ı gösterir. WAL kipinde ana dosya yalnızca WAL denetim noktasına alındığında (checkpoint) değişir; bu yüzden ana dosya tek başına işlenmiş durumdan eski olabilir.
- Nerede
- chatstore.db, 0x12 ve 0x13 numaralı baytlar (hex görünümü). Kaynak: https://www.sqlite.org/fileformat2.html (veri tabanı başlığı, 18 ve 19 numaralı ofsetler).
- Olağan hata
- Bir WAL olup olmadığını sormadan ana dosyayı veri tabanının tamamı saymak.
Hex görüntüleyici ve veri denetçisiSOP-05 Mobil cihaz edinimi
S031 puan
Veri tabanı sayfa boyutu kaç bayttır? Ana dosyanın 16. ve 17. ofsetlerinde saklanır.
Cevap4096
İki bayt 10 00'dır; big-endian 0x1000 = 4096. Ana dosyadaki her sayfa ve WAL'daki her çerçeve gövdesi bu boyuttadır; sonraki tüm ofsetlerin birimi budur.
- Nerede
- chatstore.db, 0x10 ve 0x11 numaralı baytlar; dosya uzunluğu 32768'in bu değere bölümü sekiz sayfa verir.
- Olağan hata
- İki baytı little-endian okumak (0x0010 = 16).
S041 puan
Çıkarım ne zaman yapıldı? Çıkarım satırındaki zamanı UTC olarak verin.
Cevap2026-03-09 05:20:11 UTC
Çıkarım satırı inceleme istasyonunun yerel saatini taşır: UTC+03:00'da 08:20:11, yani 05:20:11 UTC. Altındaki listedeki dosya zamanları zaten UTC'dir. Aynı günlük iki zaman esası kullanır.
- Nerede
- acquisition-log.txt, Extraction satırı; etiket yerel saati ve farkı belirtir.
- Olağan hata
- 08:20:11'i UTC saymak ya da zaten UTC olan dosya zamanlarından fark çıkarmak.
Yerel saatten UTC'yeSOP-08 İnceleme notları ve çalışma kaydı
S051 puan
chatstore.db-wal dosyası fiziksel olarak kaç tam çerçeve içerir? Bir WAL'ın 32 baytlık bir başlığı vardır; her çerçeve, 24 baytlık bir çerçeve başlığı ve ardından bir sayfadır.
Cevap55
(226632 − 32) ÷ (24 + 4096) = 55 çerçeve, sonda yarım çerçeve yok. Dosya boyutu bunların kaçının hâlâ geçerli olduğunu söylemez; bunu sonraki üç soru ayırır.
- Nerede
- Dosya boyutu acquisition-log.txt'den ya da dosya sisteminden; 4120 baytlık çerçeve boyutu Q3'teki sayfa boyutundan.
- Olağan hata
- Dosya boyutunu 4096'ya bölüp başlıkları yok saymak.
S062 puan
Dosyanın başından sayıldığında kaç çerçeve geçerli WAL kuşağına aittir? Bunlar, iki tuz (salt) değeri WAL başlığındaki tuz değerlerine eşit olan ve sağlama toplamları başlıktan zincirlenen çerçevelerdir.
Cevap22
1–22 numaralı çerçeveler başlığın tuzlarını ve geçerli bir sağlama zinciri taşır. 23. çerçeveden itibaren tuzlar farklıdır: bu 33 çerçeve önceki bir WAL kuşağında yazılmış ve üzerine yazılmamıştır. Okuyucu eşleşmeyen ilk çerçevede durur.
- Nerede
- chatstore.db-wal: 16–23 numaralı başlık ofsetleri tuzları tutar; her çerçeve başlığı bunları çerçeve başlığının 8–15 numaralı ofsetlerinde tekrarlar.
- Olağan hata
- 55 çerçevenin hepsini saymak ya da tuza göre değil sayfa numarasına göre saymak.
S072 puan
Geçerli kuşağın son işleme (commit) çerçevesinin numarası nedir? İşleme çerçevesi, çerçeve başlığındaki 'işlem sonrası veri tabanı boyutu (sayfa)' alanı (çerçeve başlığı ofseti 4) sıfır olmayan çerçevedir.
Cevap16
İşleme çerçeveleri 3, 6, 9, 10, 11, 12, 15 ve 16'dır; her biri 8 sayfalık bir veri tabanı boyutu kaydeder. Sonuncusu 16. çerçevedir. Veri tabanının işlenmiş durumu, ana dosya ile WAL'ın 16. çerçeve dâhil olmak üzere okunmasıdır.
- Nerede
- chatstore.db-wal, her çerçeve başlığının 4. ofsetindeki 4 bayt (n numaralı çerçeve 32 + (n − 1) × 4120 ofsetinde başlar). Kaynak: https://www.sqlite.org/walformat.html (çerçeve başlığı, geçerlilik kuralı).
- Olağan hata
- Geçerli tuzları taşıyan son çerçeveyi, 22'yi, işlenmiş kısmın sonu saymak.
S082 puan
Geçerli kuşağın kaç çerçevesi son işleme çerçevesinden sonra yer alır? Doğru tuzları ve sağlama toplamlarını taşırlar ama işleme yoktur.
Cevap6
17–22 numaralı çerçeveler, işleme çerçevesi dosyaya hiç ulaşmayan bir işlemin geçerli çerçeveleridir. Veri tabanı durumunun parçası değildir. 17. çerçeve 1. sayfayı, 18–20 sayfa 5–7'yi, 21 sayfa 9'u, 22 sayfa 10'u tutar.
- Nerede
- chatstore.db-wal, 17–22 numaralı çerçeveler: tuzlar başlıkla eşleşir, 4. ofsetteki alan sıfırdır.
- Olağan hata
- 33 eski çerçeveyi de saymak ya da 'işlemeden sonrası sayılmaz' diyerek hiç saymamak.
S092 puan
message tablosunun kökü 5. sayfadadır (ana dosyanın 1. sayfasındaki sqlite_schema'ya bakın). WAL'ın işlenmiş çerçeveleri arasında (1. çerçeveden son işleme çerçevesine kadar) 5. sayfa kaç çerçevede görünür?
Cevap8
5. sayfa 1, 4, 7, 10, 11, 12, 13 ve 16 numaralı çerçevelerde görünür. Okuyucuya 5. sayfayı yalnızca bunların en yenisi, 16. çerçeve, sağlar; diğer yedisi aynı sayfanın, dosya denetim noktasına hiç alınmadığı için tutulan önceki işlenmiş sürümleridir.
- Nerede
- chatstore.db-wal, her çerçeve başlığının ilk 4 baytı sayfa numarasını verir; chatstore.db 1. sayfa kök sayfaları gösterir.
- Olağan hata
- Sayfa 5'in sonraki, işlenmemiş sürümünü tutan 18. çerçeveyi saymak ya da yalnızca en yeni çerçeveyi saymak.
S101 puan
Yalnızca ana dosyada message tablosunda kaç satır vardır? chatstore.db'yi WAL olmadan boş bir klasöre kopyalayın ve satırları sayın.
Cevap46
46 satır, 1–46 numaralı mesajlar; sonuncusu 6 Mart'ta 06:52:30 UTC'de gönderildi. Ana dosya veri tabanını son denetim noktasındaki (günlükte dosyanın değişiklik zamanı 06:58:12 UTC) haliyle gösterir; işlenmiş durumuyla değil.
- Nerede
- Yalnızca chatstore.db: SELECT COUNT(*) FROM message;
- Olağan hata
- İki dosyayı birlikte açıp 50 saymak; bu bir sonraki sorunun cevabıdır.
Android için WhatsApp mesajları (msgstore.db)SOP-05 Mobil cihaz edinimi
S112 puan
İşlenmiş durumda message tablosunda kaç satır vardır? İki dosyayı birlikte başka bir boş klasöre kopyalayın ve satırları sayın.
Cevap50
50 satır. 47–50 numaralı mesajlar yalnızca işlenmiş WAL çerçevelerinde bulunur. Yalnızca 16. çerçeveden sonraki çerçevelerde görünen stok listesi mesajları işlenmiş durumun satırı değildir: motor bunları yok sayar.
- Nerede
- chatstore.db ve chatstore.db-wal birlikte: SELECT COUNT(*) FROM message;
- Olağan hata
- Ham çerçeveleri okuyarak satır saymak (işlenmemişleri de içerir) ya da ana dosyadaki 46'da kalmak.
Android için WhatsApp mesajları (msgstore.db)SOP-05 Mobil cihaz edinimi
S122 puan
Alım mesajı message tablosunun 49. satırıdır (1 numaralı sohbet, bu telefondan gönderilmiş). Veri tabanı bunun ne zaman gönderildiğini söylüyor? sent_ms değerini UTC'ye çevirin.
Cevap2026-03-06 07:12:44 UTC
sent_ms 1772781164000'dir, Unix epoch milisaniye: 2026-03-06 07:12:44 UTC; UTC+03:00'da yerel saat 10:12:44. Satır yalnızca işlenmiş WAL çerçevelerinde bulunur: ana dosya tek başına onu içermez.
- Nerede
- İşlenmiş durum, SELECT sent_ms FROM message WHERE _id = 49;
- Olağan hata
- Değeri yanlış bölmek, saniye saymak ya da yerel saati farkı olmadan vermek.
Android için WhatsApp mesajları (msgstore.db)Zaman damgası çözücü
S132 puan
Şoför, yerel saatle 10:00'dan önce bir alım saati almadığını söylüyor. 06:26:48 UTC'de gönderilen 43 numaralı mesaj 'Friday: pickup at Dock 4 later today. Time follows.' diyor. Rapor, işlenmiş durumdan hangi ifadeyi destekleyebilir?
CevapB — Uygulama, 16:00'yı belirten ilk mesajı bu telefonun saatine göre yerel saatle 10:12:44'te (07:12:44 UTC) gönderilmiş olarak sakladı; dosya şoförün bunu ne zaman gördüğünü göstermez.
43 numaralı mesaj saatin sonra geleceğini söylüyor; 16:00'yı belirten daha önceki bir satır yok. c seçeneği gönderme zamanını alma zamanına çevirir, d seçeneği dosyaların göstermediği bir silme uydurur, a seçeneği satırla çelişir. b bile sınırlıdır: bu uygulamanın bu telefonun saatiyle neyi sakladığını anlatır.
- Nerede
- İşlenmiş durum, message tablosunun 43 ve 49 numaralı satırları (body, sent_ms).
- Olağan hata
- 'Gönderildi'yi 'alındı' diye okumak ya da veri boşluğunu silme hikâyesiyle doldurmak.
Android için WhatsApp mesajları (msgstore.db)SOP-09 Raporlama ve akran incelemesi
S142 puan
49 numaralı mesaj 'Pickup is 16:00 at Dock 4. Please confirm.' diyor ve edited_ms değeri 2026-03-06 07:14:20 UTC. WAL'da yapılan bir metin araması 7 ve 10 numaralı çerçevelerde 'Pickup moved to 16:00 at Dock 4. Please confirm.' ifadesini de buluyor. Rapor hangi ifadeyi destekleyebilir?
CevapB — Dosya sayfanın iki işlenmiş sürümünü tutuyor: ilk ifade eski çerçevelerde, güncel ifade 16. çerçevede. edited_ms ile birlikte bu, uygulamanın kaydettiği bir düzenlemeyle uyumludur; dosyalar bunu kimin yaptığını, nedenini ya da şoförün ne gördüğünü göstermez.
7 ve 10 numaralı çerçeveler, WAL hiç denetim noktasına alınmadığı için eski bir sayfa sürümünün geride bıraktığı geçerli, işlenmiş çerçevelerdir. Bunlar önceki durumlardır; silinmiş ya da kurtarılmış veri değildir ve yalnızca WAL onları tuttuğu sürece vardır: aynı telefonun başka bir toplaması bunları içermeyebilir. İfade yalnızca 'moved to' yerine 'is' olarak değişir; niyet dosyalarda yoktur.
- Nerede
- chatstore.db-wal 7, 10 ve 16 numaralı çerçeveler (sayfa 5); işlenmiş durum, 49 numaralı satır (body, edited_ms).
- Olağan hata
- Eski çerçevelere 'silinmiş veri' demek ya da bir düzenlemeye amaç yüklemek.
S152 puan
chatstore.db-wal üzerinde yapılan bir metin araması 18 ve 21 numaralı çerçevelerde 'Stock list part 1' ifadesini buluyor; ancak işlenmiş durumun sorgusu bunu döndürmüyor. 21. çerçeve ayrıca 49 numaralı satırı revoked sütunu 1 olarak gösteriyor; işlenmiş durumda revoked = 0. Rapor bunu nasıl ele almalı?
CevapB — 17–22 numaralı çerçevelerin işlenmemiş bir işleme ait olduğunu ve veri tabanı durumunun parçası olmadığını belirtmek; bunları saklanmış mesaj ya da geri alma olarak saymadan tanımlamak ve işlemin neden tamamlanmadığını dosyaların göstermediğini not etmek.
Son işleme çerçevesinden sonraki çerçeveler bitmemiş bir işlemin sonudur. Okuyucu bunları uygulamaz; veri tabanı bu satırları ya da bu bayrağı hiç tutmadı. Bunları dışarıda bırakmak (c) incelemecinin ihtiyaç duyduğu bir olguyu gizler; saymak (a) ya da açıklamak (d) dosyaların ötesine geçer. Neyin var olduğunu, hangi durumda olduğunu ve dosyaların neyi söyleyemediğini yazın.
- Nerede
- chatstore.db-wal 17–22 numaralı çerçeveler (16. çerçeveden sonra işleme işareti yok); 21. çerçeve 9. sayfadır.
- Olağan hata
- Bir hex düzenleyici gösteriyor diye işlenmemiş bir çerçevedeki ham sayfayı veri tabanı içeriği saymak.
F-04 İnceleme günlüğüSOP-09 Raporlama ve akran incelemesiSOP-05 Mobil cihaz edinimi
03Kurulan kronoloji
Doğru cevapların kurduğu haliyle 14 Mart 2026 Cumartesi. Yerel saat UTC+3'tür.
| UTC | Yerel | Olay | Kaynak |
|---|---|---|---|
| 06:26:48 | 09:26:48 | Bu telefondan gönderilen 43 numaralı mesaj: 'Friday: pickup at Dock 4 later today. Time follows.' | chatstore.db |
| 06:58:12 | 09:58:12 | Ana dosyanın son değişiklik zamanı (dosya sistemi): ana dosyaya son denetim noktası | acquisition-log.txt |
| 07:12:44 | 10:12:44 | 49 numaralı mesaj gönderildi olarak saklandı: ilk ifade 'Pickup moved to 16:00 at Dock 4. Please confirm.' (işlenmiş çerçeve) | chatstore.db-wal |
| 07:12:46 | 10:12:46 | 49 numaralı mesajın received_ms değeri (sent_ms'den iki saniye sonra) | chatstore.db-wal |
| 07:14:20 | 10:14:20 | 49 numaralı mesajın edited_ms değeri: güncel ifade 'Pickup is 16:00 at Dock 4. Please confirm.' | chatstore.db-wal |
| 07:21:05 | 10:21:05 | 50 numaralı mesaj, alınan: 'Confirmed. I will be there at 15:50.' | chatstore.db-wal |
| 07:46:31 | 10:46:31 | WAL dosyasının son değişiklik zamanı (dosya sistemi): chatstore.db-wal dosyasına son yazma | acquisition-log.txt |
04Puanlama
1–11. sorular birer puan, 12. soru üç puan değerindedir: toplam 24 puan. Bulgu paragrafı puanla değerlendirilmez; aşağıdaki dört ölçüte göre işaretleyin ve değerlendirmede tartışın.
| Puan | Sonraki adım |
|---|---|
| 20–24 | Sağlam. Gerçek bir raporun gözetimli incelemesine geçin ya da yapmadıysanız VP-01'e geçin. |
| 13–19 | Kaçırılan her soruyu açıklaması ve bağlantılı kütüphane kaydıyla gözden geçirin, ardından WAL sorularını Q6–Q9 baytlardan yeniden cevaplayın. |
| 0–12 | Önce mobil ve zaman modüllerini çalışın, sonra paketi baştan tekrarlayın. |
Bulgu paragrafı: ölçütler
- ☐ Rapor ana dosyayı, işlenmiş durumu ve son işleme çerçevesinden sonraki çerçeveleri ayırır.
- ☐ Her zaman kendi esasını taşır: Unix epoch milisaniye, UTC ya da farkıyla yerel saat.
- ☐ İfade, bir kişinin ne yaptığını, amaçladığını ya da gördüğünü değil, uygulamanın neyi sakladığını anlatır.
- ☐ Dosyaların yalnızca eskimiş ya da işlenmemiş olarak gösterdiği hiçbir şeye 'silinmiş' ya da 'kurtarılmış' denmez.
05Değerlendirme
- Hash'lemeden hiçbir şey açmayın. WAL çifti, bakılarak değişen bir delil türüdür: onu açan bir motor denetim noktası alıp WAL'ı silebilir ve önemli olan kısım gider.
- Üç bölge, üç cümle. İşlenmiş durum: veri tabanının tuttuğu. Son işlemeden sonraki çerçeveler: sayılmadan tanımlanan bitmemiş bir işlem. Önceki kuşağın eski çerçeveleri: artık, bu veri tabanı durumunun parçası değil.
- Eskimiş bir çerçeve, bir sayfanın önceki işlenmiş durumudur. Silinmiş veri değildir, kurtarılmış veri değildir ve yalnızca WAL denetim noktasına hiç alınmadığı için vardır. Bunu söyleyin ve başka bir toplamanın farklı olabileceğini de söyleyin.
- sent_ms, bu uygulamanın bu telefonun saatiyle sakladığı değerdir. Alma zamanı değildir, sunucu zamanı değildir ve şoförün telefonu hakkında bir ifade değildir. Ne received_ms ne edited_ms kimin ne yaptığını ya da nedenini söyler.
- Kopya, -shm dosyası olmadan yapılmış bir dosya sistemi çıkarımıydı. Bu olağandır: paylaşılan bellek dizini motor tarafından yeniden kurulur ve tek başına delil değildir. Yokluğunu açıklayıp geçmek yerine inceleme günlüğüne kaydedin.
06Örnek bulgu
chatstore.db ve chatstore.db-wal çifti (SHA-256 incelemeden önce kaydedildi) kopyalar üzerinde incelendi. Ana dosya WAL kipindedir, 4096 baytlık sayfalara sahiptir ve en son 6 Mart 2026'da 06:52:30 UTC'de gönderilen 46 mesaj içerir. WAL 55 tam çerçeve tutar: 1–16 numaralı çerçeveler işlenmiştir (son işleme çerçevesi 16, veri tabanı boyutu 8 sayfa), 17–22 numaralı çerçeveler işleme çerçevesi olmayan bir işlemin geçerli çerçeveleridir ve veri tabanı durumunun parçası değildir, 23–55 numaralı çerçeveler önceki bir WAL kuşağının tuz değerlerini taşır. İşlenmiş durum 50 mesaj içerir. Bu telefondan gönderilen 49 numaralı mesaj, o telefonun saatine göre sent_ms 07:12:44 UTC (yerel saat 10:12:44, günlükte belirtildiği gibi UTC+03:00) ile saklanmıştır; aynı sohbette alıma değinen önceki mesaj, yerel saat 09:26:48'deki 43 numaralı mesaj, saatin sonra geleceğini belirtir. 49 numaralı mesajın bir düzenlemesi 07:14:20 UTC'de kayıtlıdır. Dosyalar, şoförün telefonunun mesajı ne zaman aldığını ya da gösterdiğini, onu kimin düzenlediğini ya da sonraki işlemin neden tamamlanmadığını göstermez. Güven: yapı ve saklanan değerler için yüksek; davranış hakkında hiçbir sonuç çıkarılmaz.