999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

引入動態(tài)內(nèi)存分析的微信撤回消息恢復(fù)方法

2021-12-12 02:51:06倪雪莉梁廣俊
計算機工程與應(yīng)用 2021年23期
關(guān)鍵詞:微信方法

倪雪莉,梁廣俊

1.江蘇警官學(xué)院 計算機信息與網(wǎng)絡(luò)安全系,南京 210031

2.江蘇省電子數(shù)據(jù)取證分析工程研究中心,南京 210031

3.江蘇省公安廳 數(shù)字取證重點實驗室,南京 210031

根據(jù)微信團隊發(fā)布的《2019年微信數(shù)據(jù)報告》統(tǒng)計,2019年微信平均月活躍賬戶數(shù)達到11.5億,位居新型即時通信平臺的首位[1]。作為一種廣受用戶青睞的網(wǎng)絡(luò)傳媒工具,微信整合了電子郵件、網(wǎng)上聊天、博客、網(wǎng)上購物、網(wǎng)絡(luò)支付等眾多通信功能,其功能越來越豐富,應(yīng)用范圍越來越廣泛。與此同時,從信息安全的角度考慮,尤其針對電子數(shù)據(jù)取證,微信無疑成為一個龐大的證據(jù)庫[2]。2019年12月26日,《最高人民法院關(guān)于修改<關(guān)于民事訴訟證據(jù)的若干規(guī)定>的決定》頒布并從2020年5月1日起生效,標志著國家最高審判機關(guān)正式在司法解釋中確認了微信微博聊天記錄的證據(jù)位,微信聊天記錄等信息在訴訟中作為證據(jù)出現(xiàn)的頻率將會越來越高。

相對于傳統(tǒng)形式的證據(jù),微信聊天記錄作為一種電子數(shù)據(jù)要想具有相應(yīng)的證明效力,成為認定案件事實的依據(jù),必須滿足真實性、合法性和關(guān)聯(lián)性等基本要求[3]。微信自2014年發(fā)布的v5.3.1版本開始,便推出了消息撤回功能,用戶可以選擇撤回在2分鐘內(nèi)發(fā)送的消息,該特征在方便了用戶的同時,卻降低了微信證據(jù)內(nèi)容的完整性,在訴訟中可能難以達到證據(jù)真實性的要求[4]。

近年來,研究人員開始從存儲介質(zhì)、事件日志、文件系統(tǒng)、數(shù)據(jù)庫等方向著手研究微信消息的恢復(fù)方法。文獻[5]提出了一種基于SQLite3文件格式的刪除數(shù)據(jù)恢復(fù)方法,通過識別SQLite3文件格式,收集數(shù)據(jù)頁中的自由塊和未使用空間,最后選擇不同類別的恢復(fù)算法實現(xiàn)了刪除數(shù)據(jù)的恢復(fù);文獻[6]通過獲取Android手機中的數(shù)據(jù)庫文件和解密密鑰,在SQLite數(shù)據(jù)庫環(huán)境中提取出用戶的微信信息,其中包括聊天記錄、聯(lián)系人列表等,但該方法無法還原被刪除的聊天記錄;文獻[7]提出了一種基于KNN(K-Nearest Neighbor)算法的Android微信取證方法,該方法引入詞語相似度計算會話間的距離,將會話表示成特征詞的向量,用KNN算法對會話進行分類,迅速找到有關(guān)的聊天內(nèi)容,但同樣無法找到被刪除或撤回的消息記錄;文獻[8]通過逆向分析技術(shù)研究,獲知了微信等熱門應(yīng)用的密鑰生成算法以期破解加密的SQLite數(shù)據(jù)庫;類似的,文獻[9]分析了微信數(shù)據(jù)庫的加密算法和密鑰推導(dǎo)原理,并給出了不同取證環(huán)境下的數(shù)據(jù)庫解密過程,最終實現(xiàn)了語音和刪除消息的恢復(fù);文獻[10]對微信內(nèi)存文件中的特征變化進行分析,在一定程度上能夠通過特征值盲搜恢復(fù)部分文字、表情類消息,但并未對撤回消息的存儲原理進行研究,同時,該研究成果只適用于文本類消息,未實現(xiàn)圖片類消息的恢復(fù)。

傳統(tǒng)的移動智能終端即時通信應(yīng)用的取證研究主要集中在取證流程和基礎(chǔ)數(shù)據(jù)的提取上,這類取證分析存在流程規(guī)范不嚴謹、提取數(shù)據(jù)不完整等問題[11]。在微信取證技術(shù)的研究中,基于本地微信數(shù)據(jù)庫的研究占據(jù)了主流,而對微信運行過程中動態(tài)內(nèi)存的研究成果較少[12]。對于微信聊天記錄恢復(fù)的研究,目前的討論也大多集中在如何盡可能多地恢復(fù)被刪除的記錄,而對于被撤回消息恢復(fù)的理論研究和技術(shù)實踐,目前尚未形成完善的體系。在針對微信平臺的取證實踐過程中,僅通過本地微信數(shù)據(jù)庫恢復(fù)方法提取到的聊天記錄往往是不完整的,其中并不包含用戶的撤回消息,這顯然無法滿足訴訟中對于證據(jù)完整性、真實性的要求。

經(jīng)研究發(fā)現(xiàn),內(nèi)存中存在大量的緩存應(yīng)用數(shù)據(jù),這些數(shù)據(jù)具有極大的取證價值[13]。通過實踐發(fā)現(xiàn)用戶的撤回消息在微信內(nèi)存中有跡可循。因此,本文通過對微信內(nèi)存的獲取和分析技術(shù)展開研究,基于PC版微信撤回消息在動態(tài)內(nèi)存中的存儲原理,提出了一種針對微信文本、表情、圖片等多種類型撤回消息進行恢復(fù)的方法,并通過Python語言開發(fā)的工具,驗證了該方法的有效性和可行性。同時,該工具可直接應(yīng)用于微信取證場景。

1 PC中微信運行內(nèi)存的獲取

內(nèi)存分析在數(shù)字取證分析中扮演著越來越重要的角色,可以用來檢索加密密鑰或分析僅駐留在RAM中的惡意軟件。一般情況下,在分析之前需要獲取內(nèi)存中的信息[14]。

針對微信內(nèi)存鏡像數(shù)據(jù)提取,目前通用的方法主要有兩類:一是使用ProcDump工具提取,二是使用Windows操作系統(tǒng)自帶的管理工具提取。將兩種工具提取到的鏡像文件進行對比分析,以確保提取到完整的動態(tài)內(nèi)存文件。

1.1 利用ProcDump提取內(nèi)存鏡像

ProcDump是一個輕量級的命令行工具,可以嵌入到其他腳本中進行進程內(nèi)存鏡像的轉(zhuǎn)儲。使用該工具通過微信的進程號對微信進程進行轉(zhuǎn)儲,具體實現(xiàn)步驟如下:

(1)在命令提示符界面中輸入“tasklist”命令,找到微信應(yīng)用的PID(Process ID,進程ID號),如圖1所示。

圖1 微信進程號Fig.1 PID of WeChat

(2)使用ProcDump的“-ma”參數(shù),創(chuàng)建一個進程的轉(zhuǎn)儲文件,包括該進程所有線程以及句柄等信息,如圖2所示,此時ProcDump程序已經(jīng)為微信創(chuàng)建了內(nèi)存文件,存儲在D盤Procdump目錄下。

圖2 微信內(nèi)存轉(zhuǎn)儲文件Fig.2 Memory dump of WeChat

1.2 利用任務(wù)管理器提取內(nèi)存鏡像

Windows 10操作系統(tǒng)中自帶的任務(wù)管理器也提供了轉(zhuǎn)儲程序內(nèi)存、生成鏡像文件的功能,其轉(zhuǎn)儲微信內(nèi)存步驟如下:

(1)打開任務(wù)管理器并轉(zhuǎn)到詳細信息,選中需要轉(zhuǎn)儲的應(yīng)用,右擊創(chuàng)建微信內(nèi)存轉(zhuǎn)儲文件。

(2)轉(zhuǎn)儲完成后微信內(nèi)存文件的默認存放地址為C:Users[Administrator]AppDataLocalTemp,其中[Administrator]字段為當前計算機用戶名,該文件的名稱為WeChat.DMP。

1.3 兩種內(nèi)存鏡像文件對比

將分別用ProcDump和Windows自帶工具提取到的文件進行對比,發(fā)現(xiàn)利用Windows任務(wù)管理器創(chuàng)建的內(nèi)存鏡像比ProcDump創(chuàng)建的鏡像文件略大一些,分別如圖3(a)和(b)所示。究其原因,內(nèi)存提取所使用的Windows操作系統(tǒng)為64位,該系統(tǒng)自帶的任務(wù)管理器創(chuàng)建的轉(zhuǎn)儲文件也是64位,其中包含了WoW64子系統(tǒng)的信息。但是,ProcDump工具創(chuàng)建的內(nèi)存轉(zhuǎn)儲文件默認為32位,不包含WoW64子系統(tǒng)的信息。而PC版微信是一個32位程序,在用兩種方式創(chuàng)建內(nèi)存轉(zhuǎn)儲文件時會產(chǎn)生差異,因而任務(wù)管理器創(chuàng)建的包含WoW64子系統(tǒng)信息的內(nèi)存轉(zhuǎn)儲文件比ProcDump創(chuàng)建的不包含WoW64子系統(tǒng)信息的內(nèi)存轉(zhuǎn)儲文件略大一些。

圖3 三個鏡像文件對比Fig.3 Comparison of three image files

使用ProcDump的“-64”參數(shù)再創(chuàng)建一個轉(zhuǎn)儲文件,如圖3(c)所示,該文件為微信64位的轉(zhuǎn)儲文件。圖3(a)和(c)對比略有差異,主要是因為創(chuàng)建轉(zhuǎn)儲文件的時間不同而致,由于內(nèi)存的變化非常快,細小的時間差異產(chǎn)生的內(nèi)存轉(zhuǎn)儲可能包含不一致的數(shù)據(jù),如果同時創(chuàng)建,兩個文件之間將不會存在差異[15]。

因此可見,文獻[10]直接通過ProcDump得到的微信內(nèi)存鏡像文件并不完整,會對后續(xù)內(nèi)存的分析和消息的恢復(fù)產(chǎn)生影響,本文對采用ProcDump創(chuàng)建的微信64位內(nèi)存鏡像文件進行分析。

不同應(yīng)用程序的數(shù)據(jù)具有異構(gòu)性,但在內(nèi)存中以一種通用的與應(yīng)用程序無關(guān)的方式表示,因此可以跨各種應(yīng)用程序?qū)?nèi)存鏡像進行通用分析[16]。使用WinHex十六進制編輯器打開上述DMP內(nèi)存鏡像文件,查看其16進制數(shù)據(jù),具體如圖4所示。其中,文件頭為MDMP,對應(yīng)的十六進制值為“4D 44 4D 50”。

圖4 內(nèi)存鏡像十六進制數(shù)據(jù)Fig.4 Hexadecimal content of image file

2 微信撤回消息的存儲原理

2.1 撤回消息的特征字符

在微信安裝目錄下有一個動態(tài)鏈接庫文件WeChat-Win.dll,其中包含了消息撤回的函數(shù),用于執(zhí)行用戶相關(guān)的撤回操作,撤回函數(shù)相關(guān)的關(guān)鍵詞為“revokemsg”,如圖5所示。

圖5 “revokemsg”關(guān)鍵詞Fig.5 Keyword“revokemsg”

因此,在微信的內(nèi)存鏡像文件中,撤回消息的特征字符為“revokemsg”,也就是說,每一段撤回消息在內(nèi)存中的位置都與一對特征字符標簽“<revokemsg>”“</revokemsg>”相關(guān),如圖6所示。

圖6 特征字符在內(nèi)存中的體現(xiàn)Fig.6 Representation of characters in memory

2.2 撤回消息字段結(jié)構(gòu)

撤回消息在內(nèi)存中的具體字段結(jié)構(gòu)如圖7所示,分為消息頭與消息體。其中消息頭中存放該條撤回消息的一些屬性信息,如,消息的撤回方、ID、撤回狀態(tài)等,消息體中則直接存放該消息的內(nèi)容。

圖7 撤回消息字段結(jié)構(gòu)Fig.7 Field structure of revoking message

每段撤回消息都伴隨<revokemsg>和</revokemsg>標簽對出現(xiàn),該標簽對中間內(nèi)容為消息撤回后用戶的聊天窗口顯示的提示消息。若為本用戶撤回,則內(nèi)容為:“<![CDATA[你撤回了一條消息<a href=“weixin://revoke_edit_click”>重新編輯</a>]]>”,其中“重新編輯”是一條指向性的鏈接,給本用戶提供重新編輯撤回消息的接口。若消息為聊天對方用戶撤回,則內(nèi)容為:“"xxx(微信昵稱)"撤回了一條消息”。因此,可以根據(jù)該字段內(nèi)容的不同形式判斷該消息是由本用戶撤回還是他人撤回,尤其在微信群中,能直接定位群中的某個成員(昵稱),如圖8所示。

圖8 revokemsg標簽對間的消息解析Fig.8 Message parsing between revokemsg tag pairs

在<revokemsg>標簽之前的字段為通信對方的微信ID或所在微信群的群ID,個人微信ID以字符“wxid”為開始標志,而微信群ID以字符“@chatroom”為結(jié)束標志,通常這個ID占18~20位。通過該字段的解析,能夠獲知該撤回消息屬于哪個聊天對話窗口。

若為微信群,在</revokemsg>標簽之后依次為消息撤回者的微信ID,及群屬性信息,如該群中設(shè)置消息屏蔽的人數(shù)、該群的總?cè)藬?shù)等。若為聊天個人,在</revokemsg>標簽之后直接為一段固定的32位Hash密文的字符串。其中對于消息撤回者微信ID的解析尤為重要,能準確定位到該群中的某個成員(較之昵稱ID辨識性更高、更準確)。

值得注意的是,在微信內(nèi)存中以字符“1A”為分隔符(見圖9),分隔撤回消息的各字段,“1A”后一個字節(jié)表示該字段的總長度,單位為字節(jié)。其后為該字段含義的標志位,具體含義如表1所示,字段標志位后一個字節(jié)表示該字段內(nèi)容的長度,單位為字節(jié)。由此,可得知每個字段的開始結(jié)束位置,如“08 04 12”標志后即為撤回消息的長度及內(nèi)容。

圖9 分隔符及標志位Fig.9 Separators and flag bits

表1 字段標志位含義Table 1 Meanings of flag bits

2.3 撤回消息在內(nèi)存中的體現(xiàn)

微信聊天記錄主要包含的消息類型有:文本、表情、圖片等,而不同類型的撤回消息,在內(nèi)存中的體現(xiàn)形式不一。

2.3.1 文本消息

對于文本類消息,微信在通信過程中使用UTF-8的編碼方式編碼文本字符。如圖10中劃線的十六進制字符:“E4 BA BA E7 94 9F E5 AE 9E E5 A6 82 E9 92 9F E6 91 86 EF BC 8C E5 9C A8 E7 97 9B E8 8B A6 E4 B8 8E E5 80 A6 E6 80 A0 E4 B9 8B E9 97 B4 E6 91 86 E5 8A A8 E3 80 82”,通過UTF-8解碼得到中文字符“人生實如鐘擺,在痛苦與倦怠之間擺動。”,如圖11所示。

圖10 撤回的中文字符在內(nèi)存中的體現(xiàn)形式Fig.10 Representation of Chinese revoking message in memory

圖11 撤回消息的UTF-8解碼Fig.11 UTF-8 of revoking message

2.3.2 表情消息

對于表情類消息,微信將資源內(nèi)部的表情轉(zhuǎn)換為文本進行存儲,轉(zhuǎn)換形式為文本“[表情名字]”,如“[奸笑]”,再將此文本以UTF-8的編碼方式編碼。如圖12所示,十六進制表情消息內(nèi)容經(jīng)過UTF-8解碼后為“[奸笑][奸笑][奸笑]”,即為表情消息。

圖12 撤回的表情消息在內(nèi)存中的體現(xiàn)形式Fig.12 Representation of revoking emojis in memory

2.3.3 圖片消息

對于圖片類消息,與文本和表情類消息的存儲方式完全不同,圖片消息一經(jīng)發(fā)送即以DAT數(shù)據(jù)文件形式存放在計算機本地文件中,而在內(nèi)存相應(yīng)字段位置僅僅存放著指向該本地文件的路徑,如圖13。

圖13 撤回的圖片消息在內(nèi)存中的體現(xiàn)形式Fig.13 Representation of revoking pictures in memory

因此,根據(jù)內(nèi)存相應(yīng)字段中的路徑找到該圖片的DAT數(shù)據(jù)文件即可。經(jīng)研究分析發(fā)現(xiàn),微信在通信過程中對接收到的圖片文件按字節(jié)進行了異或加密處理,然后保存為DAT文件。異或加密算法是密碼學(xué)中一種簡單的對稱加密算法,當需要進行解密時,只需將加密后的結(jié)果與密鑰再次進行異或運算即可,加解密過程如公式(1)所示:

其中,M為原文,K密鑰,E為密文。

每一個微信賬號對應(yīng)的密鑰不同,可以嘗試通過已知明文攻擊來獲得密鑰。具體方法為:將明文JPEG圖片的文件頭“FF D8”與加密后的DAT文件(如圖14)的前兩字節(jié)“B6 91”,通過按位異或操作得到兩個字節(jié)“4949”,由此可以判斷出該DAT文件是使用字節(jié)“49”作為密鑰進行圖片加密處理的,此后該微信賬號下所有的撤回圖片消息的DAT文件,都可使用該密鑰進行解密。

圖14 密文DAT文件的部分數(shù)據(jù)Fig.14 Part of ciphertext of DAT file

經(jīng)研究發(fā)現(xiàn),該內(nèi)存字段中指向的路徑中存放的為圖片的縮略圖,完整的圖片數(shù)據(jù)存儲位置和撤回機制對發(fā)送方與接收方來說略有不同。

作為發(fā)送方,會在本地的WeChat Files[wxid]FileStorageImage[date]和WeChat Files[wxid]FileStorageImageThumb[date]文件夾下(其中[wxid]是以用戶微信ID命名的文件夾,[date]是以日期命名的一個文件夾)各產(chǎn)生一個DAT文件,經(jīng)過字節(jié)異或操作,前者會恢復(fù)為發(fā)送的原圖,后者為縮略圖。當用戶在聊天框中點開這張圖片時,會在WeChat Files[wxid]FileStorageTemp臨時文件夾下生成一個DAT文件,而當用戶點開下一張圖片時,該臨時文件下的DAT文件會被圖片文件覆蓋。當用戶發(fā)起撤回操作時,三個文件夾下產(chǎn)生的文件均無變化。

作為接收方,圖片的存儲方式與上述相同,但當對方用戶發(fā)起撤回操作時,WeChat Files[wxid]FileStorageImage[date]和WeChat Files[wxid]FileStorageImageThumb[date]文件夾下的DAT文件會消失,而WeChat Files[wxid]FileStorageTemp文件下產(chǎn)生的DAT文件無變化。

3 微信撤回消息的恢復(fù)過程

根據(jù)微信撤回消息數(shù)據(jù)的存儲和恢復(fù)原理,本文提出了一種基于動態(tài)內(nèi)存結(jié)構(gòu)分析的撤回消息恢復(fù)方法,其恢復(fù)流程為(如圖15所示):

(1)遍歷內(nèi)存鏡像文件數(shù)據(jù),提取所有特征碼<revokemsg>的索引值,每出現(xiàn)一次特征碼<revokemsg>則表示出現(xiàn)了一條撤回消息,提取該特征碼后的各字段標志位的索引值,如標志位“08 04 12”的索引值為lenghIndex,后面的內(nèi)容為撤回消息的長度及撤回消息。

(2)定位<revokemsg>之前的內(nèi)容,即為通信對方的微信ID或所在微信群的群ID,提取該ID。

(3)讀取<revokemsg>和</revokemsg>標簽之間的內(nèi)容,即為用戶聊天面板上的提示消息。解碼該消息,形式為“<![CDATA[你撤回了一條消息<a href="weixin://revoke_edit_click">重新編輯</a>]]>”或“"xxx"撤回了一條消息”,根據(jù)該消息形式來判斷該條消息是由本用戶撤回還是對方用戶撤回。

(4)標志位“08 04 12”后面的一個字節(jié)為撤回消息的長度,單位為字節(jié),計算每條撤回消息的長度length-Message。

圖15 撤回消息的恢復(fù)流程圖Fig.15 Flow chart of recovery of revoking message

(5)根據(jù)標志位“08 04 12”的索引值lengthIndex及消息長度lengthMessage計算消息的結(jié)束位置message-End,如公式(2)。將提取到的原消息字符段進行UTF-8解碼操作即得到原消息內(nèi)容。

(6)判斷得到的該原消息字符串表示的是否為路徑,若為路徑,則表示該條撤回消息為圖片,打開該路徑指向的本地文件。

(7)將該本地DAT數(shù)據(jù)文件的前兩個字節(jié)分別與“FF D8”進行異或操作,即得到圖片加密的字節(jié)密鑰,對DAT文件的每個字節(jié)與密鑰進行異或操作解密,最后保存為JPG文件,即為成功恢復(fù)后的圖片文件。

4 實驗結(jié)果與性能分析

本章通過具體程序的實現(xiàn)來驗證本文提出的恢復(fù)方法的可行性和有效性。由于本文的恢復(fù)方法基于微信內(nèi)存鏡像文件,而鏡像文件在所有操作系統(tǒng)上都是二進制一致的,因此,本文提出的恢復(fù)方法與操作系統(tǒng)類型無關(guān)。

4.1 實驗準備

針對微信內(nèi)存鏡像的獲取以及撤回消息批量恢復(fù)的實驗程序設(shè)計,選用了Python編程語言,在集成開發(fā)環(huán)境PyCharm中完成程序的設(shè)計與調(diào)試。Python版本號為3.8.2,PyCharm的版本號為PyCharm 2019.3.3(Professional Edition),PC版微信的版本號為微信2.9.5.41。

在獲取微信內(nèi)存之前,首先進行對話測試,其中撤回消息類型包含文字、表情及圖片,如圖16所示。

圖16 撤回消息的對話測試Fig.16 Dialogue test for revoking message

4.2 實驗過程

4.2.1 微信內(nèi)存鏡像獲取

微信內(nèi)存鏡像獲取首先需要獲取到當前計算機中微信的進程號。導(dǎo)入psutil模塊,使用其中的pids方法獲取到當前所有進程的進程號,結(jié)合微信的進程名稱“WeChat.exe”進行判斷,獲取微信的進程號。

使用Python3的subprocess模塊中的call方法,調(diào)用外部的ProcDump可執(zhí)行程序,對微信運行內(nèi)存進行轉(zhuǎn)儲。

4.2.2 提取所有的特征碼索引值

根據(jù)圖7撤回消息的字段結(jié)構(gòu),先獲取<revokemsg>標簽在內(nèi)存文件中的索引值,再根據(jù)<revokemsg>標簽之前出現(xiàn)的微信ID以及<revokemsg>標簽之后出現(xiàn)的</revokemsg>標簽進行特征結(jié)構(gòu)篩選,從而獲取到微信內(nèi)存文件中所有撤回消息特征字段的索引值。借助Python中提供的find方法,通過循環(huán)的方式(即每次找到特定字符串在原字符串中第一次出現(xiàn)的索引值,然后將索引下標進行加一操作,進入下一輪索引,直至索引下標到達原字符串中最后一個字符)找到特定字符串在原字符串中所有的索引值。

4.2.3 提取并解碼撤回消息字段

每段撤回消息的內(nèi)容前會出現(xiàn)唯一字段標志位“08 04 12”,根據(jù)特征結(jié)構(gòu)中是否出現(xiàn)了標志位“08 04 12”對特征結(jié)構(gòu)進行二次判斷,如果其中沒有出現(xiàn)標志位,則此特征結(jié)構(gòu)不符合撤回文字和表情消息恢復(fù)條件。

在特征結(jié)構(gòu)中如果出現(xiàn)了標志位“08 04 12”,則根據(jù)其后的一個字節(jié)獲取撤回消息在內(nèi)存中的長度,利用公式(2)提取出該消息。使用utf-8編碼的解碼方式對提取到的撤回消息字段進行解碼處理,從而得到原始的撤回消息。

4.2.4 讀取消息的撤回狀態(tài)等信息

類似地,可以獲得微信ID、微信群ID、微信群屬性等。如可以找到<revokemsg>和</revokemsg>標簽之間的內(nèi)容,定義flagMessage列表,存放消息撤回的提示字符,由此可以判斷該消息是由發(fā)送方撤回還是接收方撤回,最后返回一個由提示字符值組成列表。

4.2.5 解密加密圖片密鑰并恢復(fù)圖片數(shù)據(jù)

若撤回消息為圖片,讀取該路徑指向的本地DAT數(shù)據(jù)文件,將DAT文件的前兩字節(jié)與圖片頭特征字節(jié)進行異或操作,得到加密的密鑰字節(jié),并對DAT文件全部字節(jié)用密鑰進行異或操作解密,最后保存為JPG文件。

4.3 實驗結(jié)果

上述實驗程序的測試恢復(fù)結(jié)果如圖17所示,可以得到完整的撤回消息,并可以得到發(fā)起消息撤回的用戶微信ID等信息。

圖17 程序運行結(jié)果Fig.17 Running result of program

經(jīng)過多次實驗發(fā)現(xiàn),內(nèi)存中雖然沒有記錄每條撤回消息的時間,但按照撤回時間的先后,內(nèi)存中的數(shù)據(jù)按地址偏移量依次遞增分布。成功恢復(fù)撤回消息后,根據(jù)撤回方信息(如微信(群)ID、昵稱等),將撤回消息與微信聊天窗口中的聊天記錄消息作順序比對,即可獲得完整的用戶聊天記錄。

4.4 性能分析

本節(jié)主要從微信撤回信息的類型(文本、表情、圖片)、撤回狀態(tài)和撤回方微信ID等多個方面,對本文方法與文獻[10]提出方法進行綜合對比分析,表2、表3列出了兩種方法的性能比較。

表2 不同方法的恢復(fù)范圍比較Table 2 Comparison of recovery range between different methods

表3 文本類消息的恢復(fù)性能比較Table 3 Comparison of recovery performance for text messages

由表2可知,文獻[10]只能恢復(fù)文本、表情類撤回消息,而本文提出的恢復(fù)方法適用的撤回消息類型范圍更廣,恢復(fù)結(jié)果更全面。

以均能恢復(fù)的文本類消息為例,實驗共撤回100條文本消息,綜合考慮時間對于兩種恢復(fù)方法的恢復(fù)率影響。由表3可知,在24小時內(nèi),隨著撤回時間的推移,兩種方法的恢復(fù)率均有所下降,但本文方法總體恢復(fù)率均高于文獻[10]。

綜上,本文提出的恢復(fù)方法在恢復(fù)范圍及恢復(fù)率方面都具有顯著優(yōu)勢,這是因為本文綜合考慮了以下內(nèi)容:(1)考慮了撤回消息在內(nèi)存中的字段結(jié)構(gòu),由此得出消息的撤回狀態(tài)及撤回方信息。(2)考慮了微信個人聊天以及群聊的不同情況,群聊中的撤回消息在內(nèi)存中的結(jié)構(gòu)更為復(fù)雜,由此得到的內(nèi)容更為豐富。(3)考慮了圖片類消息與文本、表情類消息在內(nèi)存中的體現(xiàn)的異同:①圖片類消息在內(nèi)存中僅存放指向本地的路徑;②發(fā)送方和接收方發(fā)送、撤回的圖片消息在本地的存儲方式不同;③微信在通信過程中將圖片文件進行了異或加密操作。

5 結(jié)束語

自2019年12月26日最高法確認微信聊天記錄可作為法庭證據(jù)以來,法律界和取證界針對哪些聊天記錄可作電子證據(jù)、聊天記錄如何提取等方面展開了熱烈討論。可以看出,今后微信微博記錄等作為電子證據(jù)出現(xiàn)在訴訟過程中的概率將會越來越高[17]。但目前提取微信通信信息的方法主要以拍照、截圖為主,電子數(shù)據(jù)檢驗、鑒定等專業(yè)技術(shù)方法使用較少[18]。本文通過分析微信運行的動態(tài)內(nèi)存,研究了撤回消息在內(nèi)存中的特征字符和字段結(jié)構(gòu),根據(jù)文本、表情、圖片等類型的數(shù)據(jù)在內(nèi)存中的不同體現(xiàn)形式,提出了一種基于動態(tài)內(nèi)存分析的PC版微信撤回消息的恢復(fù)方法。該方法除了可以恢復(fù)不同類型的撤回消息外,還可以通過分析撤回狀態(tài),獲知消息的撤回方微信ID等信息。

本文方法還存在一些不足:(1)僅僅恢復(fù)了PC版微信中被撤回的文本、表情和圖片類消息,對于移動端的恢復(fù)尚未取得有效的研究成果;(2)微信內(nèi)存動態(tài)變化,實際的恢復(fù)效果根據(jù)撤回的時間長短存在差異。

猜你喜歡
微信方法
學(xué)習(xí)方法
微信
微信
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
微信
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
微信
賺錢方法
微信
微信
主站蜘蛛池模板: 亚洲熟女中文字幕男人总站| 美女视频黄又黄又免费高清| 黄色网页在线播放| 一级成人a做片免费| 国产一二三区在线| 国产欧美日韩专区发布| 国内精品久久久久鸭| 国产精品久久久久久久久久98| 国产爽爽视频| 国产97色在线| 久久久久久尹人网香蕉| 97国产在线观看| 国产九九精品视频| 国产精品区视频中文字幕| 国产亚洲精品97在线观看| 久久综合婷婷| 色综合狠狠操| 国产伦片中文免费观看| 日本午夜三级| 亚洲最黄视频| 国产精品浪潮Av| 亚洲欧美国产视频| 91精品专区国产盗摄| 国产成人精品高清在线| 99爱视频精品免视看| 国产美女丝袜高潮| 国内99精品激情视频精品| 欧美一区二区三区不卡免费| 18黑白丝水手服自慰喷水网站| 69精品在线观看| 好吊妞欧美视频免费| 欧美精品亚洲精品日韩专区va| 91在线无码精品秘九色APP| 91免费国产高清观看| av大片在线无码免费| av一区二区人妻无码| 亚洲手机在线| 伊人成色综合网| 青青操视频免费观看| 国产自无码视频在线观看| 久久综合色天堂av| 色综合久久久久8天国| 精品视频第一页| 这里只有精品在线播放| 无码'专区第一页| 97色伦色在线综合视频| 人人澡人人爽欧美一区| 天天爽免费视频| 韩国自拍偷自拍亚洲精品| 蜜桃臀无码内射一区二区三区| 黄片在线永久| 另类欧美日韩| 99久久亚洲综合精品TS| 国产精品女主播| 99爱视频精品免视看| 精品第一国产综合精品Aⅴ| 69免费在线视频| 亚洲av无码专区久久蜜芽| 一级毛片免费的| 91精品免费久久久| 伊人中文网| 欧美自慰一级看片免费| 久久国语对白| 黄色在线不卡| 草草影院国产第一页| 2022精品国偷自产免费观看| 久久精品无码中文字幕| 青青草91视频| 浮力影院国产第一页| 动漫精品中文字幕无码| 视频二区欧美| 激情视频综合网| 日本不卡在线| 久久久久亚洲Av片无码观看| 免费国产高清精品一区在线| 欧美日韩一区二区三| 亚洲天堂2014| 午夜a级毛片| 青草视频久久| 亚洲 日韩 激情 无码 中出| 天天操天天噜| 国产精品部在线观看|