999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Android手機的Sqlite數據恢復技術綜述

2019-12-02 08:56:52王春蘭康鵬程
科技創新與應用 2019年32期
關鍵詞:數據存儲

王春蘭 康鵬程

摘? 要:各種智能設備的信息常用Sqlite數據庫儲存,這些信息可能會因為各種原因“丟失”。介紹了Sqlite數據庫基本情況,總結了傳統的可靠性高的Sqlite數據恢復方法并指出不足之處,然后對兩種新型數據恢復方法——以Sqlite存儲結構為基礎的數據恢復技術和以Sqlite預寫日志為基礎的數據恢復技術進行了闡述。

關鍵詞:Sqlite數據庫;數據恢復;數據存儲;日志

中圖分類號:TP309.3文獻標志碼:A 文章編號:2095-2945(2019)32-0160-03

Abstract: Sqlite databases are commonly used to store information on various smart devices, which may be "lost" for various reasons. This paper introduces the basic situation of Sqlite database, summarizes the traditional high reliability Sqlite data recovery methods and points out the shortcomings. Then is describes two new data recovery methods, data recovery technology based on Sqlite storage structure and data recovery technology based on Sqlite prewrite log.

Keywords: Sqlite database; data recovery; data storage; log

1 概述

Android手機以其開放、適應性強的優勢,已經占了市場八成份額[1]。用戶與Android設備二十四小時“親密無

間”,用戶的大量信息留在手機中。這些數據在偶然或者人為因素下數據可能“丟失”,對大量用戶而言,需要安全高效的數據恢復技術找回數據;在電子取證過程中,嫌疑人持有的智能設備中可能存儲有相關證據,可能被嫌疑人“刪除”,需要恢復數據,打擊犯罪。Android系統廣泛地使用Sqlite數據庫,其特點是輕量、快速、運行流暢[2]。目前有一些安卓手機Sqlite數據庫恢復方法,但面對不同品牌不同設備、甚至不同型時效果不盡如人意,恢復效率也不高。

2 Sqlite數據庫

Android使用開源的、與操作系統無關的SQL數據庫——SQLite。Sqlite數據庫為了簡化操作,將Sqlite數據庫集成到設備的操作中,并且封裝用于操作數據庫的API,以便快速操作數據庫[3,4]。因此,不同的用戶數據將會被各自APP管理,數據被創建并保存在各自應用對應的Sqlite數據庫目錄下,這些被記載的信息,其實是安卓手機Sqlite數據恢復的來源。提取和恢復數據庫信息,就是傳統數據恢復技術的核心步驟。

2.1 Sqlite日志恢復技術

Sqlite日志恢復措施是基于該庫的日志存放機制[5]。首先確保日志文件沒有缺失,數據才能被恢復。在系統異常崩潰,或者突然斷電時,日志文件會無法正常保存。這種方法以往主要用于計算機取證,在Android設備數據恢復技術中用得比較少,但在安卓手機信息恢復中也是一種可以嘗試的方法。

2.2 Sqlite自由塊恢復技術

Sqlite數據庫自由塊恢復措施,首先要發現索引中提供的各種數據,它們存在于Sqlite的內部頁面;然后掃描并發現存在的數據頁。接著提取存儲在數據頁面的空閑塊數據信息,最后根據所要恢復的數據特征找到數據并進行Sqlite數據恢復[6]。這種方法有一定的局限,當數據庫文件不夠完整,或者內部頁面索引數據不全時,都無法順利定位和恢復數據。

可見Sqlite數據庫的兩種傳統恢復措施都存在一些缺點,不足以應對Sqlite數據庫恢復的需求。兩個比較完備的恢復技術應運而生,新型恢復技術根據Sqlite數據庫本身特點,根據存儲結構和預寫日志展開。

3 新型Sqlite數據庫數據恢復技術

3.1 以Sqlite存儲結構為基礎的數據恢復技術

Sqlite數據庫的后端由B-tree、Pager和OS Interface組成。B-tree的職責是負責排序,維護多個數據庫頁之間錯綜復雜的關系,將頁面組織成樹狀結構,頁面就是樹的葉子。Pager負責傳輸,根據B-tree的請求從磁盤讀取頁面或者寫入頁面。

在Sqlite數據庫操作時,不完全擦除原有數據,安卓手機中刪除的數據庫文件也可以存儲在某些文件中[7]。因此,對于Sqlite存儲的結構復原措施,順序掃描文件可能存在的空間,然后挖掘和獲取數據。首先得到數據分區的鏡像,接著定位有效的數據頁,然后寫入恢復后的數據庫數據,這一步依賴于數據頁記錄;最后,重復的記錄被丟棄,得到最終的信息。

安卓設備信息存儲于邏輯分區的數據區域,這是公共存儲路徑[8]。得到數據分區鏡像是數據恢復的前提,可以把該分區復制到內存卡,或者直接復制到目標地址。每個app都有一個特殊的數據庫目錄,本步驟最終要獲取的是Sqlite數據庫[9]。一旦數據被覆蓋丟失,原來記錄存儲單元單位有3個不同的情形。第一種是記錄在該單元是完整的;第二種是記錄在該單元完整且有多個;第三種是記錄在該單位不完整。能恢復的只有第一種和第二種情況,最后一種沒有有效通過軟件的方法去恢復,可以嘗試物理方法解決。在Sqlite數據庫,數據頁面的大小空間通常為1024B或4096B,設備的最小存儲單元必然大于4096B;對應于文件系統,也因為數據頁面使用逐頁存儲機制,在安卓手機中存儲所謂的“丟失的文件”,數據頁信息是不會丟失的,這對信息的恢復很有幫助。

對于該恢復方法,最重要的三個部分分別是:找到B-tree頁面,發現記錄位置,然后恢復記錄。例如,在 B-tree頁的定位中,B-tree頁面定位算法的使命是在得到的映像中發現數據和內部頁面,便以提取頁面中的信息。

3.2 以Sqlite預寫日志為基礎的數據恢復技術

SQLite在3.7.0版本引入了WAL(Write-Ahead-Logging),WAL的全稱是Write Ahead Logging,它是很多數據庫中用于實現原子事務的一種機制。采用WAL機制后,對數據庫的修改并不直接寫入到數據庫文件中,而是寫入到另外一個稱為WAL的文件中;如果事務失敗,WAL中的記錄會被忽略,撤銷修改;如果事務成功,它將在隨后的某個時間被寫回到數據庫文件中,提交修改。讀操作時,SQLite將在WAL文件中搜索,找到最后一個寫入點,記住它,并忽略在此之后的寫入點(這保證了讀寫和讀讀可以并行執行);隨后,它確定所要讀的數據所在頁是否在WAL文件中,如果在,則讀WAL文件中的數據,如果不在,則直接讀數據庫文件中的數據。寫操作時,SQLite將之寫入到WAL文件中即可,但是必須保證獨占寫入,因此寫寫之間不能并行執行。

這種數據恢復方法同樣需要獲取手機的鏡像。Android手機在執行Sqlite數據更新操作時,會提前將相關信息寫入日志文件。在進行數據恢復時,首先掃描鏡像,找到要恢復的數據庫的日志文件,根據日志文件掃描數據庫的數據幀塊,最后將找到的數據塊按照對應順序合理連接,實現數據庫的恢復目的[10]。每一次操作的具體步驟是相似的,原理都是基于Sqlite的存儲結構,開始獲取數據分區的數據;接著定位有效的且連接在一起的有效幀塊;其次,根據具體情況寫入恢復數據庫中的數據頁記錄;最后,判斷是否已經存在同樣的記錄,如果有重復的記錄則丟棄,掃描完所有的數據塊后得到最終的完整信息。

該方法中,最重要的有四個步驟:框架信息的定位和連接,記錄信息的提取和恢復。具體步驟如圖1所示。

對于該數據庫預寫日志的措施,有必要在做好數據恢復前,了解數據的碎片化現象。但是記錄數據在碎片化之后,如果要恢復數據,其恢復過程需要過多的時間。如果直接連接所獲得的數據幀塊,則可以確保記錄數據不會有丟失,并且能夠提高還原后的效果。必須確定隨機數和連接幀塊,才能成功連接數據幀塊。比如:根據幻數掃描映像,然后找到日志文件。然后,搜索幀并提取記錄就要根據隨機數的大小,確定其是否包含于目標數據文件。再依照隨機數來繼續搜索,拿到所有數據塊;最后一步,逐一單獨計算得到數據塊連接空間的具體值,以值進行幀塊的連接。

在預寫日志中根據給定目標恢復記錄,然后為下一個數據幀塊獲取和連接工作確定隨機數,就要用到確定隨機數算法。預寫日志的定位又要用到幻數,加以確認,得到臨時隨機數值;接著,根據臨時隨機數的值定位預寫文件日志記錄,并確定所有目標幀塊;最后,提取幀塊中的第一個所需目標記錄,當然,這不會完全正確提取,則需要判斷確定恢復的記錄,然后確定該隨機數。至于數據幀塊拼接算法,它主要通過確定的隨機數,再定位幀塊,最終完成目標幀塊拼接。幀塊由隨機數定位,初始偏移量會根據公式計算,得到的提取幀塊的數據,在下一次記錄恢復可以用到,依次執行取得所有目標幀塊。在計算過程中,需要用到隨機數定位的幀塊的偏移大小和BLOCK_SIZE表示文件系統的分配大小。

4 結論

與傳統的數據恢復技術相比,新型恢復方法的亮點在于充分利用數據結構和存儲日志,以達到Sqlite數據庫恢復的目標。新型的數據恢復算法對Android手機的Sqlite數據庫數據信息恢復技術具有指導意義,可以大概率成功完成數據丟失后的恢復工作。

參考文獻:

[1]畢攀.基于紅黑樹的嵌入式數據庫Sqlite索引機制的優化方案的研究[D].太原科技大學,2012.

[2]李蔚.基于閃存數據庫系統的存儲管理技術研究[D].華中科技大學,2009.

[3]楊有波.基于μC/OS-Ⅲ操作系統的Sqlite數據庫的移植與分析[D].河北工業大學,2014.

[4]劉婕.基于Android系統的移動終端通訊錄的研究與設計[D].西安電子科技大學,2013.

[5]課家教育.詳細談談Android系統中的Sqlite數據庫的應用[EB/OL].北京.[2016-04-08].http://www.kokojia.com/article/17544.html.

[6]董婷婷.基于Android系統的手機隱私數據的加密研究[D].安徽理工大學,2017.

[7]DragonWar.Sqlite預寫式日志[EB/OL].北京.[2014-12-03].https://blog.csdn.net/weixin_33748818/article/details/85676411.

[8]李蔚.基于閃存數據庫系統的存儲管理技術研究[D].華中科技大學,2009.

[9]王付華,王永杰.iPhone平臺Sqlite數據庫開發[J].電腦編程技巧與維護,2014(13):25-28.

[10]陳浩.Android手機的Sqlite數據恢復技術研究[D].杭州電子科技大學,2016.

猜你喜歡
數據存儲
簡單的數據修復
文理導航(2017年2期)2017-02-16 13:18:46
大數據時代檔案信息建設的認識和實踐
淺談電力大數據平臺關鍵技術研究與應用
開源數據庫數據存儲的實現路徑分析
基于Android開發的APP數據存儲研究
哈希算法在物聯網數據存儲中的應用
空難事故跨媒體信息采集與檢索方法的研究
基于STM32的AD采集與SD卡數據存儲
淺談信息系統工程和POJO模型組件開發
基于MongoDB的調查決策系統數據存儲方案設計
主站蜘蛛池模板: 国产天天射| 亚洲精品天堂自在久久77| 日韩无码黄色| 女人18毛片一级毛片在线 | 亚洲人成在线免费观看| 日韩精品一区二区三区swag| 亚洲精品欧美日韩在线| 国产黄在线观看| 夜夜拍夜夜爽| 波多野结衣无码视频在线观看| 亚洲欧美另类日本| 国产成人亚洲无码淙合青草| 亚洲色中色| 黄色在线网| 亚洲av综合网| 中文字幕不卡免费高清视频| jizz亚洲高清在线观看| 日本午夜视频在线观看| av无码久久精品| 欧美成人a∨视频免费观看| 亚洲区视频在线观看| 性喷潮久久久久久久久| 亚洲区视频在线观看| 午夜久久影院| 五月天福利视频| 国模粉嫩小泬视频在线观看| 91在线无码精品秘九色APP| 国产成人无码综合亚洲日韩不卡| 国内精品免费| 91福利片| 久久成人18免费| 欧美一级色视频| 亚洲AV成人一区国产精品| 91久久性奴调教国产免费| 青青国产视频| 国产精品亚欧美一区二区| 国产菊爆视频在线观看| 久久77777| 久久特级毛片| 青草视频网站在线观看| 区国产精品搜索视频| 97免费在线观看视频| 国产色图在线观看| 中文字幕不卡免费高清视频| 国产精品视频观看裸模| 国产乱人视频免费观看| 国产成人一区二区| 亚洲天堂视频在线免费观看| 日本一本正道综合久久dvd | 欧美精品在线视频观看| 东京热av无码电影一区二区| 国产美女主播一级成人毛片| 久久黄色毛片| 亚洲精品无码av中文字幕| 青青草91视频| 亚洲国产精品人久久电影| 无码精品国产dvd在线观看9久| 一级成人a做片免费| 日韩激情成人| 精品亚洲欧美中文字幕在线看| 91香蕉国产亚洲一二三区| 亚洲欧洲日韩久久狠狠爱| 欧美一级片在线| av一区二区三区在线观看 | 午夜毛片免费观看视频 | 欧美乱妇高清无乱码免费| 久久久精品无码一二三区| 欧美成人免费午夜全| 成年看免费观看视频拍拍| 亚洲精品亚洲人成在线| 亚洲乱码在线播放| 制服丝袜在线视频香蕉| 97在线国产视频| 欧美精品在线视频观看| 欧美无遮挡国产欧美另类| 99久久人妻精品免费二区| 日韩欧美国产中文| 亚洲精品国产综合99久久夜夜嗨| 久久精品娱乐亚洲领先| 99精品视频在线观看免费播放| 成人午夜视频网站| 免费高清a毛片|