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

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具