SQLite数据库文件恢复提取技术研究.docx

SQLite数据库文件恢复提取技术研究.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQLite数据库文件恢复提取技术研究

手机取证-SQLite数据库文件恢复提取技术研究编者按:本期感谢数据恢复四川省重点实验室科研人员带来关于SQLite数据库文件取证的技术研究成果。1.简介SQLite是一个轻量级自包含的DBMS,他具有诸多意想不到的特性:小巧、事务、绿色、并发、零配置、可移植、开源等,开发使用时仅仅需要一个头文件,一个动态库文件,就拥有关系数据库的所有功能。在电子数据的发展历程中,SQLite应用场景也越来越广泛,其中嵌入式设备是SQLite应用的主要场景,典型代表为Google的Android。此外,桌面应用和Websites也越来越多地使用SQLite。当下手机应用市场发展迅猛,几乎所有手机平台下的APP存储数据时都使用到SQLite数据库,比如Android、iOS、Windows Mobile、Symbin、Palm等。随着智能手机的迅速普及,针对智能设备的取证、删除数据的恢复等技术也越来越重要,尤其是对电子数据取证、司法调查等领域,被删除的手机信息往往具有更高的价值。本文就结合SQLite数据库应用特征来阐述手机取证过程中如何快速有效地恢复SQLite数据库文件中的数据。2.技术方案目前涉及到SQLite数据库删除数据恢复的相关技术主要是有以下三种,从实战角度讲,这三种恢复技术都存在一定的缺陷,很大程度上影响手机取证的成功率:(1)基于事务文件的恢复技术——是指通过数据库事务文件进行数据库删除恢复的方法,常用到的事务文件包括:日志文件.wal文件、日志索引文件.shm文件、事务回滚日志文件.journal文件。缺陷:要实现基于事务文件的恢复技术,前提是必须存储SQLite事务日志文件。而且,在手机设备存储数据时,日志文件产生于事务开始,事务结束时会删除日志文件,这也对通过事务日志文件恢复带来了极大的困扰。(2)基于文件系统存储机制的恢复技术——是指利用文件系统的存储特性进行SQLite数据库文件删除恢复的方法,比如利用Yaffs2文件系统的out-of-place-write存储策略进行删除数据恢复。缺陷:要实现基于文件系统存储机制的恢复技术,要求智能设备必须使用特定的文件系统,但Android2.3版本之后,大多数智能设备都没有采用Yaffs2该类文件系统,该方法有一定的局限性。(3)基于SQLite结构的恢复技术——是指通过解析SQLite文件结构,分析SQLite的存储原理进而实现删除数据恢复的方法。缺陷:基于SQLite结构的恢复技术对常规删除的区域,能实现恢复,但对于删除区域已被覆盖或数据库文件被删除的情况,也较难实现碎片数据的恢复。数据恢复四川省重点实验室科研人员介绍,通过对已有技术的学习和SQLite数据库文件的深入分析,结合并完善上述的恢复技巧,现提出一种新的技术解决方案,从数据底层存储原理和机制着手,能有效解决上述技术造成的缺陷,实现快速且全面的取证。2.1 技术难点1:提高恢复数据中的有效数据比例问题提出基于对SQLite数据库文件的结构解析,通过对SQLite自由块、空闲页的数据解析和提取从而恢复出来的数据,在多数情况下会出现乱码、不规则字符等无效数据,若数据量较大时,删除数据的恢复效果可能会更差,如何过滤和筛选从自由块、空闲页中提取的数据成为了快速、有效取证的一大难题。解决方案在已有的关于SQLite数据库恢复技术基础上,提出了一种通过配置并使用特征库文件技术过滤已恢复数据中无效数据的方法。那么该特征文件是如何做到过滤和筛选数据的呢?接下来小编将做详细阐述。为了更加明白特征库文件的工作原理,需要从SQLite数据库文件结构说起。SQLite数据库文件由固定大小的“页(page)”组成。页的大小可以在SQLite文件头中获取,需要注意的是记录页大小的值为Big-Endian存储,且所记录值的单位为Byte。 【SQLite文件头结构图,红色框标注部分为页大小】从逻辑上来讲,SQLite数据库文件由多个多重Btree构成。每个Btree存储一个表的数据或一个表的索引,索引采用Btree,而表数据采用B+tree,每个Btree占用至少一个完整的页,每个页是Btree的一个结点。存储表数据的结构是B+Tree的叶子页,其结构如下图所示。【B+Tree的叶子页结构图】下面来对比存储表数据的B+Tree的叶子页在数据删除前后的变化【B+Tree的叶子页数据删除前后的变化】在实际的数据库中删除数据的前后变化情况如下图所示,其中红色框的值代表数据指针的个数,绿色框的值代表第一个数据指针,蓝色框一一列举出各指针。【实际数据库中B+Tree的叶子页数据删除前后的变化】然而指针映射的数据区中记录的信息并未被清除。从上图中可以看出,删除数据后仅会改变页头后面的数据指针,同时对于的数据区域标记为自由块,自由块的数据内容并不会被擦除,

您可能关注的文档

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档