一种基于日志与文件结构的手机数据恢复方法技术

技术编号:34016413 阅读:21 留言:0更新日期:2022-07-02 15:52
本发明专利技术涉及一种基于日志与文件结构的手机数据恢复方法,包括步骤1:获取预恢复数据的SQLite数据库文件、日志文件,根据文件的前16个字节判断此文件是否为数据库文件、是哪一类型的日志文件;步骤2:根据不同的文件类型,结构化读取页数据,提取文件中的所有叶子页/空闲块,解析各个叶子页/空闲块中的Type字段和Data字段,通过估计与验证的方法进行数据解析;步骤3:遍历叶子页/空闲块,直到下一个叶子页/空闲块为空,根据类型信息解析每个单元的数据,并将解析数据写入临时文件。本发明专利技术对SQLite数据库进行删除恢复,有针对性地对不同文件进行还原,具有恢复效率高、扩展性强的优点。点。点。

【技术实现步骤摘要】
一种基于日志与文件结构的手机数据恢复方法


[0001]本专利技术涉及电子取证与数据恢复领域,具体的说,涉及了一种基于日志与文件结构的手机数据恢复方法。

技术介绍

[0002]随着智能手机在法律案件中作为证据的场景增多,犯案人员的反取证意识也越来越强,在作案后往往会删除重要数据线索,使得取证人员获取到完整的办案线索越来越难,取证的工作量也同时与日俱增。
[0003]智能手机上的数据主要存储在SQLite数据库中,在SQLite数据库的管理机制中,数据记录被删除后,并没有被真正的物理删除,仅将其标记为空闲区,等待再次被使用。因此只要未进行更新或插入操作,残留数据一般会保留一段时间,但如果进行数据记录更新的话,就难以被恢复或完全恢复。
[0004]目前市面上的手机取证工具中使用的数据恢复技术大多恢复效率低、扩展性差、性能不稳定,极大地影响取证人员的办案效率。如何能够恢复删除数据变得越来越值得关注。
[0005]SQLite数据库删除恢复的难点在于,如何从数据库相关文件中寻找残留的数据库记录痕迹,并对残留数据进行分析、整合,进而实现数据库删除记录的恢复。
[0006]为了解决以上存在的问题,人们一直在寻求一种理想的技术解决方案。

技术实现思路

[0007]本专利技术提供了一种基于日志与文件结构的手机数据恢复方法,针对现有SQLite数据恢复技术恢复效率低、扩展性差、性能不稳定的问题,综合分析所有可能保存删除数据碎片的文件,细粒度的对所有文件进行数据恢复。
[0008]为实现上述目的,本专利技术提供的技术解决方案为:
[0009]一种基于日志与文件结构的手机数据恢复方法,包括:
[0010]步骤1:获取预恢复数据的SQLite数据库文件、日志文件,根据文件的前16个字节是否为“0X53514C69746520666F726D6174203300(SQLite format3\000)”,判断此文件是否为数据库文件,若前四个字节为“0X377F0682”,则此文件为

wal日志文件,否则为

journal日志文件;
[0011]步骤2:根据不同的文件类型,结构化读取页数据,提取文件中的所有叶子页/空闲块,解析各个叶子页/空闲块中的Type字段和Data字段,通过估计与验证的方法进行数据解析;
[0012]步骤3:遍历叶子页/空闲块,直到下一个叶子页/空闲块为空,根据类型信息解析每个单元的数据,并将解析数据写入临时文件。
[0013]所述步骤1中,若识别文件为日志文件,其数据恢复流程为:
[0014]步骤1.1:如果识别文件为

wal文件,按照

wal日志结构进行解析,保存至帧集合
中。然后,分别将帧集合中的帧依次取出,将各个帧头的salt

1字段值与文件头部中salt

1字段值进行比较,如果帧头的salt

1字段值比文件头部中salt

1字段值小1,则将根据数据库页的单元结构对该帧进行解析,获得Type以及Data数据,将获得的数据写入临时文件。
[0015]步骤1.2:如果识别文件为

journal文件,在Android4.1.1及之后的版本,每次数据库事务结束后,回滚日志文件仍然保留,仅清空头部标识失效。根据回滚日志文件结构,日志文件的每个记录的最后4个字节均为校验和。所以针对日志头被清空的情况,逆向分析校验和计算方式,根据校验和对日志文件进行数据分组,提取回滚日志文件中的数据。随后在当前记录的页中每200字节取一个字节。若默认页大小为4096,则选出20个字节。将所选字节的值与校验和初始值相加,最后截取为32位无符号整数得到RJPR最后4字节的校验和。具体计算公式为:
[0016][0017]获取校验和之后,根据校验和对

journal日志文件进行数据分组,分别分析提取每个分组中的数据,将提取数据写入临时文件。
[0018]所述步骤2中对于解析SQLite数据库文件删除数据的步骤如下:
[0019]步骤2.1:根据数据库Page1中存储的sqlite_master系统表,在相应的数据页中读取相关的字段信息:由字段1确定数据表,由字段2确定表名TableName,由字段4确定此数据表的根页编号RootPage,由字段5中创建此数据表的SQL语句确定数据表的字段数目TypeNum。
[0020]步骤2.2:根据根页编号RootPage寻找数据表的所有子页,由子页的第1个字节是否为“0x0D”,判断此页是否为存储数据记录的B+tree叶子页,收集所有的B+tree叶子页。每页的起始地址PageAddress可以由页编号PageNum由以下公式计算得到
[0021]PageAddress=(PageNum

1)
×
PageSize
[0022]PageNum∈[2,DbSize];
[0023]步骤2.3:由B+tree叶子页的页头中偏移为1的2个字节确定自由块链表中第1个自由块的地址;然后,根据自由块的前2个字节表示的地址收集B+tree叶子页自由块链表中的所有自由块。
[0024]步骤2.4:恢复自由块中的已删除数据:恢复自由块中的数据类型字段以及数据字段,写入临时文件。
[0025]步骤2.5:恢复未使用空间中的已删除数据:根据未使用空间中的字节是否为“0x00”,收集未使用空间中的非“0x00”字节,模糊恢复这部分非“0x00”字节,根据恢复出的部分字段,结合语义分析,提取其中有价值的信息,写入临时文件。
[0026]其中,模糊恢复是指不能完全恢复整条删除的信息,只能恢复删除数据的部分数据,即部分恢复;结合语义分析是指根据恢复出的部分字段,结合语义分析(一种自然语言处理方法)进行信息提取。
[0027]所述步骤2.4中,恢复自由块中的已删除数据的步骤如下:
[0028]步骤2.4.1:由自由块的第3、4两个字节的值确定该自由块的大小Length(FreeBlock);
[0029]步骤2.4.2:假设CellSize、RowId、HeaderSize总共占用X个字节,其中X取值为4、5、6,则从第X+1个字节开始的TypeNum个可变长整数就是Type1

TypeN。如果等式
[0030][0031]成立,则假设成功,依次读取TypeN后的Data数组,通过解码精确恢复已删除数据;
[0032]步骤2.4.3:如果步骤2.4.2中等式不成立,则CellSize、RowId、HeaderSize可能总共占用3个字节,Type1被覆盖(Type1占用1个字节)。此时,从自由块第5个字节开始读取的TypeNum

1个可变长整数就是Type2

T本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于日志与文件结构的手机数据恢复方法,其特征在于,包括以下步骤:步骤1:获取预恢复数据的SQLite数据库文件、日志文件,根据文件的前16个字节是否为“0X53514C69746520666F726D6174203300”,判断此文件是否为数据库文件,若前四个字节为“0X377F0682”,则此文件为

wal日志文件,否则为

journal日志文件;步骤2:根据不同的文件类型,结构化读取页数据,提取文件中的所有叶子页/空闲块,解析各个叶子页/空闲块中的Type字段和Data字段,通过估计与验证的方法进行数据解析;步骤3:遍历叶子页/空闲块,直到下一个叶子页/空闲块为空,根据类型信息解析每个单元的数据,并将解析数据写入临时文件。2.根据权利要求1所述的基于日志与文件结构的手机数据恢复方法,其特征在于,所述步骤1中,若识别文件为日志文件,其数据恢复流程为:步骤1.1:如果识别文件为

wal文件,按照

wal日志结构进行解析,保存至帧集合中,然后,分别将帧集合中的帧依次取出,将各个帧头的salt

1字段值与文件头部中salt

1字段值进行比较,如果帧头的salt

1字段值比文件头部中salt

1字段值小1,则将根据数据库页的单元结构对该帧进行解析,获得Type以及Data数据,将获得的数据写入临时文件;步骤1.2:如果识别文件为

journal文件,在Android 4.1.1及之后的版本,每次数据库事务结束后,回滚日志文件仍然保留,仅清空头部标识失效,根据回滚日志文件结构,日志文件的每个记录的最后4个字节均为校验和,所以针对日志头被清空的情况,逆向分析校验和计算方式,根据校验和对日志文件进行数据分组,提取回滚日志文件中的数据,随后在当前记录的页中每200字节取一个字节,若默认页大小为4096,则选出20个字节;将所选字节的值与校验和初始值相加,最后截取为32位无符号整数得到RJPR最后4字节的校验和,具体计算公式为:计算公式为:获取校验和之后,根据校验和对

journal日志文件进行数据分组,分别分析提取每个分组中的数据,将提取数据写入临时文件。3.根据权利要求1所述的基于日志与文件结构的手机数据恢复方法,其特征在于,所述步骤2中,对于解析SQLite数据库文件删除数据的步骤如下:步骤2.1:根据数据库Page1中存储的sqlite_master系统表,在相应的数据页中读取相关的字段信息:由字段1确定数据表,由字段2确定表名TableName,由字段4...

【专利技术属性】
技术研发人员:梁斌张有为史国恩刘娟梁芳支敏刘波刘振杰胡建峰
申请(专利权)人:河南华正通信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1