01Konum
- /data/data/org.telegram.messenger/files/cache4.db (+ cache4.db-wal, cache4.db-shm)
- /data/data/org.telegram.messenger/files/account<N>/cache4.db (additional accounts)
02Yanıtladığı sorular
- Yerel önbellekte hangi diyaloglar (kullanıcılar, gruplar, kanallar, gizli sohbetler) var?
- Hangi mesajlar, hangi yönde ve hangi okunma durumuyla önbelleğe alındı?
- Önbelleğe göre mesaj durumu veya diyalog etkinliği en son ne zaman değişti?
03Biçim ve sürümler
| Biçim | WAL modunda SQLite; güncel kaynak kodu dosyayı PRAGMA secure_delete = ON ile açar. Tablolar arasında messages_v2 (mid, uid, read_state, send_state, date, data BLOB, out, ttl, media …), dialogs (did, date, unread_count, last_mid, inbox_max, outbox_max, pinned …), users, chats, enc_chats ve contacts bulunur. BLOB'lar, her biri 32 bitlik bir yapıcı ile başlayan ikili TL serileştirmesindeki Telegram nesnelerini tutar. |
|---|---|
| Geçerli olduğu sürümler | Anglano ve ark. (2017), tablonun messages olarak adlandırıldığı Telegram 3.15–3.18 sürümlerini inceledi; güncel açık kaynak kod messages_v2 oluşturur ve LAST_DB_VERSION 179 değerini ayarlar. Ek hesaplar files/account<N>/ kullanır. |
04Temel alanlar
| Alan | Ne anlatır |
|---|---|
| messages_v2.uid | Mesajın ait olduğu diyalog kimliği (DID). |
| messages_v2.out | Mesaj kullanıcı tarafından gönderildiyse 1, alındıysa 0. |
| messages_v2.read_state / send_state | 2017 çalışmasında: read_state 2 teslim edildi-okunmadı, 3 teslim edildi-okundu; send_state 0 gönderildi, 1 beklemede. |
| messages_v2.data | Serileştirilmiş Message nesnesi (metin, medya, eylem, gönderen/alıcı kimlikleri). |
| dialogs | Konuşma başına bir satır: last_mid (son gönderilen veya alınan mesaj), unread_count (alınmış ancak okunmamış). |
| enc_chats | Gizli sohbetler; diyalog kimliği enc_chats.uid değerinin 32 bit sola kaydırılmış hâlidir. |
| users / chats / contacts | Serileştirilmiş kullanıcı ve sohbet nesneleri; yerel kullanıcı da kişinin listesindeyse contacts.mutual = 1. |
05Zaman damgaları
| Alan | Kodlama | Not |
|---|---|---|
| messages_v2.date | Unix epoch, seconds | 2017 çalışmasında mesaj durumunun son değişiklik zamanı olarak tanımlanır, gönderim zamanı olmayabilir; ör. 1491738135 = 2017-04-09 11:42:15 UTC. |
| dialogs.date | Unix epoch, seconds | Konuşmadaki son işlemin (gönderme, alma, silme vb.) zamanı. |
Ham değerleri Zaman damgası çözücü, yerel saatleri ise Yerel saatten UTC'ye ile çözün.
06İnceleme akışı
- Her hesap klasörü için cache4.db dosyasını -wal/-shm dosyalarıyla toplayın.
- Sorgulamadan önce şema sürümünü ve gerçek tablo adlarını kaydedin.
- data BLOB'larını uygulama sürümüne uygun TL ayrıştırıcıyla çözün.
- Mesajları diyaloglar, kullanıcılar ve sohbetlerle ilişkilendirin; gizli sohbet diyalog kimliklerini işaretleyin.
07Yorum tuzakları
- cache4.db bulut verisinin istemci önbelleğidir; bir mesajın yerelde olmaması hiç var olmadığı anlamına gelmez.
- 2017 çalışması silinen kayıtları VACUUM'a kadar kurtarabildi; güncel kod silinen içeriği sıfırlayan secure_delete'i etkinleştirir.
- Sütun anlamları eski sürümlerin incelenmesinden gelir; incelenen sürümde yeniden doğrulayın.
09Kaynaklar
- Forensic analysis of Telegram Messenger on Android smartphones (Digital Investigation 23, 2017, author copy) C. Anglano, M. Canonico, M. Guazzone · erişim 2026-10-14
- Telegram for Android — MessagesStorage.java Telegram (DrKLO/Telegram on GitHub) · erişim 2026-10-14
- Telegram for Android — gradle.properties (APP_PACKAGE) Telegram (DrKLO/Telegram on GitHub) · erişim 2026-10-14
- SQLite — PRAGMA statements (secure_delete) SQLite · erişim 2026-10-14
- SQLite — Write-Ahead Logging SQLite · erişim 2026-10-14