基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法
【專利摘要】本發(fā)明涉及一種基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法,其中包括對所述的智能手機(jī)進(jìn)行ROOT操作后取出所述的智能手機(jī)中Sqlite3數(shù)據(jù)庫的DB文件;查找所述的DB文件中存在的所有表以及各個表對應(yīng)的導(dǎo)航頁和數(shù)據(jù)頁;判斷各個所述的表的數(shù)據(jù)頁中是否有被刪除的數(shù)據(jù);針對有被刪除數(shù)據(jù)情況的數(shù)據(jù)頁查找其被刪除的數(shù)據(jù)并重建各條數(shù)據(jù)的指針。采用該種基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法,提出一種基于Sqlite3的智能手機(jī)數(shù)據(jù)恢復(fù)方法,依據(jù)從智能手機(jī)中獲得的Sqlite3數(shù)據(jù)庫文件,通過對數(shù)據(jù)存儲規(guī)律的分析,提出相應(yīng)的恢復(fù)規(guī)則,還原對應(yīng)的數(shù)據(jù)庫文件,方法應(yīng)用簡便,提高了數(shù)據(jù)恢復(fù)的效率,能直接為司法取證以及實(shí)際工作需求提供有效的幫助,適用于大規(guī)模推廣應(yīng)用。
【專利說明】基于Sql ite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及智能手機(jī)系統(tǒng)Sqlite3數(shù)據(jù)庫中數(shù)據(jù)恢復(fù)領(lǐng)域,具體是指一種基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法。
【背景技術(shù)】
[0002]目前采用Andriod和IOS操作系統(tǒng)的手機(jī)已經(jīng)是市場主流,是人們生活工作必不可少的。智能手機(jī)的迅速普及為人們帶來的巨大的便利,手機(jī)存儲了極多的個人信息,目前手機(jī)已經(jīng)成為人們?nèi)粘I畹谋匦杵?。Sqlite3數(shù)據(jù)庫被以上兩種操作系統(tǒng)采用(但不限于這兩種操作系統(tǒng)),用于存儲短信、通訊錄、通話記錄、QQ聊天記錄以及微信通訊記錄等等。這些數(shù)據(jù)文件包含巨大的信息,無論相關(guān)的應(yīng)用程序是否被刪除,只要Sqlite3的數(shù)據(jù)庫文件存在,我們就能有效的找回大量的有效信息。
[0003]在司法取證方面,涉及到對智能手機(jī)的取證工作,包括對被刪除的短信、被刪除的通話記錄、QQ聊天記錄等的恢復(fù)工作。在國內(nèi),目前針對智能手機(jī)的取證工作主要還是以人為觀察為主,耗時耗力而且很容易出錯以及漏掉重要的信息,而針對智能手機(jī)的取證還沒有成熟的技術(shù)手段來解決該問題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)的缺點(diǎn),提供了一種能夠?qū)崿F(xiàn)依據(jù)Sqlite數(shù)據(jù)庫的設(shè)計原理、直接從數(shù)據(jù)庫文件讀取數(shù)據(jù)、通過對數(shù)據(jù)存儲規(guī)律的分析、還原對應(yīng)的數(shù)據(jù)庫文件、適用于大規(guī)模推廣應(yīng)用的基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法。
[0005]為了實(shí)現(xiàn)上述目的,本發(fā)明的基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法具有如下構(gòu)成:
[0006]該基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法,其主要特點(diǎn)是,所述的方法包括以下步驟:
[0007](I)對所述的智能手機(jī)進(jìn)行ROOT操作后取出所述的智能手機(jī)中Sqlite3數(shù)據(jù)庫的DB文件;
[0008](2)查找所述的DB文件中存在的所有表以及各個表對應(yīng)的導(dǎo)航頁和數(shù)據(jù)頁;
[0009](3)判斷各個所述的表的數(shù)據(jù)頁中是否有被刪除的數(shù)據(jù);
[0010](4)針對有被刪除數(shù)據(jù)情況的數(shù)據(jù)頁查找其被刪除的數(shù)據(jù)并重建各條數(shù)據(jù)的指針。
[0011]較佳地,所述的查找所述的DB文件中存在的所有表以及各個表對應(yīng)的導(dǎo)航頁和數(shù)據(jù)頁,包括以下步驟:
[0012](21)查找所述的DB文件中存在的所有表;
[0013](22)查找各個所述的表的導(dǎo)航頁;
[0014](23)根據(jù)各個所述的表的文件頁的標(biāo)志位字節(jié)查找各個所述的表的數(shù)據(jù)頁。
[0015]更佳地,所述的根據(jù)各個所述的表的文件頁的標(biāo)志位字節(jié)查找各個所述的表的數(shù)據(jù)頁,具體為:
[0016]根據(jù)各個所述的表的文件頁的標(biāo)志位字節(jié)的值判斷各個所述的文件頁的類別,如果標(biāo)志位字節(jié)值為OXOD或0Χ0Α,則該標(biāo)志位字節(jié)對應(yīng)的文件頁為數(shù)據(jù)頁,如果標(biāo)志位字節(jié)值為0X05或0X02,則該標(biāo)志位字節(jié)對應(yīng)的文件頁為內(nèi)部頁。
[0017]較佳地,所述的針對有被刪除數(shù)據(jù)情況的數(shù)據(jù)頁查找其被刪除的數(shù)據(jù),具體為:
[0018]針對有被刪除數(shù)據(jù)情況的數(shù)據(jù)頁,依據(jù)復(fù)原算法查找該數(shù)據(jù)頁中被刪除的數(shù)據(jù)。
[0019]更佳地,所述的重建各條數(shù)據(jù)的指針,具體為:
[0020]恢復(fù)各條被刪除的數(shù)據(jù)前面正確的指針地址并重建該有被刪除數(shù)據(jù)情況的數(shù)據(jù)頁開頭的各條數(shù)據(jù)的指針。
[0021]較佳地,所述的步驟(4)之后,還包括以下步驟:
[0022](5)校驗數(shù)據(jù)恢復(fù)后的DB文件是否正確以及恢復(fù)效果。
[0023]更佳地,所述的步驟(5)之后,還包括以下步驟:
[0024](6)導(dǎo)出數(shù)據(jù)恢復(fù)后的DB文件或直接展示所述的數(shù)據(jù)恢復(fù)后的DB文件中所需要的數(shù)據(jù)信息。
[0025]采用了該發(fā)明中的基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法,具有如下有益效果:
[0026]本發(fā)明解決了現(xiàn)有技術(shù)中存在的不足,提出一種基于Sqlite3的智能手機(jī)數(shù)據(jù)恢復(fù)方法,依據(jù)從智能手機(jī)中獲得的Sqlite3數(shù)據(jù)庫文件,依據(jù)Sqlite3數(shù)據(jù)庫的設(shè)計原理,直接從Sqlite3數(shù)據(jù)文件讀取數(shù)據(jù),通過對數(shù)據(jù)存儲規(guī)律的分析,提出相應(yīng)的恢復(fù)算法(規(guī)則),還原對應(yīng)的數(shù)據(jù)庫文件,方法應(yīng)用簡便,數(shù)據(jù)恢復(fù)完整且提高了數(shù)據(jù)恢復(fù)的效率,能直接為司法取證以及實(shí)際工作需求提供有效的幫助,適用于大規(guī)模推廣應(yīng)用。
【專利附圖】
【附圖說明】
[0027]圖I為本發(fā)明的基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法的流程圖。
[0028]圖2為本發(fā)明的基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法在恢復(fù)指針過程中文件的頁頭示意圖。
[0029]圖3為本發(fā)明的基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法在恢復(fù)指針過程中0X0396處的單元的數(shù)據(jù)示意圖。
【具體實(shí)施方式】
[0030]為了能夠更清楚地描述本發(fā)明的技術(shù)內(nèi)容,下面結(jié)合具體實(shí)施例來進(jìn)行進(jìn)一步的描述。
[0031]本發(fā)明的技術(shù)方案為:對待取證手機(jī)進(jìn)行ROOT操作以后,取出其中的Sqlite3數(shù)據(jù)庫DB文件,對其數(shù)據(jù)分析復(fù)原,包括對文件每頁的格式分析,判斷需要進(jìn)行恢復(fù)操作的頁,對已刪除數(shù)據(jù)的復(fù)原找回,重構(gòu)生成復(fù)原后的DB文件,通過該DB文件能獲取被刪除的數(shù)據(jù)。
[0032]如圖I所示,本發(fā)明的基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法包括以下步驟:
[0033]( I)對智能手機(jī)進(jìn)行ROOT操作,獲取管理員權(quán)限后,導(dǎo)出智能手機(jī)中Sqlite3數(shù)據(jù)庫的DB文件;
[0034](2)按照既定的復(fù)原算法,掃描讀入DB文件,進(jìn)行數(shù)據(jù)分析,逐步查找DB文件中存在的所有Table (表)以及各個表對應(yīng)的頁,即擁有每一個表以及其對應(yīng)的導(dǎo)航頁和數(shù)據(jù)頁;
[0035]具體包括以下三個子步驟:
[0036](21)查找DB文件中存在的所有表;
[0037](22)查找各個表的導(dǎo)航頁;
[0038](23)根據(jù)各個表的文件頁的標(biāo)志位字節(jié)查找各個表的數(shù)據(jù)頁。
[0039]DB文件中以Page (頁)為基本單元存儲數(shù)據(jù),其中文件頁有一個標(biāo)志位字節(jié)確定它的分類,主要分為:如果是B+tree的葉子頁,該字節(jié)值為0X0D,如果是B+tree的內(nèi)部頁,該字節(jié)值為0X05,如果是B-tree的葉子頁,該字節(jié)值為0Χ0Α,如果是B-tree的內(nèi)部頁,該字節(jié)值為0X02。DB文件中的數(shù)據(jù)都存儲在OxOD以及OxOA的葉子頁中。所以只需對葉子頁進(jìn)行處理即可。(處理匹配規(guī)則)。因此根據(jù)各個表的文件頁的標(biāo)志位字節(jié)的值可以判斷各個文件頁的類別,如果標(biāo)志位字節(jié)值為OXOD或0Χ0Α,則該標(biāo)志位字節(jié)對應(yīng)的文件頁為數(shù)據(jù)頁,如果標(biāo)志位字節(jié)值為0X05或0X02,則該標(biāo)志位字節(jié)對應(yīng)的文件頁為內(nèi)部頁。
[0040](3)針對每一個Table,針對其數(shù)據(jù)頁,依據(jù)復(fù)原算法,判斷各個表的數(shù)據(jù)頁中是否有被刪除的數(shù)據(jù);
[0041](4)針對有被刪除數(shù)據(jù)情況的數(shù)據(jù)頁,依據(jù)復(fù)原算法查找該數(shù)據(jù)頁中被刪除的數(shù)據(jù),恢復(fù)各條被刪除的數(shù)據(jù)前面正確的指針地址并重建該有被刪除數(shù)據(jù)情況的數(shù)據(jù)頁開頭的各條數(shù)據(jù)的指針。
[0042]執(zhí)行下面刪除語句:deletefrom foods where id=5 ;
[0043]文件的頁頭內(nèi)容如圖2所示。觀察0X0396處的單元,數(shù)據(jù)如圖3所示。
[0044]此時通過復(fù)原算法恢復(fù)0x0396處的指針以及對每頁開頭的指針進(jìn)行恢復(fù)即可找回被刪除的數(shù)據(jù)。
[0045](5)校驗數(shù)據(jù)恢復(fù)后的DB文件是否正確以及恢復(fù)效果。
[0046](6)導(dǎo)出數(shù)據(jù)恢復(fù)后的DB文件或直接展示數(shù)據(jù)恢復(fù)后的DB文件中所需要的數(shù)據(jù)信息。
[0047]采用了該發(fā)明中的基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法,具有如下有益效果:
[0048]本發(fā)明解決了現(xiàn)有技術(shù)中存在的不足,提出一種基于Sqlite3的智能手機(jī)數(shù)據(jù)恢復(fù)方法,依據(jù)從智能手機(jī)中獲得的Sqlite3數(shù)據(jù)庫文件,依據(jù)Sqlite3數(shù)據(jù)庫的設(shè)計原理,直接從Sqlite3數(shù)據(jù)文件讀取數(shù)據(jù),通過對數(shù)據(jù)存儲規(guī)律的分析,提出相應(yīng)的恢復(fù)算法(規(guī)則),還原對應(yīng)的數(shù)據(jù)庫文件,方法應(yīng)用簡便,數(shù)據(jù)恢復(fù)完整且提高了數(shù)據(jù)恢復(fù)的效率,能直接為司法取證以及實(shí)際工作需求提供有效的幫助,適用于大規(guī)模推廣應(yīng)用。
[0049]在此說明書中,本發(fā)明已參照其特定的實(shí)施例作了描述。但是,很顯然仍可以作出各種修改和變換而不背離本發(fā)明的精神和范圍。因此,說明書和附圖應(yīng)被認(rèn)為是說明性的而非限制性的。
【權(quán)利要求】
1.一種基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法,其特征在于,所述的方法包括以下步驟: (1)對所述的智能手機(jī)進(jìn)行ROOT操作后取出所述的智能手機(jī)中Sqlite3數(shù)據(jù)庫的DB文件; (2)查找所述的DB文件中存在的所有表以及各個表對應(yīng)的導(dǎo)航頁和數(shù)據(jù)頁; (3)判斷各個所述的表的數(shù)據(jù)頁中是否有被刪除的數(shù)據(jù); (4)針對有被刪除數(shù)據(jù)情況的數(shù)據(jù)頁查找其被刪除的數(shù)據(jù)并重建各條數(shù)據(jù)的指針。
2.根據(jù)權(quán)利要求I所述的基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法,其特征在于,所述的查找所述的DB文件中存在的所有表以及各個表對應(yīng)的導(dǎo)航頁和數(shù)據(jù)頁,包括以下步驟: (21)查找所述的DB文件中存在的所有表; (22)查找各個所述的表的導(dǎo)航頁; (23)根據(jù)各個所述的表的文件頁的標(biāo)志位字節(jié)查找各個所述的表的數(shù)據(jù)頁。
3.根據(jù)權(quán)利要求2所述的基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法,其特征在于,所述的根據(jù)各個所述的表的文件頁的標(biāo)志位字節(jié)查找各個所述的表的數(shù)據(jù)頁,具體為: 根據(jù)各個所述的表的文件頁的標(biāo)志位字節(jié)的值判斷各個所述的文件頁的類別,如果標(biāo)志位字節(jié)值為OXOD或0Χ0Α,則該標(biāo)志位字節(jié)對應(yīng)的文件頁為數(shù)據(jù)頁,如果標(biāo)志位字節(jié)值為0X05或0X02,則該標(biāo)志位字節(jié)對應(yīng)的文件頁為內(nèi)部頁。
4.根據(jù)權(quán)利要求I所述的基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法,其特征在于,所述的針對有被刪除數(shù)據(jù)情況的數(shù)據(jù)頁查找其被刪除的數(shù)據(jù),具體為: 針對有被刪除數(shù)據(jù)情況的數(shù)據(jù)頁,依據(jù)復(fù)原算法查找該數(shù)據(jù)頁中被刪除的數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法,其特征在于,所述的重建各條數(shù)據(jù)的指針,具體為: 恢復(fù)各條被刪除的數(shù)據(jù)前面正確的指針地址并重建該有被刪除數(shù)據(jù)情況的數(shù)據(jù)頁開頭的各條數(shù)據(jù)的指針。
6.根據(jù)權(quán)利要求I所述的基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法,其特征在于,所述的步驟(4)之后,還包括以下步驟: (5)校驗數(shù)據(jù)恢復(fù)后的DB文件是否正確以及恢復(fù)效果。
7.根據(jù)權(quán)利要求6所述的基于Sqlite3實(shí)現(xiàn)智能手機(jī)數(shù)據(jù)恢復(fù)的方法,其特征在于,所述的步驟(5)之后,還包括以下步驟: (6)導(dǎo)出數(shù)據(jù)恢復(fù)后的DB文件或直接展示所述的數(shù)據(jù)恢復(fù)后的DB文件中所需要的數(shù)據(jù)信息。
【文檔編號】G06F17/30GK103778259SQ201410073724
【公開日】2014年5月7日 申請日期:2014年3月3日 優(yōu)先權(quán)日:2014年3月3日
【發(fā)明者】吳松洋, 何俊峰, 王旭鵬 申請人:公安部第三研究所