周凱 重慶警察學(xué)院
當(dāng)今信息化時(shí)代下,存在于各類計(jì)算機(jī)設(shè)備中的數(shù)據(jù)信息已成為越來(lái)越多刑事案件偵查的線索來(lái)源[1,2]。Windows操作系統(tǒng)作為當(dāng)今全球計(jì)算機(jī)使用率最高的操作系統(tǒng),針對(duì)Windows操作系統(tǒng)的電子數(shù)據(jù)取證一直是電子數(shù)據(jù)取證領(lǐng)域研究的重點(diǎn)之一[3],其中針對(duì)Windows操作系統(tǒng)中用戶常用應(yīng)用軟件的行為取證分析,已成為近年來(lái)公安機(jī)關(guān)取證人員獲取案件偵查線索的途徑之一[4,5]。
中文輸入法作為Windows中文操作系統(tǒng)必備的一款應(yīng)用程序,不僅支持中文文字編碼和輸入的功能,還具有自定義、自學(xué)習(xí)用戶詞庫(kù)功能,這一功能將系統(tǒng)用戶常用或者符合用戶用語(yǔ)習(xí)慣的字詞句以一種特定的結(jié)構(gòu)形式存儲(chǔ)成獨(dú)立的詞庫(kù)數(shù)據(jù)集文件,以方便后期提高輸入效率。這類用戶詞庫(kù)文件留存了大量的與系統(tǒng)用戶直接相關(guān)的輸入痕跡信息,如目標(biāo)姓名、地址、談話內(nèi)容等關(guān)鍵詞,都能在輸入法用戶詞庫(kù)中有所體現(xiàn),但用戶詞庫(kù)中所存儲(chǔ)的這些信息往往被取證人員忽略。
雖然,目前已有研究者通過(guò)對(duì)用戶輸入行為日志的研究來(lái)改善輸入法軟件性能和提升用戶體驗(yàn)[6],或者利用中文拼音輸入法數(shù)據(jù)對(duì)方言詞匯進(jìn)行自動(dòng)識(shí)別[7],也有研究者對(duì)中文輸入法用戶詞庫(kù)的提取進(jìn)行研究[8],但其研究對(duì)象主要集中于第三方輸入法,缺乏對(duì)Windows操作系統(tǒng)自帶輸入法用戶詞庫(kù)的研究。尤其,對(duì)于適用對(duì)象更為廣泛的Win10操作系統(tǒng),其自帶的中文輸入法更是成為大量Win10用戶的默認(rèn)首選,但由于對(duì)Win10系統(tǒng)中用戶輸入信息的存儲(chǔ)文件數(shù)據(jù)結(jié)構(gòu)不明確,尚未有合適的方法用于對(duì)輸入痕跡信息的提取。
因此,本文以Win10操作系統(tǒng)自帶的中文輸入法作為研究對(duì)象,采用基于數(shù)據(jù)流的逆向分析方法,對(duì)其相應(yīng)詞庫(kù)文檔結(jié)構(gòu)及協(xié)議進(jìn)行分析,發(fā)現(xiàn)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu),從而提取用戶輸入痕跡信息。
通過(guò)對(duì)Win10系統(tǒng)自帶中文輸入法程序運(yùn)行進(jìn)程的分析,發(fā)現(xiàn)與中文輸入法相關(guān)的用戶詞庫(kù)文件主要存儲(chǔ)在C:UsersAdministratorAppDataRoamingMicrosoftInputM ethodChs路徑下,對(duì)所有文件的屬性信息分析,發(fā)現(xiàn)其中文件名分別為ChsPinyinIH和ChsPinyinUDL的兩個(gè)DAT文件其屬性信息會(huì)隨著系統(tǒng)用戶輸入行為的發(fā)生而不斷變化。但由于其是DAT類型文件,無(wú)法直接用常規(guī)方法獲取記錄信息。
因此,利用Winhex對(duì)這兩個(gè)文件進(jìn)行分析,如圖1所示,發(fā)現(xiàn)存儲(chǔ)的信息具有一定規(guī)律性,數(shù)據(jù)塊之間存在明顯分隔,并且在Unicode方式顯示下,可以很明顯發(fā)現(xiàn)文件名分別為ChsPinyinIH和ChsPinyinUDL的DAT文件中零散存儲(chǔ)著系統(tǒng)用戶之前輸入的字詞句信息,并且均以Unicode明碼的方式保存在數(shù)據(jù)區(qū)中。
進(jìn)一步分析ChsPinyinIH.dat和ChsPinyinUDL.dat兩文件,發(fā)現(xiàn)ChsPinyinIH.dat文件記錄著系統(tǒng)用戶的中文字詞輸入信息,而ChsPinyinUDL.dat文件記錄著系統(tǒng)用戶的中文短句輸入信息。由此可知,Win10中文輸入法用戶詞庫(kù)信息采用獨(dú)有格式進(jìn)行存儲(chǔ),但沒(méi)有采用復(fù)雜的加密算法對(duì)其進(jìn)行保護(hù)處理。
因此,依據(jù)中文輸入法的拼音特性,構(gòu)建基于輸入數(shù)據(jù)流的逆向分析策略,對(duì)詞條信息的內(nèi)部存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)進(jìn)行分析。具體逆向測(cè)試策略如下:
策略1初始化用戶詞庫(kù)文件信息,分別選定一個(gè)單詞和短句,用Win10中文輸入法各輸入一次,其目的是探察兩個(gè)文件存儲(chǔ)輸入信息的初始位置。
策略2將策略1所選的單詞和短句,用Win10中文輸入法重復(fù)輸入一次,其目的是探察同一詞句輸入次數(shù)改變對(duì)存儲(chǔ)信息的影響。
策略3有別于策略2的選擇,另選內(nèi)容不同、字?jǐn)?shù)一樣的單詞和短句,用Win10中文輸入法各輸入一次,其目的是探察詞句內(nèi)容的改變對(duì)已存儲(chǔ)輸入信息位置的影響,即獲取單個(gè)詞條存儲(chǔ)信息需占用的總長(zhǎng)度。
策略4有別于之前所有策略的選擇,再另選內(nèi)容不同、字?jǐn)?shù)不同的單詞和短句,用Win10中文輸入法各輸入一次,其目的是探察詞句字?jǐn)?shù)的改變對(duì)存儲(chǔ)信息的影響。同時(shí),結(jié)合策略3和策略4對(duì)比,內(nèi)容和字?jǐn)?shù)的改變對(duì)存儲(chǔ)位置的影響。
依據(jù)上述基于數(shù)據(jù)流的逆向測(cè)試策略,對(duì)兩個(gè)DAT用戶詞庫(kù)文件進(jìn)行結(jié)構(gòu)分析,發(fā)現(xiàn)ChsPinyinIH和ChsPinyinUDL兩個(gè)DAT文件存儲(chǔ)的輸入記錄信息數(shù)據(jù)起始位置分別是在文件偏移地址0x1400處和0x2400處,每條用戶輸入記錄信息的存儲(chǔ)長(zhǎng)度都是固定的,占用60個(gè)字節(jié)。同時(shí),發(fā)現(xiàn)ChsPinyinIH.dat文件對(duì)用戶每條輸入行為信息的存儲(chǔ)結(jié)構(gòu)主要按如圖2所示的固定格式進(jìn)行存儲(chǔ)。其中關(guān)鍵信息主要在第一部分和第三部分的4個(gè)字節(jié)以及第四部分的24個(gè)字節(jié),第一部分存儲(chǔ)此條字詞的字?jǐn)?shù),第三部分存儲(chǔ)詞條字詞被輸入的次數(shù),第四部分則存儲(chǔ)了此條字詞的具體內(nèi)容。
而ChsPinyinUDL.dat文件對(duì)用戶每條輸入行為信息的存儲(chǔ)結(jié)構(gòu)主要按如圖3所示的固定格式進(jìn)行存儲(chǔ)。其中關(guān)鍵信息主要在第二部分的2個(gè)字節(jié)和第四部分的48個(gè)字節(jié),第二部分存儲(chǔ)此條短句的字?jǐn)?shù),第四部分存儲(chǔ)了此條短句的具體內(nèi)容。
基于上述分析的結(jié)論,對(duì)其進(jìn)行具體實(shí)現(xiàn),分析工具軟件界面如圖4所示。其功能主要包括用戶輸入信息的數(shù)據(jù)塊檢索、數(shù)據(jù)塊結(jié)構(gòu)的自解析、關(guān)鍵信息的提取及轉(zhuǎn)換,如圖5所示。
具體程序流程,如圖6所示。首先,分別檢索ChsPinyinIH和ChsPinyinUDL兩個(gè)DAT格式用戶詞庫(kù)文件中偏移地址在0x1400和0x2400之后的數(shù)據(jù)區(qū)域;然后,對(duì)該區(qū)域數(shù)據(jù)信息按特定長(zhǎng)度進(jìn)行分割,并對(duì)分割出的每條信息進(jìn)行格式解析,從中提取用戶輸入詞條字?jǐn)?shù)、輸入頻次、詞條內(nèi)容等關(guān)鍵信息;最后,將提取出的信息進(jìn)行編碼轉(zhuǎn)換并輸出。
其中,用于實(shí)現(xiàn)對(duì)用戶詞庫(kù)文件中用戶輸入信息數(shù)據(jù)塊遍歷檢索功能的關(guān)鍵代碼如下:
中文輸入法自學(xué)習(xí)用戶詞庫(kù)信息格式解析及提取的功能則由parseChunk()函數(shù)完成,關(guān)鍵代碼如下:
通過(guò)運(yùn)行程序代碼,可實(shí)現(xiàn)對(duì)Win10中文系統(tǒng)輸入法自學(xué)習(xí)用戶詞庫(kù)文件的自動(dòng)解析,進(jìn)而快速、完整地提取出用戶所有的輸入痕跡。同時(shí),利用詞云圖方式對(duì)提取結(jié)果進(jìn)行整理并呈現(xiàn),如圖7所示,可以明顯發(fā)現(xiàn)很多如地名、機(jī)構(gòu)、姓名、慣用語(yǔ)句等具有明確意義和指向性的關(guān)鍵詞或短語(yǔ),并且字體越大表示輸入的頻次越多。
另外,Win8作為微軟公司開(kāi)發(fā)的第一款Windows觸屏操作系統(tǒng),Win10延續(xù)了Win8的觸控模式,其與Win8系統(tǒng)的自帶輸入法程序是一樣的。因此通過(guò)實(shí)測(cè),本文的提取方法依然適用于對(duì)Win8系統(tǒng)用戶中文輸入痕跡信息的提取。
本文通過(guò)對(duì)Windows10中文輸入法用戶詞庫(kù)的文件存儲(chǔ)協(xié)議格式進(jìn)行分析,明確了用戶詞庫(kù)文件中存儲(chǔ)詞條信息的初始文件偏移位置,以及單個(gè)詞條信息存儲(chǔ)占用的總長(zhǎng)度和對(duì)應(yīng)詞條字?jǐn)?shù)、輸入頻率、實(shí)際詞條內(nèi)容的具體存儲(chǔ)結(jié)構(gòu)。利用本文的提取方法可有效提取用戶在使用安裝了Win8、Win10操作系統(tǒng)的臺(tái)式或平板電腦之后留存下的中文輸入痕跡。
偵查人員在對(duì)電子設(shè)備的電子數(shù)據(jù)分析過(guò)程中,有效提取操作系統(tǒng)中自帶輸入法的用戶詞庫(kù)信息,可得到系統(tǒng)用戶的輸入痕跡信息,便于掌握計(jì)算機(jī)用戶的行為特征,拓展案件偵查線索的渠道。