微信儲存數據的分析


iphone上微信聊天記錄的儲存分析

由於隱私的原因,這里不能將自己的聊天記錄奉獻出來

設備:越獄后的iphone5 ios7.0.4

           微信5.3.1

           windows 7

 

首先打開微信(這里使用的是itools)

image

 

數據是儲存在Documents中

打開后,會發現幾個文件夾,它們由數字和字母組成,細心的人可能會發現它們都是有32位,其實每一個文件夾代表了一個用戶的記錄,

如果你的設備上有多個用戶登錄過的話,便會有多個這種文件夾出現

image

 

我們選擇一個打開后會發現很多的文件和文件夾

這里對部分的文件夾做簡單的介紹(其實有一些我也不知道里面放的是什么東西)

appicon:儲存了一些應用的圖標

audio     :內有多個文件夾,分別儲存了和人聊天時的語音資料,格式為aud

img       :內有多個文件夾,分別儲存了和人聊天時的發送的和介紹的照片,格式為pic

usr        :內有很多usr格式的文件,但其實我們用記事本打開會發現文件的頭寫着image所以它應該就是JFIF圖片,

      打開后會發現是很多人的頭像,其中有很多是陌生的,估計是搖一搖,附件的人,漂流瓶等產生的

video     :內有多個文件夾,分別儲存了和人聊天時的視頻資料,格式為mp4

DB        :這是這篇文章的重點,內有MM.sqlite文件,以sqlite數據庫儲存了聊天記錄的文字還有一些其他的信息

               將在下面進行介紹

 

打開DB之后,我們會發現一個

image

大小挺大,后綴是sqlite

想到了什么,sqlite數據庫!

讓我們下載一個SQLiteSpy,這樣就能以圖形界面的方式來查看MM.sqlite內儲存的數據了

打開后我們會發現很多的表,它們以Chat_打頭,后面有接了一串數字和字母組成的東西,如果在仔細數一下會發現它們也是32位

點擊打開后會發現有以下幾個字段,記錄了聊天記錄

image

createtime   :每一個聊天記錄的時間,為表示自GMT時間1970年1月1日零點以來的秒數

Message      :聊天記錄,文字或者是圖片,聲音,視頻的相關信息

status          :好像只有4和2兩種值,表示消息的來源,4表示對方,2表示自己

Imgstatus    :表示消息的類型,1代表文字,5,6代表表情,7,21表示聲音,2代表圖片

Type           :也是表示消息的類型,1代表文字,47代表表情,34代表聲音,3代表圖片,49代表發送給朋友的內容

Des            :感覺和status一樣,表示消息的來源,只是1表示對方,0表示自己

 

 

 

好了,讓我們回過頭來看一看之前的哪些32位的字母數字代表什么,他們應該代表相應的人,用於確認聊天記錄屬於和哪一個人

漢字編碼?不對,漢字編碼有長有短,不應該都是32位

是什么能將任意長度的序列轉換為32位的呢?

MD5!

在MM.sqlite中還有一個叫做Friend的表,里面儲存了UserName,NickName等信息

那些32位的序列便是根據UserName生成的,大家可以自己驗證一下

image

image

image

 

總結

微信用sqlite數據庫儲儲存聊天記錄,數據庫文件叫做MM.sqlite,

將每一個用戶的用戶名用MD5的方式加密,並以此32位的序列加上Chat_為前綴作為表名,儲存對應的聊天記錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM