• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于SQLite3結構解析的短信恢復方法研究

      2017-04-24 07:44:43孫道寧
      中國刑警學院學報 2017年1期
      關鍵詞:字段字節(jié)短信

      高 楊 孫道寧

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

      基于SQLite3結構解析的短信恢復方法研究

      高 楊 孫道寧

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

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

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

      1 引言

      雖然微信、QQ等即時聊天工具已相當普及,但短信仍然是人們日常生活中重要的交流、通訊渠道。在涉案人員的手機中提取短信記錄,尤其是刪除的短信記錄,往往對案件的偵破具有重要作用。

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

      2 短信的存儲方式

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

      2.1 SQLite3數(shù)據(jù)庫結構

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

      圖1 SQLite3數(shù)據(jù)庫結構圖

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

      圖2 短信MASTER頁

      2.2 頁結構

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

      圖3 頁結構

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

      圖4 頁面跳轉

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

      圖5 葉子頁內容

      2.3 單元結構

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

      圖6 單元結構圖

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

      圖7 短信存儲方式

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

      圖8 單元內容

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

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

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

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

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

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

      圖10 解析的短信內容

      3 刪除短信的恢復方法

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

      圖11 刪除短信的字段結構

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

      圖12 內容被部分覆蓋的短信

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

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

      while(i

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

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

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

      依次類推

      通過每個Type值計算sum1

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

      if(suml=sum2)

      return成功;

      else i++;

      圖13是該算法的短信恢復效果圖。

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

      針對此種方法,本文進行了適當?shù)母倪M:

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

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

      圖14 單元結構特征

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

      圖15 恢復的刪除短信

      相比原方法,利用特征值恢復短信的方式更加精準、適用性更強。

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

      圖16 內容不完整短信的恢復

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

      圖17 內容不完整短信的恢復

      4 恢復短信效果對比

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

      圖18 測試結果對比

      5 結束語

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

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

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

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

      [4]堯俊.Android用戶行為重構與分析技術研究[D].杭州:杭州電子科技大學,2013: 5-78.

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

      (責任編輯:于 萍)

      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ī)劃項目(編號:L16BFX011)。

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

      猜你喜歡
      字段字節(jié)短信
      圖書館中文圖書編目外包數(shù)據(jù)質量控制分析
      No.8 字節(jié)跳動將推出獨立出口電商APP
      No.10 “字節(jié)跳動手機”要來了?
      道歉短信
      當代工人(2019年4期)2019-04-22 12:04:26
      代發(fā)短信
      當代工人(2018年21期)2018-03-06 12:41:08
      簡談MC7字節(jié)碼
      CNMARC304字段和314字段責任附注方式解析
      無正題名文獻著錄方法評述
      關于CNMARC的3--字段改革的必要性與可行性研究
      圖書館建設(2014年3期)2014-02-12 15:41:35
      人類進入“澤它時代”
      太保市| 平陆县| 中山市| 甘泉县| 盐边县| 兴文县| 苍南县| 聂拉木县| 洛宁县| 壤塘县| 沙雅县| 根河市| 天镇县| 新平| 肇源县| 延寿县| 鄂托克旗| 额敏县| 乐都县| 平果县| 通榆县| 如东县| 长武县| 新竹市| 肥东县| 大城县| 漳州市| 揭阳市| 佳木斯市| 志丹县| 建水县| 德清县| 寻乌县| 东莞市| 辽阳县| 仁布县| 泾川县| 柳江县| 晴隆县| 洪江市| 楚雄市|