[发明专利]一种基于日志与文件结构的手机数据恢复方法在审
| 申请号: | 202210357611.6 | 申请日: | 2022-04-07 |
| 公开(公告)号: | CN114691428A | 公开(公告)日: | 2022-07-01 |
| 发明(设计)人: | 梁斌;张有为;史国恩;刘娟;梁芳;支敏;刘波;刘振杰;胡建峰 | 申请(专利权)人: | 河南华正通信息技术有限公司 |
| 主分类号: | G06F11/14 | 分类号: | G06F11/14 |
| 代理公司: | 郑州浩翔专利代理事务所(特殊普通合伙) 41149 | 代理人: | 关璐琪 |
| 地址: | 450000 河南省郑州市郑东新区*** | 国省代码: | 河南;41 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 日志 文件 结构 手机 数据 恢复 方法 | ||
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确定此数据表的根页编号RootPage,由字段5中创建此数据表的SQL语句确定数据表的字段数目TypeNum;
步骤2.2:根据根页编号RootPage寻找数据表的所有子页,由子页的第1个字节是否为“0x0D”,判断此页是否为存储数据记录的B+tree叶子页,收集所有的B+tree叶子页,每页的起始地址PageAddress可以由页编号PageNum由以下公式计算得到
PageAddress=(PageNum-1)×PageSize
PageNum∈[2,DbSize]
步骤2.3:由B+tree叶子页的页头中偏移为1的2个字节确定自由块链表中第1个自由块的地址;然后,根据自由块的前2个字节表示的地址收集B+tree叶子页自由块链表中的所有自由块;
步骤2.4:恢复自由块中的已删除数据:恢复自由块中的数据类型字段以及数据字段,写入临时文件;
步骤2.5:恢复未使用空间中的已删除数据:根据未使用空间中的字节是否为“0x00”,收集未使用空间中的非“0x00”字节,模糊恢复这部分非“0x00”字节,根据恢复出的部分字段,结合语义分析,提取其中有价值的信息,写入临时文件。
4.根据权利要求3所述的基于日志与文件结构的手机数据恢复方法,其特征在于,所述步骤2.4中,恢复自由块中的已删除数据的步骤如下:
步骤2.4.1:由自由块的第3、4两个字节的值确定该自由块的大小Length(FreeBlock);
步骤2.4.2:假设CellSize、RowId、HeaderSize总共占用X个字节,其中X取值为4、5、6,则从第X+1个字节开始的TypeNum个可变长整数就是Type1-TypeN,如果等式
成立,则假设成功,依次读取TypeN后的Data数组,通过解码精确恢复已删除数据;
步骤2.4.3:如果步骤2.4.2中等式不成立,则CellSize、RowId、HeaderSize可能总共占用3个字节,Type1被覆盖,Type1占用1个字节,此时,从自由块第5个字节开始读取的TypeNum-1个可变长整数就是Type2-TypeN,如果不等式
成立,则假设成功,此时,根据Value(Typei)表示的Datai的大小从自由块的尾部逆向恢复Datai数据,即先恢复DataN,再恢复Data(N-1),直到Data2,其中TypeN和Data2之间的数据为Data1的数据;
步骤2.4.4:如果步骤2.4.3中不等式不成立,则该自由块表示的已删除数据可能已经部分被重写覆盖或属于成块删除,此时,无法精确恢复,将整个自由块作为整体解码模糊恢复后,通过语义分析,从中提取有价值的信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于河南华正通信息技术有限公司,未经河南华正通信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210357611.6/1.html,转载请声明来源钻瓜专利网。





