首頁 >微信小程式 >微信開發 >iOS版微信聊天記錄檢視器步驟詳解

iOS版微信聊天記錄檢視器步驟詳解

Y2J
Y2J原創
2017-04-27 14:21:316255瀏覽

Updates

[2016.10.14]
感謝大家對本軟體的喜愛!最近發現iOS微信資料庫的儲存方式發生了改變,原本儲存在Friend表中的好友數據,現在已經改在了friend_meta表中,而且欄位完全不一樣,所以本軟體的當前版本不能查看最新的微信聊天記錄,部落客現在手上有一個很迫切的任務,等完成後會研究並開發新版本,到時會在本文更新並通知,再次感謝大家的支持!

摘要

iPhone中的微信是不是佔用了越來越多的空間呢?不想刪圖片?不捨得刪影?那就轉移到電腦硬碟上來吧,在Windows中使用本軟體進行查看、搜索,手機上的空間就可以騰出來了!本文詳細介紹了軟體的使用說明,以及介紹了微信聊天記錄資料儲存格式,並給出了本軟體與原始碼的下載位址,最後是iPhone聊天記錄中圖片與視訊資料的清理方法。

1. 前言

隨著使用微信的日子變長,手機中微信所佔用的空間也越來越大,iPhone的儲存空間也日益緊缺,其中圖片、影片所佔的空間最大,像我這樣什麼都要追求完整性的人,是堅持不會刪除任何一張照片或影片的,喜歡用手機拍照片影片的我,每過一段時間就把照片影片移到電腦存儲,騰空手機。但到了每一兩天都要騰空間的時候,我發現這樣不是長久之道,看了看微信已經佔用了2個多G的空間,這樣下去不是辦法,現在騰訊官方沒有iOS版本微信的聊天記錄轉儲硬碟工具(Android的好像有);即便有,在Windows上要求能夠像在手機上查閱;微信內建的聊天記錄備份恢復功能是為轉儲到其它設備設計的,聊天記錄在伺服器只能存放7天,而且2G這麼大的資料要上傳到候年馬月? Smile with tongue out

因此,乾脆自己寫一個聊天記錄查看器吧,把資料挪到電腦大硬碟,這樣就可以放心地在手機上刪圖片、視訊啦Hot smile。以下先給出本人開發的微信聊天記錄檢視器的使用說明,以及本人分析猜測的聊天記錄資料儲存格式,可是不全,只能顯示最主要的資料內容,有興趣的朋友可以一塊分析完善。

2. 使用說明

首先說明,該軟體目前僅支援iPhone上的微信聊天記錄。以下分別對軟體的使用方法進行詳細說明。

2.1 資料轉儲

#使用iTools 等第三方工具將微信(WeChat)應用程式中Documents 目錄匯出到電腦硬碟保存,目錄中包含所有在此iPhone 上登入過的微信帳號的聊天記錄,也可以只匯出某一個帳號的聊天記錄。每一個微信帳號的資料都儲存在以該微信ID的MD5值為名稱的資料夾中,例如,圖2-1中 Documents 目錄下32位數字名稱的資料夾分別是不同的微信帳號。

图 2-1 Document目录示例
圖2-1 Documents目錄範例

#2.2 選擇資料庫

聊天記錄資料庫檔案存放在微信帳號資料夾內的DB 檔案中,檔案名稱為MM.sqlite。本文最後將提供一個聊天記錄例子,程式運行時會提示選擇資料庫文件,選擇以下文件即可:06af9525a11ebb4f49ec72be6d165d10\DB\MM.sqlite。

2.3 主介面

#

啟動軟體,選擇資料庫載入完成後,程式的主介面如圖2-2所示,左側是該微信帳號的好友列表,按拼音首字母排序,右側是具體的聊天記錄內容。好友清單分為3個標籤頁,分別是“好友”、“群組”、“其它”,顧名思義,單獨好友在“好友”標籤頁,群組聊天在“群組”標籤頁,剩下的訂閱號碼、服務號等等在「其它」標籤頁。好友列表上方可以搜尋好友,聊天內容上方可以搜尋文字。點選好友清單中的好友,右側的聊天內容視窗將會載入與該好友聊天的具體內容。

由於本程式採用的是EO.WebBrowser控制試用版(部落客窮~ Crying face),每次程式啟動後,聊天內容視窗下側會出現購買授權的提示,關閉它即可,不會影響後續閱讀。

图 2-2 微信聊天记录查看器主界面
圖2-2 微信聊天記錄檢視器主介面

2.4 資料型別

2.4.1 文字

就像手機中顯示的那樣,採用氣泡風格顯示,如圖2-3所示。

 

图 2-2 数据类型示例:文字
圖2-3 資料類型範例:文字

2.4.2 表情

可以顯示微信自帶的小型emoji表情,如圖2-4所示。可以顯示的所有emoji表情請參考圖2-5。

图 2-3 数据类型示例:emoji表情
圖2-4 資料型別範例:emoji表情

图 2-4 所有能显示的 emoji
圖2-5 所有能顯示的emoji

除了emoji 以外,還可以顯示微信官方的動畫表情,如圖2-6所示。

图 2-5 数据类型示例:动画表情  图 2-5 数据类型示例:动画表情  图 2-5 数据类型示例:动画表情iOS版微信聊天記錄檢視器步驟詳解  iOS版微信聊天記錄檢視器步驟詳解
#圖2-6 資料類型範例:動畫表情

除了這兩種表情以外,微信使用者也常看到許多非官方表情,如果想在這軟體裡顯示的話,需要進行額外的資料匯出工作,也不複雜:照樣使用iTools 開啟微信App的這個目錄:/Library/WechatPrivate/ emoticon1,將此資料夾複製到本軟體的安裝目錄,覆蓋原有的emoticon1 資料夾即可。

2.4.3 圖片

聊天記錄中的圖片如圖2-7所示,點擊圖片將會呼叫本機預設的*.jpg 檔案關聯程式來查看大圖,預設的程式是Windows Photo Viewer。

图 2-6 数据类型示例:图片
圖 2-7 資料類型範例:圖片

2.4.4 視訊& 小視訊

聊天記錄中的視訊與小視訊如圖2-8所示,點選視訊將會呼叫本機預設的*.mp4 檔案關聯程式來觀看影片。

图 2-7 数据类型示例:视频 & 小视频
圖2-8 資料型別範例:視訊& 小視訊

2.4.5 語音

聊天記錄中的語音如圖2-9所示,點選將會播放語音內容。

图 2-8 数据类型示例:语音
圖2-9 資料類型範例:語音

#2.4.6 分享連結

聊天記錄中的分享連結如圖2-10所示,點選連結將會呼叫瀏覽器查看原網頁。

图 2-9 数据类型示例:分享链接
圖2-10 資料型別範例:分享連結

#2.4.7 位置資訊

聊天記錄中的位置如圖2-11所示,點擊連結將會呼叫瀏覽器查看具體的地圖信息,如圖2-12所示。

图 2-10 数据类型示例:位置信息
圖2-11 資料型別範例:位置資訊

图 2-11 浏览器查看具体的位置信息
圖2-12 瀏覽器查看特定的位置資訊

2.4.8 名片

聊天記錄中的名片訊息如圖2-13所示。

图 2-12 数据类型示例:名片
圖2-13 資料類型範例:名片

2.4.9 語音、視訊電話     
聊天記錄中的語音、視訊電話只能給出當時的通話時間等資訊(微信是不可能錄製你的通話內容DiOS版微信聊天記錄檢視器步驟詳解),如圖2-14所示。

图 2-13 数据类型示例:语音、视频电话
圖2-14 資料類型範例:語音、視訊電話

2.5 搜尋好友

 

當好友資料眾多時,從左邊的好友清單上方搜尋欄內輸入好友的關鍵字,可以是中文,也可以是拼音,但目前版本不能是拼音首字母,例如:搜尋“張三”,可以輸入“張”、“三”、“zhangsan”或“zhangs”等等,但不能輸入“zs”。輸入內容時,搜尋結果視窗將即時出現,並列入符合關鍵字的好友,如圖2-15所示。點擊搜尋結果的好友,將自動載入與他聊天的內容。

iOS版微信聊天記錄檢視器步驟詳解
圖2-15 搜尋好友範例

#2.6 搜尋聊天內容

聊天內容的搜尋分為“搜尋目前好友”與“搜尋所有好友”,在聊天內容視窗上方的下拉框選擇即可。在搜尋欄內輸入關鍵字,回車後將進行搜索,搜尋結束後將顯示搜尋結果列表,點擊某筆記錄後,聊天內容視窗將顯示並高亮關鍵字,如圖2-16所示。這裡提示:搜尋所有好友耗時會比較長。

图 2-16 搜索聊天内容示例
圖2-16 搜尋聊天內容範例

2.7 頁面跳轉

聊天內容視窗右上角是導覽按鈕,可進行翻頁。若頁數過多時,可以直接點擊頁數,將彈出跳轉頁面的輸入窗口,輸入想要查看的頁碼後將跳轉至該頁面,如圖2-17所示。

iOS版微信聊天記錄檢視器步驟詳解
iOS版微信聊天記錄檢視器步驟詳解
圖2-17 頁面跳轉範例

3. 微信聊天記錄格式

聊天記錄的根目錄是以使用者微信ID使用者名稱(不一定是微信ID,請見下文)的MD5雜湊值為名的資料夾。下文假設root為根目錄。聊天記錄最主要的內容是一個SQLite類型的資料庫檔案MM.sqlite,路徑是root\DB\MM.sqlite。以下是本人對此資料庫內容格式的分析結果。

3.1 資料表

#這裡先講兩個本軟體用到的資料表,分別是Friend表與Chat_XXX表,XXX表示好友微信ID的MD5值。

3.1.1 Friend表格

這個表儲存了所有的聯絡人,除了好友以外,還包括非好友、訂閱號碼、服務號等等。

(1) 欄位:type

此欄位可以將好友的型別分類,由於本軟體只分成了好友、群組、其它等3類,所以下面這個表大家就參考著看吧,在本軟體的程式碼中沒有用上。

表 1-1 Friend 資料表 type 欄位說明(猜測)


##

##0000 0000 0該好友在群組聊天中,但未新增好友50000 0000 0好友&其它6#0000 0000 0#非好友70000 0000 0#好友&其它#670000 0語音提醒257#000被封鎖朋友圈的好友#710000 0收藏、加星號的好友2119##1
值(二進位) ##說明
1 0000 0000 0001 好友&其它
2 #0000 0000 0010 #聊天群組&已刪除的服務號碼&其它
#3 0000 0000 0011 好友&其它
#4 100
101
110
111
100 0011
1 0000 0001
#100 0111
#000 0100 0111已置頂的好友
259 0001 0000 0011 #被封鎖朋友圈的好友
#263 0001 0000 0111 被封鎖朋友圈的好友

可見,第0位表示該聯絡人是否已新增好友;第6位表示該好友是否加星號;第8位表示該好友是否被封鎖朋友圈;第11位表示該好友是否在手機的好友清單中置頂。等等等等,本人愚昧,只悟出這麼多,剩下的大家感興趣的可以去分析。

(2) 欄位:UsrName

#UsrName欄位中,以「gh_」開頭的都是訂閱號碼、服務號,以「 @chatroom」結尾的都是群組。

3.1.2 Chat_XXX表

XXX表示好友微信ID的MD5值,每個好友的記錄都存放在單獨一個表當中。

(1) 欄位:Message

#代表該訊息記錄的具體內容。

(2) 欄位:Type

代表該訊息的類型,在第3.2節有具體說明。

(3) 欄位:Des

0表示本人發送的訊息,1表示對方發送的訊息。

(4) 欄位:CreateTime

#日期轉換:CreateTime欄位儲存的是Unix時間戳,在sql語句中透過以下方式可以轉換:

select datetime(createtime, 'unixepoch', 'localtime') from chat_XXX

3.2 訊息類型

3.2.1 文字

#聊天記錄的資料庫檔案為:root\DB\MM.sqlite。

Friend表儲存所有好友的訊息,欄位UsrName是唯一識別好友的ID,但不一定是微信ID,若使用者是用QQ號申請的微信,則UsrName是qq12345678形式,若使用微信ID申請的話,則UsrName就是微信ID,若使用手機號碼申請的話,則UsrName就是wxid_XXXXX形式。不管怎樣,將此UsrName進行MD5運算,得到的雜湊值,前面加上「Chat_」得到的字串,就是存放與此好友所有聊天記錄的表名,如:Chat_a500325c723649ddb75eda10635edf82。群組也是一樣。

Friend表的ShortPY欄位儲存了有好友的備註訊息,但是編碼不一樣。

聊天記錄表中,Message欄位就是與該好友的聊天記錄的所有信息,若是文本,則直接存儲,其它格式,請見下面章節。其中CreateTime欄位是訊息產生的時間;Des欄位若為0則是使用者傳送給好友的訊息,若為1則是好友傳送過來的訊息;其中Type欄位若為1,則訊息為文字訊息。

3.2.2 圖片

在好友的聊天記錄表中,假設為Chat_ a500325c723649ddb75eda10635edf82,如果字段Type為3,則資訊是圖片。 MesLocalID欄位是數字,假設為“407”,圖片儲存在root\Img\a500325c723649ddb75eda10635edf82\下的“407.pic”,其中“407.pic_thum”是該圖片的縮圖。

3.2.3 視訊

在好友的聊天記錄表中,假設為Chat_ a500325c723649ddb75eda10635edf82,如果字段Type為43,則該資訊是影片。 MesLocalID欄位是數字,假設為“8011”,影片儲存在 root\Video\a500325c723649ddb75eda10635edf82 下的“8011.mp4”,其中“8011.video_thum”是該影片的縮圖。

3.2.4 小視訊

在好友的聊天記錄表中,假設為Chat_ a500325c723649ddb75eda10635edf82,,若字段Type為62,則該資訊是小視頻。 MesLocalID欄位是數字,假設為“8011”,影片儲存在 root\Video\a500325c723649ddb75eda10635edf82 下的“8011.mp4”,其中“8011.video_thum”是該小影片的略縮圖。

3.2.5 語音

在好友的聊天記錄表中,假設為Chat_ a500325c723649ddb75eda10635edf82,如果字段Type為34,則該訊息是語音片段。 MesLocalID欄位是數字,假設為“8938”,影片儲存在 root\Audio\a500325c723649ddb75eda10635edf82 下的“8938.aud”。

AUD文件其實就是缺少頭資訊的AMR文件,需要在文件頭加入「#!AMR」才能成為AMR文件,然後就可以用一些播放軟體開啟了(其實能播放AMR的軟體比較少,目前只知道QQ影音可以播放)。

將AUD轉換為AMR的控制台指令:copy head.txt/b + 476.aud/b 476.amr,其中head.txt中的內容就是「#!AMR 」。

本程式呼叫 FFmpeg 提供的工具轉換成 WAV 檔案再播放,這是一個很強大的軟體,可以對許多音影片進行播放、轉換格式。

3.2.6 分享連結

在好友的聊天記錄表中,假設為Chat_ a500325c723649ddb75eda10635edf82,,若字段Type為49,則該訊息是分享鏈接,在Message字段中之間的就是鏈接地址。

3.2.7 位置

在好友的聊天記錄表中,假設為Chat_ a500325c723649ddb75eda10635edf82,如果字段Type為48,則該資訊是非實時位置信息,在Message字段中有具體的位置坐標,在該信息的XML結構裡:msg –> location –> x 與y 字段中存儲位置坐標。

3.2.8 動畫表情

在好友的聊天記錄表中,假設為Chat_ a500325c723649ddb75eda10635edf82,,若欄位Type為47,則該資訊是一個動畫表情。在該資訊的XML結構裡:msg –> emoji –> md5字段中儲存表情的md5值,假設該表情的MD5值是:d0546d1d8940bf82def5cc8b19185e1a,則在iPhone微信的檔案目錄中:bf82def5cc8b19185e1a,則在iPhone微信的檔案目錄中: emoticon1,儲存著以該MD5值為文件名的文件,如:d0546d1d8940bf82def5cc8b19185e1a.pic,其實它是一個GIF文件,這樣就可以連接到該表情了。

3.2.9 名片

在好友的聊天記錄表中,假設為Chat_ a500325c723649ddb75eda10635edf82,如果字段Type為42,則該資訊是一張名片,在該資訊的XML架構裡:msg –> username 欄位中儲存微信ID,msg –> nickname 欄位中儲存著微信名。

3.2.10 語音電話、視訊電話

##在好友的聊天記錄表中,假設為Chat_ a500325c723649ddb75eda10635edf82表格,若欄位Type為50,則該資訊為電話記錄。裡面有時長訊息:

#4.軟體下載與來源程式碼

Embarrassed smile

本軟體目前初步較穩定,但仍有不少BUG以及許多需要改進的地方,大夥兒拍磚手下留情

。以下連結是程式檔案及微信聊天記錄的例子,本文定稿時版本是1.0.1.6,最新版本請參考原始碼庫首頁。
軟體下載:

WechatHistory.zip (45.1 MB)

微信聊天記錄範例(iOS版微信產生的):

History_Example.zip (14.5 MB)
#由於軟體內包含了所有的(2015年3月18日前發布的)官方動畫表情,大概有90MB大小,動畫表情也許不是聊天記錄中最重要的內容,所以這部分數據沒有包含入上面文件的下載鏈接中,有需要的使用者可以單獨下載這些動畫表情:

WeChatHistory.Sticker_Gallery.ALL.Updated_By_20150318.zip.001 (48.0 MB)WeHistory.Sticker_Gall.ery. Updated_By_20150318.zip.002 (42.3 MB)

##############下載後解壓縮,並將「emoticon1」資料夾複製到WechatHistory 的資料夾中,覆寫原來的即可。 ######

更多的官方表情將在隨著官方發布陸續推出,詳情請到下文「原始碼下載」的網頁中下載,這裡給出部分官方更新的動畫表情:

#WeChatHistory.Sticker_Gallery_Patch.SpongeBob2.zip (1.41 MB)
WeChatHistory.Sticker_Gallery_Patch.LuoXiaoHei.zip (1.02 MB)

本軟件使用. Net Framework 4.0,所以需要先安裝執行程式庫後才能使用本軟體:

#www.microsoft.com/zh-cn/download/details.aspx?id=17718  或直接下載:

download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_xFull_x86_x64 .exe (48.1 MB)

如果有人擔心軟體有後門,企圖收集大家的隱私資訊的,可以直接下載原始碼,自己檢查及編譯後使用:

原始碼下載:github.com/cxun/WeChatHistory

開發工具: Microsoft Visual Studio 2012

程式語言:C

# .Net 版本:.Net Framework 4.0

5. 刪除訊息記錄

聊天記錄從iPhone上全部複製到電腦硬碟之後,使用本軟體嘗試可以正常查看之後,就可以從iPhone上刪除數據,騰出空間啦。聊天記錄最佔用空間的有兩:影片與照片,刪除方式有以下兩種:

#5.1 使用微信自帶的清理功能

在微信的“設定”-->“通用”-->“清理微信儲存空間”,可以選擇性地刪除

優點:方便、直覺、有效率、可以選擇性刪除(選擇好友、縮圖)

缺點:刪除後,在iPhone的聊天視窗內點擊已刪除的圖片或影片時,會提示“無法載入圖片”、“影片已過期或已清除”,無法恢復

5.2 手動清理

在Windows中使用iTools等工具,開啟微信的目錄,找到微信存放圖片(Img)與影片( Video)的目錄,如:

/Documents/06af9525a11ebb4f49ec72be6d165d10/Img
#/Documents/06af9525a165d10/Img
#/Documents/06af9525a1006

##將這兩個資料夾內的所有內容全部刪除即可。這裡可以看到很多以MD5值為名稱的資料夾,每個代表一個好友、群組,裡面存放與其聊天的圖片或影片。

優點:刪除後,在iPhone的聊天視窗內點擊已刪除的圖片或影片時,微信會自動從伺服器重新下載,這樣在手機上也可以重新檢視

缺點:操作繁瑣、不直覺、不可以選擇性刪除(肉眼無法將好友與MD5值相符)

以上兩種方法各有利弊,無論選擇哪一種方式,下次匯出聊天記錄時,都可以直接複製並覆寫上一次匯出的聊天記錄(若有不放心的、或硬碟空間實在空餘得接灰的、或者是完整性強迫症患者的,可以選擇不覆蓋,另起文件夾存放)。

6. 結語

#最後,祝福這款軟體能給大家帶來方便,同時,希望騰訊公司微信團隊在今後的微信版本中不要加密資料庫,否則此款軟體就完全作廢了,如果真要加密的話,希望騰訊公司能開發一款更好用的微信聊天記錄管理器,支援資料的匯出、查看,方便廣大微信用戶的使用。

以上是iOS版微信聊天記錄檢視器步驟詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn