亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于SQLite3結(jié)構(gòu)解析的短信恢復(fù)方法研究

        2017-04-24 07:44:43孫道寧
        關(guān)鍵詞:字段字節(jié)短信

        高 楊 孫道寧

        (中國刑事警察學(xué)院網(wǎng)絡(luò)犯罪偵查系 遼寧 沈陽 110035)

        基于SQLite3結(jié)構(gòu)解析的短信恢復(fù)方法研究

        高 楊 孫道寧

        (中國刑事警察學(xué)院網(wǎng)絡(luò)犯罪偵查系 遼寧 沈陽 110035)

        對某些被刻意刪除的短信,可以通過手機(jī)取證工具進(jìn)行恢復(fù)。由于各取證軟件恢復(fù)原理不同,恢復(fù)結(jié)果也有很大不同,而且相當(dāng)多的刪除內(nèi)容無法重現(xiàn)。為了解決手機(jī)中刪除短信提取不完整的問題,以Android系統(tǒng)手機(jī)為例,深入分析了存儲(chǔ)短信的SQLite3數(shù)據(jù)庫的組織結(jié)構(gòu),依據(jù)字段特征進(jìn)行短信內(nèi)容重構(gòu),相較于取證工具和其他短信恢復(fù)方法,能獲取到更多的短信條數(shù)和內(nèi)容,通過實(shí)驗(yàn)驗(yàn)證達(dá)到了很好的取證效果,對于今后在手機(jī)短信方面的取證工作具有一定借鑒意義。

        SQLite3 短信恢復(fù) 電子數(shù)據(jù)取證

        1 引言

        雖然微信、QQ等即時(shí)聊天工具已相當(dāng)普及,但短信仍然是人們?nèi)粘I钪兄匾慕涣?、通訊渠道。在涉案人員的手機(jī)中提取短信記錄,尤其是刪除的短信記錄,往往對案件的偵破具有重要作用。

        目前,大部分取證人員對短信記錄的提取依賴手機(jī)取證工具。經(jīng)過測試,不同取證工具的取證結(jié)果間存在差異,刪除的短信無法完全恢復(fù),內(nèi)容被部分覆蓋的短信更無從獲取,但其實(shí)有些內(nèi)容是存在于手機(jī)中的,只不過沒有得到有效地提取。為挖掘出更多的短信內(nèi)容,有必要對短信的存儲(chǔ)結(jié)構(gòu)和恢復(fù)原理進(jìn)行深入研究,以便獲取更多線索,為取證工作提供更多可能。

        2 短信的存儲(chǔ)方式

        短信是一種結(jié)構(gòu)化信息,Android系統(tǒng)將其存放于SQLite3數(shù)據(jù)庫文件中。SQLite3是專門應(yīng)用于嵌入式設(shè)備的輕量級數(shù)據(jù)庫,應(yīng)用程序直接從磁盤上的數(shù)據(jù)庫文件讀寫,沒有中間的服務(wù)器進(jìn)程,節(jié)省資源、提高運(yùn)行效率[1]。

        2.1 SQLite3數(shù)據(jù)庫結(jié)構(gòu)

        SQLite3數(shù)據(jù)庫由若干B-tree頁(簡稱“頁”)組成,每頁大小相同,介于512字節(jié)和32768字節(jié)之間,具體大小取決于數(shù)據(jù)庫初始化設(shè)置[2]。SQLite3數(shù)據(jù)庫最開始的1頁稱為MASTER頁,該頁主要進(jìn)行參數(shù)設(shè)定。其余頁編為“第1頁”、“第2頁”……依此類推。根據(jù)頁中存儲(chǔ)內(nèi)容類型的不同,可將頁面進(jìn)一步細(xì)分為中間頁和葉子頁。中間頁存放地址,用于尋址和取證工作關(guān)系不大;葉子頁存放具體數(shù)據(jù),短信的內(nèi)容和屬性存放于葉子頁中,取證工作就是要從葉子頁中提取相關(guān)數(shù)據(jù)。SQLite3數(shù)據(jù)庫結(jié)構(gòu)如圖1所示,呈現(xiàn)樹形分布狀態(tài)。

        圖1 SQLite3數(shù)據(jù)庫結(jié)構(gòu)圖

        以某手機(jī)檢材為例進(jìn)行說明。首先將該手機(jī)中存放短信的數(shù)據(jù)庫文件“mmssms.db”導(dǎo)出到計(jì)算機(jī)中,再利用Winhex工具打開該文件,偏移為0的位置就是該數(shù)據(jù)庫的MASTER頁的起始位置,如圖2所示。第1行是特征碼(顯示為“SQLite format 3”字樣),第2行的前2個(gè)字節(jié)標(biāo)識(shí)數(shù)據(jù)庫中每個(gè)頁面的大小為1000(H)。這樣,在頁面之間切換時(shí),直接以1000(H)作為偏移量跳轉(zhuǎn)即可。

        圖2 短信MASTER頁

        2.2 頁結(jié)構(gòu)

        MASTER頁之后是若干B-tree頁(簡稱“頁”),每個(gè)頁的結(jié)構(gòu)相同,如圖3所示。頁結(jié)構(gòu)分為頁頭、單元指針組、未分配空間和單元內(nèi)容區(qū)。前文提到,頁有中間頁和葉子頁之分,葉子頁頁頭的第一個(gè)字節(jié)為固定標(biāo)識(shí)“0D(H)”,中間頁頁頭的第一個(gè)字節(jié)為“01(H)”,可依此區(qū)分頁面類型。另外,頁頭中還會(huì)記錄該頁存放短信記錄的條數(shù)以及每條短信記錄的存放位置。在頁頭之后,是單元指針組和單元內(nèi)容區(qū),中間是未分配空間。單元是SQLite3數(shù)據(jù)庫中最小的存儲(chǔ)單位,存放具體的短信內(nèi)容,每個(gè)單元存放一條短信,刪除的短信依然存放于單元中,只不過被轉(zhuǎn)移到回收空間。隨著短信條目的增加,單元指針組和單元內(nèi)容區(qū)逐漸擴(kuò)大,未分配空間逐漸縮小,直至全部消失為止。

        圖3 頁結(jié)構(gòu)

        由MASTER頁可知頁面大小為1000(H),以1000(H)作為偏移地址進(jìn)行跳轉(zhuǎn),尋找葉子頁。根據(jù)跳轉(zhuǎn)頁的第1個(gè)字節(jié)區(qū)分該頁是否為葉子頁,只有為0D(H)時(shí)才是葉子頁,非葉子頁直接跳過,如圖4所示。

        圖4 頁面跳轉(zhuǎn)

        如圖5所示,該頁第1個(gè)字節(jié)是0D(H),表明它是一個(gè)葉子頁。在第3-4偏移地址存放的是該頁中存放的短信條數(shù),5-6偏移地址存放的是第一條短信單元的偏移地址,之后是其他短信單元的存放位置。由圖可知,存放的短信條數(shù)為000C(H),轉(zhuǎn)換為十進(jìn)制是12條,在這個(gè)葉子頁中存放了12條短信(未刪除的短信)。存儲(chǔ)第1條短信單元的偏移地址為0770(H),物理地址為9000(H)+0770(H)=9770(H)。若要讀取該條短信內(nèi)容,跳轉(zhuǎn)至9770(H)即可。

        圖5 葉子頁內(nèi)容

        2.3 單元結(jié)構(gòu)

        單元是SQLite3數(shù)據(jù)庫中的基本單位,每個(gè)單元存放一條短信,多條短信存放于多個(gè)單元,分布在一個(gè)或者多個(gè)葉子頁中,單元結(jié)構(gòu)如圖6所示。前3個(gè)字段為單元大小、單元序號(hào)、單元頭大小,通過這3個(gè)字段可以確定Type區(qū)和Data區(qū)的數(shù)量、確定單元的大小,之后是Type區(qū)和Data區(qū)。短信被系統(tǒng)拆分成若干部分存放于Data1—DataN中,Type1—TypeN描述相應(yīng)Data區(qū)的類型和大小。

        圖6 單元結(jié)構(gòu)圖

        短信是一種結(jié)構(gòu)化數(shù)據(jù),系統(tǒng)將其拆分成若干部分分別存儲(chǔ),圖7是某款A(yù)ndroid手機(jī)的短信結(jié)構(gòu)。系統(tǒng)將短信分成17個(gè)字段,每個(gè)字段代表不同含義,占據(jù)不同長度。例如,短信正文存入13號(hào)區(qū)域,收發(fā)信息的電話號(hào)碼存入3號(hào)區(qū)域,收發(fā)短信日期存入5—6區(qū)域。不同型號(hào)的手機(jī)字段設(shè)置可能不同,但存儲(chǔ)原理都是一致的。刪除的短信如果被覆蓋,會(huì)自后向前覆蓋,先覆蓋Data區(qū),再覆蓋Type區(qū),只要核心數(shù)據(jù)存在,仍然可以恢復(fù)。

        圖7 短信存儲(chǔ)方式

        跳轉(zhuǎn)到9770(H)地址,此處為該葉子頁存儲(chǔ)的第1個(gè)單元,也是第1條短信的位置,如圖8所示。9772(H)的0D(H)代表短信ID號(hào)是13,9773(H)的19(H)代表Type區(qū)個(gè)數(shù)25-1=24個(gè)。9774(H)—978B(H)存放的是Type1—Type24的值,它規(guī)定了每個(gè)對應(yīng)Data區(qū)中存放數(shù)據(jù)的類型和長度。從978C(H)開始,存放的是Data1—Data24的值。

        圖8 單元內(nèi)容

        Type采用可變長整數(shù)格式結(jié)構(gòu)存儲(chǔ),不同數(shù)值代表不同類型和長度,如圖9所示。

        圖9 可變長整數(shù)列表

        由圖11,結(jié)合Type區(qū)的值,解析Data1-Data24的內(nèi)容。9775(H)的02(H),參照圖9可知其數(shù)據(jù)長度為2,整數(shù)類型,對應(yīng)數(shù)值為978C—978D(H)中的內(nèi)容0C4F(H),轉(zhuǎn)換成十進(jìn)制為3151,此為該條短信的外鍵值;

        9776(H)的29(H)即41,參照圖9,存儲(chǔ)的是文本類型數(shù)據(jù),數(shù)據(jù)長度為(41-13)/2=14位,對應(yīng)978E(H)—978F(H)中的內(nèi)容2B38363138333933363335313339(H),轉(zhuǎn)換成UTF-8編碼為:+8618393635139,此為對方的電話號(hào)碼;

        9779(H)的05(H)即5,參照圖9,存儲(chǔ)的是有符號(hào)整數(shù),數(shù)據(jù)長度為6位,對應(yīng)979D(H)—97A2(H)中的內(nèi)容 0153691FA073(H),含義是短信的收發(fā)時(shí)間。因?yàn)锳ndroid系統(tǒng)使用的是Unix時(shí)間戳,轉(zhuǎn)換成北京時(shí)間為2016/3/12 12:39:50;

        9781(H)的81(H)即129,參照圖9,存儲(chǔ)的是文本類型數(shù)據(jù),數(shù)據(jù)長度為(129-13)/2=58位,對應(yīng)97A4(H)—97DD(H)中的內(nèi)容,含義是短信的具體內(nèi)容。將這部分內(nèi)容存為.htm格式的網(wǎng)頁文件,以UTF-8的字符編碼形式打開,即可還原短信內(nèi)容,如圖10所示,這是手機(jī)操作系統(tǒng)解析SQLite3數(shù)據(jù)庫中短信內(nèi)容的基本原理。

        圖10 解析的短信內(nèi)容

        3 刪除短信的恢復(fù)方法

        如果短信被刪除,存放該短信單元的前4個(gè)字節(jié)失效,隨機(jī)填充數(shù)據(jù),其余位置內(nèi)容保持不變[3],如圖11所示。

        圖11 刪除短信的字段結(jié)構(gòu)

        如果短信被刪除后又被新內(nèi)容覆蓋,SQLite3會(huì)自動(dòng)從單元尾部進(jìn)行數(shù)據(jù)寫入[4],先從Data區(qū)開始覆蓋,再覆蓋Type區(qū),直至覆蓋掉整個(gè)單元為止。只要Data區(qū)沒有被完全覆蓋,就有恢復(fù)的必要,如圖12所示。

        圖12 內(nèi)容被部分覆蓋的短信

        刪除但未被覆蓋的短信,只是損壞了存放短信的單元前4個(gè)字節(jié),Type區(qū)和Data區(qū)沒有改變,對于數(shù)據(jù)的解析沒有影響,自動(dòng)繞過前4個(gè)字節(jié),重新解析Type區(qū)和Data區(qū)即可,所有的取證工具都能完成這類短信的恢復(fù),在此不再贅述。

        刪除且被覆蓋的短信,剩余單元內(nèi)容會(huì)被當(dāng)作碎片回收,大部分取證軟件對此未做處理。關(guān)于這類短信的恢復(fù)方法,很多科研人員進(jìn)行過研究。在《Android系統(tǒng)刪除數(shù)據(jù)恢復(fù)方法研究》[5]一文中,作者提出了“盡最大努力估算法”來恢復(fù)被部分覆蓋的短信。該算法主要想法是根據(jù)現(xiàn)有短信的字段結(jié)構(gòu)和數(shù)量,從空閑塊中尋找單元內(nèi)容。偽代碼如下:

        while(i

        while(a!=k) //判斷Type字段讀取數(shù)量(假定Type字段數(shù)量為17個(gè))

        計(jì)算可變長整數(shù)占據(jù)字節(jié)數(shù),若小于127,僅占據(jù)1個(gè)字節(jié),則

        a++,b++;若大于127小于16384,占據(jù)2個(gè)字節(jié),則a++,b=b+2;

        依次類推

        通過每個(gè)Type值計(jì)算sum1

        sum2=sizeof(bb)-i-b,通過數(shù)組bb剩余未讀部分計(jì)算;

        if(suml=sum2)

        return成功;

        else i++;

        圖13是該算法的短信恢復(fù)效果圖。

        圖13 “盡最大努力恢復(fù)方法”的恢復(fù)效果

        針對此種方法,本文進(jìn)行了適當(dāng)?shù)母倪M(jìn):

        (1)恢復(fù)短信的關(guān)鍵是找準(zhǔn)Type區(qū)和Data區(qū)的界限,依據(jù)Type區(qū)內(nèi)容解析對應(yīng)的Data區(qū)。原方法是基于Type區(qū)結(jié)構(gòu)、數(shù)量一致這個(gè)前提進(jìn)行的,按照固定的數(shù)量和大小去估算被覆蓋短信的Type區(qū),進(jìn)而找到Data區(qū)。但經(jīng)過實(shí)驗(yàn)發(fā)現(xiàn),不同版本操作系統(tǒng)、不同品牌手機(jī)的短信結(jié)構(gòu)是不同的,Type區(qū)的數(shù)量和排列次序也不同。此算法不具備普遍適用性。

        本文依據(jù)Type區(qū)和Data區(qū)的排列規(guī)律進(jìn)行。圖14顯示的是所有未刪除短信的內(nèi)容,分析每個(gè)單元的Type區(qū)結(jié)構(gòu)尋找規(guī)律。經(jīng)觀察發(fā)現(xiàn),每個(gè)單元Type區(qū)的后幾個(gè)Type值都是0801080908050908(H)。因?yàn)門ype區(qū)的后幾個(gè)字段表達(dá)含義相同,所用長整數(shù)基本一致。緊鄰著Type區(qū)尾部就是Data1的值。依照這個(gè)分析結(jié)果,可以找出Type區(qū)和Data區(qū)之間的界限,劃線區(qū)域之后就是單元對應(yīng)的Data區(qū)。而刪除的短信在未被覆蓋的情況下,或者未被完全覆蓋的情況下,Data區(qū)的內(nèi)容是保留的。

        圖14 單元結(jié)構(gòu)特征

        以所用的手機(jī)檢材為例。在回收的單元之中,以0801080908050908(H)作為關(guān)鍵字進(jìn)行搜索,定位到圖15所示的內(nèi)容。由上文分析可知,命中部分是Type和Data區(qū)的臨界處。按照未刪除短信的Type字段排列方式對Data區(qū)內(nèi)容進(jìn)行解析,解析出發(fā)送號(hào)碼為+8615101889010,發(fā)送時(shí)間為2016/3/3 08:03:05,發(fā)送內(nèi)容為“把你的照片發(fā)過來,我好想你”。

        圖15 恢復(fù)的刪除短信

        相比原方法,利用特征值恢復(fù)短信的方式更加精準(zhǔn)、適用性更強(qiáng)。

        (2)原方法沒有對Data內(nèi)容進(jìn)行精確解析,在找到Data區(qū)后將內(nèi)容直接導(dǎo)出為UTF-8格式的文件。在圖15中,導(dǎo)出的短信內(nèi)容包含大量冗余信息,而且看不出收發(fā)短信時(shí)間(Linux時(shí)間戳)和短信ID。本文在獲得信息后,依據(jù)Type字段對Data區(qū)內(nèi)容逐個(gè)解析,可以精準(zhǔn)地還原各個(gè)項(xiàng)目內(nèi)容,對取證工作作用更大,見圖16。

        圖16 內(nèi)容不完整短信的恢復(fù)

        (3)隨著手機(jī)的使用,短信數(shù)量日漸增多,系統(tǒng)自動(dòng)將部分刪除短信移出短信文件“mmssms. db”,轉(zhuǎn)移到機(jī)身內(nèi)存中。所以,刪除的短信內(nèi)容不僅僅存在于“mmssms.db”中,還存在于手機(jī)內(nèi)存中,原方法和大部分取證工具都未涉及此范圍。為了獲得最全面的解析結(jié)果,對于短信的搜索范圍應(yīng)該擴(kuò)大到整個(gè)手機(jī)內(nèi)存。圖17所示的列表,是從送檢手機(jī)的機(jī)身中恢復(fù)的信息,以及恢復(fù)出的內(nèi)容被部分覆蓋的信息,原方法和目前任何取證工具都無法完整獲取到這部分信息。

        圖17 內(nèi)容不完整短信的恢復(fù)

        4 恢復(fù)短信效果對比

        為了驗(yàn)證本文論述方法的有效性,針對同一部手機(jī),使用SQLite viewer、DC4501、Cellebrite UFED Physical Analyzer 4、字段分析方式進(jìn)行短信恢復(fù),測試結(jié)果如圖18所示。從圖中可以看出,直接通過SQLite瀏覽器對“mmssms.db”文件進(jìn)行讀取,可以讀取出12條未刪除短信和0條刪除短信;通過DC4501進(jìn)行短信提取,可以提取到12條未刪除短信和12條刪除短信;使用Cellebrite UFED Physical Analyzer 4,可以提取12條未刪除短信和20條刪除短信;采用字段分析方式恢復(fù),可以讀取到12條未刪除短信,可以讀取到38條刪除短信,包括內(nèi)容不完整的短信。由此可見,本文的方法在取證效果上達(dá)到了預(yù)期目的,優(yōu)于目前主流手機(jī)取證工具。取證工具的取證方法還是存在不足,取證工具的結(jié)果并不完全可靠。在需要借助短信內(nèi)容輔助偵查的案件中,十分有必要對SQLite數(shù)據(jù)結(jié)構(gòu)進(jìn)行深入、細(xì)致的解析。

        圖18 測試結(jié)果對比

        5 結(jié)束語

        手機(jī)短信是電子數(shù)據(jù)取證工作中最常見的取證對象,只有深入了解存放短信信息的SQLite3數(shù)據(jù)結(jié)構(gòu),才能很好地恢復(fù)刪除的短信,提取隱藏在其中的重要信息。同時(shí)提醒我們應(yīng)該客觀地看待各類取證工具的功效,工具的開發(fā)總是滯后于理論探索的,只有真正了解取證的原理,才能更加有效地完成各類取證工作。

        [1]王隨剛,等.基于SQLite3的Android手機(jī)數(shù)據(jù)恢復(fù)技術(shù)的研究 [J].警察技術(shù),2012(5):3-7.

        [2]馬獲蕾,等.Android系統(tǒng)中SQLite數(shù)據(jù)庫的研究[J].電腦知識(shí)與技術(shù),2013(10):6243-6245.

        [3]姚偉,等.Android手機(jī)智能手機(jī)的取證[J].中國司法鑒定,2012(1):45-49.

        [4]堯俊.Android用戶行為重構(gòu)與分析技術(shù)研究[D].杭州:杭州電子科技大學(xué),2013: 5-78.

        [5]方冬蓉,等.Android系統(tǒng)刪除數(shù)據(jù)恢復(fù)方法研究[J].計(jì)算機(jī)工程,2014(10):275-280.

        (責(zé)任編輯:于 萍)

        Research on SMS Recovery Based on SQLite3 Structure Analysis

        GAO Yang SUN Dao-ning
        (Computer Grime Investigation Department of Criminal Investigation Police University of China Liaoning Shenyang 110035)

        Many deleted SMS can be recovered by mobile phone forensics tools. The recovery results are various because of the different recovery principle of forensics software, and quite a few deleted content cannot be recovered again. In order to solve this problem, this paper analyzes the storage structure of SQLite3 database and reconstructs the message content according to the f eld characteristics based on the Android mobile phone. Compared with the other forensics tools and recovery methods, more SMS can be obtained. Through the experiment, a good evidence effect can be achieved, which has reference signif cance in the forensic work on SMS.

        SQLITE3 SMS recovery Digital forensics

        TP399

        A

        2095-7939(2017)01-0115-06

        10.14060/j.issn.2095-7939.2017.01.020

        2016-11-25

        遼寧省社科規(guī)劃項(xiàng)目(編號(hào):L16BFX011)。

        高楊 (1981-),男,遼寧錦州人,中國刑事警察學(xué)院網(wǎng)絡(luò)犯罪偵查系講師,主要從事電子物證方向研究。

        猜你喜歡
        字段字節(jié)短信
        圖書館中文圖書編目外包數(shù)據(jù)質(zhì)量控制分析
        No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
        No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
        道歉短信
        代發(fā)短信
        簡談MC7字節(jié)碼
        CNMARC304字段和314字段責(zé)任附注方式解析
        無正題名文獻(xiàn)著錄方法評述
        關(guān)于CNMARC的3--字段改革的必要性與可行性研究
        人類進(jìn)入“澤它時(shí)代”
        久久国产劲暴∨内射| 亚洲国产一区二区中文字幕| 成人免费毛片在线播放| 后入内射欧美99二区视频| 无码精品a∨在线观看十八禁 | 人妻中出中文字幕在线| 日本在线一区二区在线| 91青青草手机在线视频| 中文字幕亚洲乱码熟女1区2区| 日韩亚洲在线观看视频| 久久亚洲春色中文字幕久久| 人妖一区二区三区视频| 成人影院视频在线免费观看| 丰满少妇按摩被扣逼高潮| 强开小婷嫩苞又嫩又紧视频| 成人欧美一区二区三区在线观看 | 国产成人无码免费看片软件| 把插八插露脸对白内射| 国产精品视频久久久久| 97SE亚洲国产综合自在线不卡| 久久婷婷综合色拍亚洲| 中日无码精品一区二区三区| 国产偷闻隔壁人妻内裤av| 丰满人妻一区二区三区精品高清| 加勒比av在线一区二区| 亚洲国产精品成人av在线不卡| 在线观看老湿视频福利| 国产高潮视频在线观看| 性一交一乱一伧国产女士spa| 婷婷丁香五月中文字幕| 鲁丝一区鲁丝二区鲁丝三区| 国产精品女同一区二区久| 一区二区三区免费自拍偷拍视频| 日本精品视频免费观看| 四虎国产精品永久在线国在线| 欧美操逼视频| 国产精品揄拍100视频| 亚洲色图综合免费视频| 国产目拍亚洲精品区一区| 麻豆国产成人av高清在线| 中文字幕在线乱码亚洲|