本發(fā)明屬于數(shù)據(jù)恢復(fù)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)恢復(fù)方法。
背景技術(shù):
蘋果(ios)系統(tǒng)作為蘋果公司基于unix系統(tǒng)自主研發(fā)的操作系統(tǒng),近幾年大量使用在智能設(shè)備,如智能手機(jī)和平板電腦上,尤其是智能手機(jī)在平時生活和商務(wù)活動中的廣泛應(yīng)用。如果手機(jī)中的通訊錄或者短信記錄不慎丟失,可能會對手機(jī)用戶造成損失和不必要的麻煩,因此本發(fā)明的提出,能夠解決這個問題。
目前主流的數(shù)據(jù)恢復(fù)是針對硬盤等存儲設(shè)備的數(shù)據(jù)恢復(fù),且只是將存儲索引重建,如果遇到特定格式的文件,則無法解析內(nèi)容。目前可能在用的通訊錄或者短信記錄恢復(fù)方法還存在以下問題:1.受待恢復(fù)蘋果手機(jī)的存儲空間、處理速度有限的限制,恢復(fù)效率慢;2.增加待恢復(fù)安卓手機(jī)的能量損耗,縮短安卓手機(jī)的待機(jī)時間等。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于:提供一種針對蘋果設(shè)備的非入侵式數(shù)據(jù)恢復(fù)方法,以解決目前缺少一種不受手機(jī)本身性能影響且安全性好的蘋果手機(jī)通訊錄和短信數(shù)據(jù)的方法,不僅具有速度快、效率高的特點(diǎn),而且還不會造成待恢復(fù)蘋果手機(jī)發(fā)生任何變化,即系統(tǒng)中不會增加新的程序、設(shè)備的物理存儲空間不會發(fā)生變化。
本發(fā)明采用的技術(shù)方案如下:
一種針對蘋果設(shè)備的非入侵式數(shù)據(jù)恢復(fù)方法,包括以下步驟:
步驟一(s1):通過數(shù)據(jù)線將待恢復(fù)蘋果手機(jī)連接于恢復(fù)設(shè)備;
步驟二(s2):恢復(fù)設(shè)備通過libimobiledevice調(diào)用待恢復(fù)蘋果手機(jī)信息,如果不能調(diào)用,則要求用戶在待恢復(fù)蘋果手機(jī)點(diǎn)擊信任這臺電腦;
步驟三(s3):恢復(fù)設(shè)備通過libimobiledevice檢索待恢復(fù)蘋果手機(jī)的信息和已刪除的通訊錄及短信數(shù)據(jù)庫文件;
步驟四(s4):通過libimobiledevice將待恢復(fù)手機(jī)上被檢索到的通訊錄及短信數(shù)據(jù)庫文件拷貝到恢復(fù)設(shè)備上;
步驟五(s5):恢復(fù)設(shè)備采用特定格式分析的方式對拷貝的通訊錄及短信數(shù)據(jù)庫文件進(jìn)行匹配、恢復(fù),通訊錄及短信數(shù)據(jù)庫文件正?;謴?fù)后,向用戶展示恢復(fù)結(jié)果;
步驟六(s6):恢復(fù)設(shè)備返回恢復(fù)結(jié)果,用戶確認(rèn)后,通過恢復(fù)設(shè)備刪除所有拷貝數(shù)據(jù)。
進(jìn)一步的,步驟三中,通過使用libimobiledevice檢索的方式,檢索已刪除的通訊錄及短信數(shù)據(jù)庫文件的方法如下:
步驟3.1:解析sqlite數(shù)據(jù)庫文件,找到unallocateedblock和freeblock,并設(shè)置reset覆蓋率計數(shù)器;
步驟3.2:獲取unallocateedblock和freeblock的文件大小,判斷其文件頭是否為sqlite;
步驟3.3:讀取文件頭為sqlite的文件數(shù)據(jù),并解析sms表,得到被刪除的通訊錄及短信數(shù)據(jù)。
進(jìn)一步的,步驟五中,如果通訊錄及短信數(shù)據(jù)庫文件未正?;謴?fù),則進(jìn)行人工分析,并且在人工分析完成后,將新的特定格式加入恢復(fù)設(shè)備。
進(jìn)一步的,所述步驟中,從檢索到數(shù)據(jù)拷貝是通過在mac環(huán)境中完成調(diào)試工具集成到恢復(fù)設(shè)備的過程,包括如下步驟:
4.1:安裝工具和相關(guān)環(huán)境;
4.2:將libimobiledevice工程下載下來,執(zhí)行autogen.sh腳本,執(zhí)行完畢后進(jìn)行make和sudomakeinstall編譯;
4.3:安裝ideviceinstaller工具,用于給ios設(shè)備安裝卸載應(yīng)用或者備份應(yīng)用。
進(jìn)一步的,如果出現(xiàn)部分通訊錄及短信數(shù)據(jù)庫文件沒有正?;謴?fù)的情況,則通過以下動作,具體步驟如下:
5.1:配置包含了ipa包下載安裝路徑和app配置信息的plist文件,并將plist文件放置在一個https的服務(wù)上來進(jìn)行訪問;
5.2:配置下載鏈接,當(dāng)打開plist文件時,待恢復(fù)蘋果手機(jī)就會下載ipa包并進(jìn)行安裝。
進(jìn)一步的,通信錄數(shù)據(jù)庫文件的匹配、恢復(fù)過程如下:
6.1:在通信錄數(shù)據(jù)庫文件釋放的塊中,按照特定格式搜索被刪除的通信錄數(shù)據(jù),分別獨(dú)立搜索用戶名和手機(jī)號,并記錄每一項(xiàng)的_id,然后按照_id一致關(guān)系,將恢復(fù)的用戶名和手機(jī)號對應(yīng)起來;
6.2:用正則表達(dá)式匹配聯(lián)系人名稱,未找到則返回到a.1步驟,若成功匹配,則繼續(xù)進(jìn)行下一步驟;
6.3:搜索手機(jī)號,用正則表達(dá)式匹配聯(lián)系人號碼,未找到則返回a.1,若成功匹配,則進(jìn)入到下一步驟;
6.4:在數(shù)組中匹配手機(jī)號,若手機(jī)號小于最小長度則中斷,讀取數(shù)組頭部,在通信錄數(shù)據(jù)庫表中判斷mimetype_id與mimetypes表中讀取的值是否一致,若不一致,則continue;若一致,則進(jìn)入下一步;
6.5:將數(shù)組中未處理的數(shù)據(jù)塊轉(zhuǎn)化為字符串,并用正則表達(dá)式匹配手機(jī)號,匹配到的手機(jī)號用于在總字節(jié)數(shù)組中定位查找。
進(jìn)一步的,通信錄數(shù)據(jù)庫文件的匹配、恢復(fù)過程還包括:
7.1:在數(shù)組中搜索提取到的手機(jī)號,重新計算手機(jī)號在數(shù)組中的偏移,并定位;如果定位到手機(jī)號,但是當(dāng)前匹配的手機(jī)號的頭部小于最小頭部長度,則繼續(xù)往后搜索;
7.2:讀取手機(jī)號之前最小頭部長度個bytes,記錄當(dāng)前區(qū)塊的起始位置,用于覆蓋率計算。
進(jìn)一步的,步驟5中,還包括短信內(nèi)容及后續(xù)數(shù)據(jù)處理:
8.1:計算短信內(nèi)容的起始偏移,并用中文文本編碼規(guī)則utf8匹配短信文本,過濾噪音;
8.2:計算短信內(nèi)容長度和實(shí)際讀取到的短信內(nèi)容長度并對比是否相符,若不相符,則認(rèn)為短信內(nèi)容被破壞,更新當(dāng)前偏移指針;若相符,則定位緊跟在短信內(nèi)容后面的并計算,得到檢測號碼;
8.3:記錄當(dāng)前區(qū)塊的結(jié)束位置;
8.4:獲取已存在短信,并導(dǎo)出到日志文件;
8.5:暴力搜索短信數(shù)據(jù)庫文件中的所有文本字符串;
8.6:若當(dāng)前恢復(fù)出的文本如果不存在于已存在短信和已刪除短信文本中,且至少包含兩個中文字符,則視為合法短信文本,添加之。
綜上所述,由于采用了上述技術(shù)方案,本發(fā)明的有益效果是:
1.本發(fā)明提供針對蘋果手機(jī)內(nèi)通訊錄及短信數(shù)據(jù)庫內(nèi)容的恢復(fù),通過前期收集分析了目前市場上大多數(shù)版本的蘋果手機(jī)的通訊錄和短信數(shù)據(jù)庫文件的特征格式,植入恢復(fù)設(shè)備中,能夠?qū)Υ蠖鄶?shù)的蘋果手機(jī)進(jìn)行快速準(zhǔn)確的通訊錄及短信記錄的恢復(fù)。本發(fā)明方法在恢復(fù)數(shù)據(jù)時,恢復(fù)設(shè)備和待恢復(fù)蘋果手機(jī)通過數(shù)據(jù)線構(gòu)成一個封閉系統(tǒng),數(shù)據(jù)恢復(fù)過程都在恢復(fù)設(shè)備上完成,不受待恢復(fù)蘋果手機(jī)的存儲空間、處理速度有限的限制,可以更快更準(zhǔn)確進(jìn)行,同時不會增加待恢復(fù)蘋果手機(jī)的能量損耗,提高蘋果手機(jī)的待機(jī)時間;恢復(fù)完成后,向用戶展示恢復(fù)結(jié)果;用戶確認(rèn)完成后,恢復(fù)設(shè)備將徹底刪除從蘋果手機(jī)上拷貝的所有數(shù)據(jù),保證用戶的所有信息不會發(fā)生任何泄露。
2.本發(fā)明方法提供了一種針對蘋果設(shè)備的非侵入的數(shù)據(jù)恢復(fù)方法,不會造成待恢復(fù)蘋果手機(jī)發(fā)生任何變化,即系統(tǒng)中不會增加新的程序、設(shè)備的物理存儲空間不會發(fā)生變化?;謴?fù)設(shè)備通過libimobiledevice將蘋果手機(jī)的通訊錄及短信數(shù)據(jù)庫文件到恢復(fù)設(shè)備上進(jìn)行數(shù)據(jù)解析,恢復(fù)和展示的工作,并在恢復(fù)完成后將從蘋果手機(jī)拷貝的相關(guān)數(shù)據(jù)徹底刪除,保證客戶的信息不會出現(xiàn)泄漏。
附圖說明
圖1是本發(fā)明的方法流程示意圖。
具體實(shí)施方式
本說明書中公開的所有特征,除了互相排斥的特征和/或步驟以外,均可以以任何方式組合。
下面結(jié)合一種針對蘋果設(shè)備的非入侵式的數(shù)據(jù)恢復(fù)方法的流程圖對本發(fā)明作詳細(xì)說明。
目前主流的數(shù)據(jù)恢復(fù)是針對硬盤等存儲設(shè)備的數(shù)據(jù)恢復(fù),且只是將存儲索引重建,如果遇到特定格式的文件,則無法解析內(nèi)容。本發(fā)明提供針對蘋果手機(jī)內(nèi)通訊錄及短信數(shù)據(jù)庫內(nèi)容的恢復(fù),通過前期收集分析了目前市場上大多數(shù)品牌及型號的蘋果手機(jī)的通訊錄和短信數(shù)據(jù)庫文件的特征格式,植入恢復(fù)設(shè)備中,能夠?qū)Υ蠖鄶?shù)的蘋果手機(jī)進(jìn)行快速準(zhǔn)確的通訊錄及短信記錄的恢復(fù)。
一種針對蘋果設(shè)備的非入侵式數(shù)據(jù)恢復(fù)方法,包括以下步驟:
步驟一:通過數(shù)據(jù)線將待恢復(fù)蘋果手機(jī)連接于恢復(fù)設(shè)備;恢復(fù)設(shè)備中植入了目前市場上大多數(shù)版本的蘋果手機(jī)的通訊錄和短信數(shù)據(jù)庫文件的特征格式;
所述方法中,蘋果手機(jī)是采用lightning接口,也稱為閃電接口,是蘋果公司制作的專屬連接器規(guī)格。此連接器針腳為8pin,支持正反連接,傳輸速率約為25mb~35mb/s。由于接口不同,因此在于安卓的數(shù)據(jù)恢復(fù)中有一定區(qū)別,主要體現(xiàn)在后續(xù)工作中才使用itunes通信協(xié)議。
步驟二:恢復(fù)設(shè)備通過libimobiledevice調(diào)用待恢復(fù)蘋果手機(jī)信息,如果不能調(diào)用,則要求用戶在待恢復(fù)蘋果手機(jī)點(diǎn)擊信任這臺電腦;如果調(diào)用成功,則已完成數(shù)據(jù)恢復(fù)的準(zhǔn)備工作;
所述方法中,使用itunesbackup協(xié)議訪問,在ubuntu系統(tǒng)中首先手動編譯準(zhǔn)備環(huán)境。在準(zhǔn)備環(huán)境安裝好后加載liblist,蘋果設(shè)備通信的標(biāo)準(zhǔn)協(xié)議中加載plist接口。其次是安裝libusbmuxd。此時為了完成調(diào)用蘋果手機(jī)的信息,如果不能調(diào)用,就手動點(diǎn)擊信任此臺電腦的窗口按鈕。
步驟三:恢復(fù)設(shè)備通過libimobiledevice檢索待恢復(fù)蘋果手機(jī)的信息和已刪除的通訊錄及短信數(shù)據(jù)庫文件;
所述方法中,所有步驟是在mac環(huán)境上進(jìn)行的,因?yàn)樾枰玫絰code的編譯環(huán)境。編譯打包過程主要用到xcodebuild和xcrun這兩個命令,xcodebuild是編譯代碼,xcrun是將app打成最終的ipa包。其中apppath是編譯生成的源app路徑,ipaoutpath是生成的ipa包的輸出路徑。${code_sign_identity}和mobileprovision分別對應(yīng)證書和mobileprovision文件的路徑,這兩個參數(shù)不加則用默認(rèn)工程配置文件中的證書需要注意的是,在執(zhí)行xcrun的時候,需要進(jìn)入到項(xiàng)目工程的build的目錄下才行。
步驟四:通過libimobiledevice將待恢復(fù)手機(jī)上被檢索到的通訊錄及短信數(shù)據(jù)庫文件拷貝到恢復(fù)設(shè)備上;
所述方法中,具體檢索到數(shù)據(jù)拷貝主要是通過在mac環(huán)境中完成調(diào)試工具集成到恢復(fù)設(shè)備的過程。主要為在編譯打包完成之后,有可能會因?yàn)榇虬^程中如證書簽名等的一些問題,導(dǎo)致無法安裝在設(shè)備上。因此,為了進(jìn)行編譯集成的自動化執(zhí)行和驗(yàn)證,需要能夠可以將安裝包安裝進(jìn)設(shè)備的工具。libimobiledevice,這是可以讓linux支持連接iphone/ipodtouch等ios設(shè)備,可以替代itunes,進(jìn)行ios設(shè)備管理的工具。
4.1:首先是安裝工具和相關(guān)環(huán)境,可以通過mac上的homebrew工具進(jìn)行相關(guān)插件的安裝。
4.2:將libimobiledevice工程下載下來,執(zhí)行autogen.sh腳本,執(zhí)行完畢后進(jìn)行make和sudomakeinstall編譯。
4.3:安裝ideviceinstaller工具,用于給ios設(shè)備安裝卸載應(yīng)用或者備份應(yīng)用。該工具是基于libmobiledevice的,因此首先要完成libmobiledevice的編譯安裝。
步驟五:恢復(fù)設(shè)備采用特定格式分析的方式對拷貝的通訊錄及短信數(shù)據(jù)庫文件進(jìn)行恢復(fù),通訊錄及短信數(shù)據(jù)庫文件正?;謴?fù)后,向用戶展示恢復(fù)結(jié)果;
所述方法中,下載完工程后執(zhí)行編譯安裝,步驟同libimobiledevice一致。在真機(jī)上進(jìn)行ipa包的集成安裝將真機(jī)連接在mac上,命令行輸入idevice_id-l,該設(shè)備的udid,則完成相關(guān)配置。
步驟六:恢復(fù)設(shè)備返回恢復(fù)結(jié)果,用戶確認(rèn)后,通過恢復(fù)設(shè)備刪除所有拷貝數(shù)據(jù)。
所述方法中,如果出現(xiàn)部分文件沒有正?;謴?fù)的情況,則通過下載安裝的方式集成app到移動設(shè)備,實(shí)際就是通過了itms-services協(xié)議來實(shí)現(xiàn)的,這種方式主要應(yīng)用于ios企業(yè)應(yīng)用的無線部署。
具體步驟如下:
5.1:配置plist文件plist文件中包含了ipa包的下載安裝路徑和app的配置信息,基本的設(shè)置如下其中需要注意的是,metadata里的bundle-identifier和bundle-version信息需要和所安裝的ipa包的內(nèi)容一致,不然可能導(dǎo)致無法安裝成功。
5.2:配置下載鏈接。簡單編寫一個頁面,可以通過這樣的形式進(jìn)行下載把以上內(nèi)容加到一個html頁面的href中即可,當(dāng)打開plist文件時,移動設(shè)備就會下載ipa包并進(jìn)行安裝。需要注意的是,在ios7.1以上的版本中,這個url必須是以https協(xié)議的形式進(jìn)行訪問,否則將會提示因證書無效無法安裝應(yīng)用程序。也就是說,我們需要將plist文件放置在一個https的服務(wù)上來進(jìn)行訪問。
在通信錄db(數(shù)據(jù)庫)文件中釋放的塊中,按照特定格式搜索被刪除的通信錄信息分別獨(dú)立搜索用戶名和手機(jī)號,并記錄每一項(xiàng)的_id,然后按照_id一致關(guān)系,將恢復(fù)的用戶名和手機(jī)號對應(yīng)起來。用聯(lián)系人名正則表達(dá)式匹配聯(lián)系人名稱,未找到則返回。搜索手機(jī)號,用正則表達(dá)式匹配聯(lián)系人號碼,未找到則返回。在數(shù)組(字節(jié)數(shù)組)中匹配手機(jī)號,小于需要匹配的最小長度則中斷,讀取頭部數(shù)組。判斷mimetype_id與mimetypes表中讀取的值是否一致,非法則continue。將未處理數(shù)據(jù)塊轉(zhuǎn)化為字符串,用于正則匹配號碼(字節(jié)數(shù)組不支持正則表達(dá)式,支持查找字符串)。匹配到的號碼,用于在總字節(jié)數(shù)組中定位查找。在數(shù)組中搜索提取到的號碼,重新計算號碼在數(shù)組中的偏移(由于字符串中如漢字等字符非一個字節(jié)表示一個字符長度,故需要在數(shù)組中重新定位計算偏移)。如果定位到手機(jī)號,但是當(dāng)前號碼的頭部小于最小頭部長度(在正則表達(dá)式中設(shè)置規(guī)則,最小長度為11個字符),則繼續(xù)往后搜索。讀取手機(jī)號之前icursize個bytes(數(shù)據(jù)庫中定義的最小頭部長度icursize),記錄當(dāng)前區(qū)塊的起始位置,用于覆蓋率計算。
短信內(nèi)容及后續(xù)數(shù)據(jù)處理:
8.1:計算短信內(nèi)容的起始偏移,并用中文文本編碼規(guī)則utf8匹配短信文本,過濾噪音;
8.2:計算短信內(nèi)容長度和實(shí)際讀取到的短信內(nèi)容長度并對比是否相符,若不相符,則認(rèn)為短信內(nèi)容被破壞,更新當(dāng)前偏移指針;若相符,則定位緊跟在短信內(nèi)容后面的并計算,得到檢測號碼;僅當(dāng)短信內(nèi)容沒有被破壞時,才定位緊跟在短信內(nèi)容后面的servicecenter,計算servicecenter,并提取作為收件人號碼;
8.3:記錄當(dāng)前區(qū)塊的結(jié)束位置,用于覆蓋率計算,用于手動原始恢復(fù)(手動恢復(fù));
8.4:獲取已存在短信,并導(dǎo)出到日志文件;
8.5:暴力搜索短信數(shù)據(jù)庫文件中的所有文本字符串;
8.6:若當(dāng)前恢復(fù)出的文本如果不存在于已存在短信和已刪除短信文本中,且至少包含兩個中文字符,則視為合法短信文本,添加之。
打開數(shù)據(jù)庫中保存的通訊錄數(shù)據(jù),讀取里面的聯(lián)系人信息并將讀取的聯(lián)系人信息存入已存在聯(lián)系人信息列表中。分開先后遍歷已存在聯(lián)系人和標(biāo)注已刪除聯(lián)系人,這樣確保已存在聯(lián)系人列表的完整性。確保對于判斷已刪除項(xiàng)目是否已存在結(jié)果的正確性。
所述方法中,恢復(fù)設(shè)備上內(nèi)置了完整的通訊錄及短信數(shù)據(jù)文件特征格式匹配方法,依次、完整地將拷貝的數(shù)據(jù)文件和特征格式進(jìn)行匹配。若匹配成功,則開始恢復(fù)通訊錄及短信數(shù)據(jù)庫文件;若匹配不成功,則進(jìn)行人工分析,恢復(fù)出來通訊錄及短信數(shù)據(jù)庫文件后,將新的特征格式加入恢復(fù)設(shè)備(相當(dāng)于是在遇到“陌生”的特征格式時,人工進(jìn)行添加,與之熟絡(luò),增加數(shù)據(jù)庫容納的“熟人”,方便下一次恢復(fù)),并將新的特征格式檢測方法加入恢復(fù)設(shè)備中。
本發(fā)明方法在恢復(fù)數(shù)據(jù)時,恢復(fù)設(shè)備和待恢復(fù)蘋果手機(jī)通過數(shù)據(jù)線構(gòu)成一個封閉系統(tǒng),數(shù)據(jù)恢復(fù)過程都在恢復(fù)設(shè)備上完成,不受待恢復(fù)蘋果手機(jī)的存儲空間、處理速度有限的限制,可以更快更準(zhǔn)確進(jìn)行,同時不會增加待恢復(fù)蘋果手機(jī)的能量損耗,提高蘋果手機(jī)的待機(jī)時間;恢復(fù)完成后,向用戶展示恢復(fù)結(jié)果;用戶確認(rèn)完成后,恢復(fù)設(shè)備將徹底刪除從蘋果手機(jī)上拷貝的所有數(shù)據(jù),保證用戶的所有信息不會發(fā)生任何泄露。
本發(fā)明方法提供了一種針對蘋果設(shè)備的非侵入的數(shù)據(jù)恢復(fù)方法,不會造成待恢復(fù)蘋果手機(jī)發(fā)生任何變化,即系統(tǒng)中不會增加新的程序、設(shè)備的物理存儲空間不會發(fā)生變化?;謴?fù)設(shè)備通過libimobiledevice將蘋果手機(jī)的通訊錄及短信數(shù)據(jù)庫文件到恢復(fù)設(shè)備上進(jìn)行數(shù)據(jù)解析,恢復(fù)和展示的工作,并在恢復(fù)完成后將從蘋果手機(jī)拷貝的相關(guān)數(shù)據(jù)徹底刪除,保證客戶的信息不會出現(xiàn)泄漏。
通過以上實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可以借助軟件增加必須的通用硬件平臺的方式來實(shí)現(xiàn)。雖然通過實(shí)施例描述了本發(fā)明,本領(lǐng)域的技術(shù)人員知道,本發(fā)明有很多變形和變化而不能脫離本發(fā)明的精神,一樣受本發(fā)明的權(quán)利要求保護(hù)。本發(fā)明未詳細(xì)闡述的部分屬于本領(lǐng)域公知技術(shù),本領(lǐng)域技術(shù)人員根據(jù)已有的描述已能夠在不付出創(chuàng)造性勞動的前提下進(jìn)行實(shí)施,因此,不再贅述。