iphone上微信聊天記錄的儲存分析
由於隱私的原因,這里不能將自己的聊天記錄奉獻出來
設備:越獄后的iphone5 ios7.0.4
微信5.3.1
windows 7
首先打開微信(這里使用的是itools)
數據是儲存在Documents中
打開后,會發現幾個文件夾,它們由數字和字母組成,細心的人可能會發現它們都是有32位,其實每一個文件夾代表了一個用戶的記錄,
如果你的設備上有多個用戶登錄過的話,便會有多個這種文件夾出現
我們選擇一個打開后會發現很多的文件和文件夾
這里對部分的文件夾做簡單的介紹(其實有一些我也不知道里面放的是什么東西)
appicon:儲存了一些應用的圖標
audio :內有多個文件夾,分別儲存了和人聊天時的語音資料,格式為aud
img :內有多個文件夾,分別儲存了和人聊天時的發送的和介紹的照片,格式為pic
usr :內有很多usr格式的文件,但其實我們用記事本打開會發現文件的頭寫着
所以它應該就是JFIF圖片,
打開后會發現是很多人的頭像,其中有很多是陌生的,估計是搖一搖,附件的人,漂流瓶等產生的
video :內有多個文件夾,分別儲存了和人聊天時的視頻資料,格式為mp4
DB :這是這篇文章的重點,內有MM.sqlite文件,以sqlite數據庫儲存了聊天記錄的文字還有一些其他的信息
將在下面進行介紹
打開DB之后,我們會發現一個
大小挺大,后綴是sqlite
想到了什么,sqlite數據庫!
讓我們下載一個SQLiteSpy,這樣就能以圖形界面的方式來查看MM.sqlite內儲存的數據了
打開后我們會發現很多的表,它們以Chat_打頭,后面有接了一串數字和字母組成的東西,如果在仔細數一下會發現它們也是32位
點擊打開后會發現有以下幾個字段,記錄了聊天記錄
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生成的,大家可以自己驗證一下
如
總結
微信用sqlite數據庫儲儲存聊天記錄,數據庫文件叫做MM.sqlite,
將每一個用戶的用戶名用MD5的方式加密,並以此32位的序列加上Chat_為前綴作為表名,儲存對應的聊天記錄



