Mesajlaşma ve uygulamalarİleriMesajlaşma

Android için Telegram yerel önbelleği (cache4.db)

Telegram Android cache4.db: diyaloglar, serileştirilmiş TL blob'ları ve Unix saniye tarihli mesajlar, kullanıcılar, sohbetler, gizli sohbetler ve kişiler.

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çimWAL 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ümlerAnglano 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

AlanNe anlatır
messages_v2.uidMesajın ait olduğu diyalog kimliği (DID).
messages_v2.outMesaj kullanıcı tarafından gönderildiyse 1, alındıysa 0.
messages_v2.read_state / send_state2017 çalışmasında: read_state 2 teslim edildi-okunmadı, 3 teslim edildi-okundu; send_state 0 gönderildi, 1 beklemede.
messages_v2.dataSerileştirilmiş Message nesnesi (metin, medya, eylem, gönderen/alıcı kimlikleri).
dialogsKonuşma başına bir satır: last_mid (son gönderilen veya alınan mesaj), unread_count (alınmış ancak okunmamış).
enc_chatsGizli sohbetler; diyalog kimliği enc_chats.uid değerinin 32 bit sola kaydırılmış hâlidir.
users / chats / contactsSerileştirilmiş kullanıcı ve sohbet nesneleri; yerel kullanıcı da kişinin listesindeyse contacts.mutual = 1.

05Zaman damgaları

AlanKodlamaNot
messages_v2.dateUnix epoch, seconds2017 ç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.dateUnix epoch, secondsKonuş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ışı

  1. Her hesap klasörü için cache4.db dosyasını -wal/-shm dosyalarıyla toplayın.
  2. Sorgulamadan önce şema sürümünü ve gerçek tablo adlarını kaydedin.
  3. data BLOB'larını uygulama sürümüne uygun TL ayrıştırıcıyla çözün.
  4. 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

  1. 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
  2. Telegram for Android — MessagesStorage.java Telegram (DrKLO/Telegram on GitHub) · erişim 2026-10-14
  3. Telegram for Android — gradle.properties (APP_PACKAGE) Telegram (DrKLO/Telegram on GitHub) · erişim 2026-10-14
  4. SQLite — PRAGMA statements (secure_delete) SQLite · erişim 2026-10-14
  5. SQLite — Write-Ahead Logging SQLite · erişim 2026-10-14