一种清除SQLite数据库中数据的方法

文档序号:6631916阅读:1020来源:国知局
一种清除SQLite数据库中数据的方法
【专利摘要】本发明公开了一种清除SQLite数据库中数据的方法,包括以下步骤:S1:连接装有SQLite数据库的设备,建立与设备的连接通道;S2:扫描设备内存空间中所有SQLite文件,得到存储路径;S3:将扫描到的SQLite文件逐个进行分析,并进行非正常数据清除。本发明优点在于扫描全面,能够找到存储空间内的所有SQLite文件并针对SQLite内的所有区域进行扫描和标记;清除彻底,针对SQLite文件内master表、数据表、索引表、空闲页面的非正常数据进行扫描和清除;防止针对隐私数据的恶意盗取行为,保护隐私数据的安全。
【专利说明】一种清除SQLite数据库中数据的方法

【技术领域】
[0001]本发明涉及信息安全【技术领域】,特别涉及一种清除SQLite数据库中数据的方法。

【背景技术】
[0002]SQLite是一种轻型数据库,占用资源少,具有支持主流操作系统,能跟多种语言结合,处理速度快的特点而被广泛使用。SQLite数据库中的数据涉国家机关、军队、企业、事业单位、个人的保密数据及隐私。
[0003]使用含SQLite数据库的应用程序时,对数据进行的删除操作并没有做到真正意义上的删除,数据仍然存在只是被标记为删除状态;而通过目前市面上的一些数据恢复软件可以轻松的找出这些被删除的数据,从而被一些不法分子利用窃取隐私数据,对个人、企业、国家机关照成严重的损失和危害;所以目前急需一种能够彻底清除SQLite数据库中隐私数据的方法。


【发明内容】

[0004]本发明针对现有技术的缺陷,提出一种清除SQLite数据库中数据的方法,能有效的解决上述现有技术存在的问题。
[0005]为了实现上述目的,本发明采用的技术方案是:一种清除SQLite数据库中数据的方法,包括以下步骤:
51:连接装有SQLite数据库的设备,建立与设备的连接通道;
52:扫描设备内存空间中所有SQLite文件,得到存储路径;
53:将扫描到的SQLite文件逐个进行分析,并进行非正常数据清除。
[0006]作为优选,所述S2包括以下步骤:
5201:逐个扫描设备存储空间,获取路径;
5202:判断获取的路径对应的是文件夹还是文件,若是文件夹则打开扫描文件夹内的文件,若是文件则执行S203 ;
5203:解析并判断该文件是否为SQLite数据库文件,若是执行S204,否则执行S205 ;
5204:记录该SQLite数据库文件的路径,执行步骤S205 ;
5205:判断是否扫描完成,如果扫描完成,执行S206,否则继续扫描直至完成所有SQLite数据库文件路径记录;
5206:扫描完成后返回并存储所有的SQLite数据库文件的路径。
[0007]作为优选,所述S3包括一下步骤:
5301:根据存储的SQLite文件路径中提取一个SQLite文件;
5302:解析并清除master表中的非正常数据;
5303:解析并清除数据表和索引表中的非正常数据;
5304:解析并清除空闲页面的非正常数据;
5305:判断所有SQLite文件是否解析完成,如是则退出;如否则返回到S301。
[0008]作为优选,所述S302包括以下步骤:
53021:从master表的根页开始,找到master表所有的页面,并使页号在逻辑上形成B
树;
53022:根据master表的B树,解析每个页面,对页面的未分配区、自由块、碎片在位图上进行标记;
53023:对表叶子页的单元内容区进行解析,查看单元是否有溢出页,如果有则对溢出页中的碎片进行标记;如果没有则跳过;
53024:将解析出来的所有表信息存储,提供给S303使用;
53025:根据位图上的标记,清除标记区域的所有数据。
[0009]作为优选,所述S303包括以下步骤:
53031:从S3024得到的表信息中取出一条表信息;
53032:判断该表的类型;
53033:根据表类型,创建表的对象,从表的根页开始,找到所有表的页面,并使页号在逻辑上形成B树;
53034:根据表的B树,解析每个页面,对页面的未分配区、自由块、碎片在位图上进行标记;
53035:解析叶子页及索引页的单元内容区,查看单元是否有溢出页,如果有则对溢出页中的碎片进行标记;如果没有则跳过;
53036:根据位图上的标记,清除该表所有标记区域数据;
53037:判断所有表是否解析完成,如果是,则退出;如果否,则返回到S3031 ;
作为优选,所述S304包括以下步骤:
53041:读取SQLite空闲页链表首页指针;
53042:判断是否有空闲页,若没有则结束,若有则执行S3043 ;
53043:读取该空闲树干页内容,并清除其中的碎片数据;
53044:判断该空闲树干页下是否有空闲叶子页,如果有,则执行S3045 ;如果没有,则S执行3046 ;
53045:读取该空闲树干页下的所有空闲叶子页,并清除每个空闲叶子页中的碎片数据;
53046:读取下一个空闲树干页的指针;
53047:判断下一个空闲树干页的指针是否为零,若为零则表示空闲链表已到尾部,结束;若不为零则执行S3043。
[0010]与现有技术相比本发明的优点在于:
扫描全面,能够找到存储空间内的所有SQLite文件并针对SQLite内的所有区域进行扫描和标记。
[0011]清除彻底,针对SQLite文件内master表、数据表、索引表、空闲页面的非正常数据进行扫描和清除。
[0012]预防针对隐私数据的恶意盗取行为,保护数据的安全。

【专利附图】

【附图说明】
[0013]图1为本发明实施例的主流程图;
图2为本发明实施例步骤S2的流程图;
图3为本发明实施例步骤S3的流程图;
图4为本发明实施例步骤S302的流程图;
图5为本发明实施例步骤S303的流程图;
图6为本发明实施例步骤S304的流程图。

【具体实施方式】
[0014]为了详细说明本发明的【具体实施方式】,下面结合附图加以说明:
如图1所示,一种清除SQLite数据库中数据的方法,包括以下步骤:
51:连接装有SQLite数据库的设备,建立与设备的连接通道;
52:扫描设备内存空间中所有SQLite文件,得到存储路径;
53:将扫描到的SQLite文件逐个进行分析,并进行非正常数据清除。
[0015]如图2所示,所述S2包括以下步骤:
5201:逐个扫描设备存储空间,获取路径;
5202:判断获取的路径对应的是文件夹还是文件,若是文件夹则打开扫描文件夹内的文件,若是文件则执行S203 ;
5203:解析并判断该文件是否为SQLite数据库文件。在该步骤中要判断是否为SQLite数据库文件我们先判断该文件大小是否为512字节的整倍数,若是则提取该文件前16字节的内容,判断是否为“SQLite Format 3”,若是则取出该文件从开始的偏移量为16的2个字节,判断是否为512字节的整倍数,若是则执行S204 ;上述判断若有一项为否则执行S205 ;
5204:记录该SQLite数据库文件的路径,执行步骤S205 ;
5205:判断是否扫描完成,如果扫描完成,执行S206,否则继续扫描直至完成所有SQLite数据库文件路径记录;
5206:扫描完成后返回并存储所有的SQLite数据库文件的路径。
[0016]如图3所示,所述S3包括一下步骤:
5301:根据存储的SQLite文件路径中提取一个SQLite文件;
5302:解析并清除master表中的非正常数据;
5303:解析并清除数据表和索引表中的非正常数据;
5304:解析并清除空闲页面的非正常数据;
5305:判断所有SQLite文件是否解析完成,如是则退出;如否则返回到S301。
[0017]如图4所示,所述S302包括以下步骤:
53021:从master表的根页开始,依次遍历所有master表的页,判断页类型,若为表叶子页,则记录下该页页号;若为表内部页,则查找该内部页的所有叶子页,记录该内部页的页号及所有叶子页的页号。所有属于master表的页都遍历完成后,返回所有的页号,并使页号在逻辑上形成B树;
53022:根据master表的B树,依次取出页号,读取页内容。对于每个页,判断页类型,在位图上标记该页的未分配区、自由块、碎片。如果该页为表内部页,由于不存放数据,所以只做标记;如果是表叶子页执行S3023 ; 53023:对表叶子页的单元进行解析,若单元含有溢出页则对溢出页中的碎片数据进行标记,得到SQlite数据库的所有表信息;
53024:将解析出来的所有表信息存储,提供给S303使用;
53025:根据位图上的标记,通过构造16进制数据(OxOO、OxFF)写入到所有位图标记的物理存储位置覆盖原有数据,达到清除master表的所有标记区域数据的目的。
[0018]如图5所示,所述S303包括以下步骤:
53031:从S3024得到的表信息中取出一条表信息;
53032:判断该表的类型;
53033:根据表类型,创建不同表的对象,从表的根页开始,依次遍历表所有的页,判断页类型,若为叶子页,则记录下该页页号;若为内部页,则查找该内部页的所有叶子页,记录该内部页的页号及所有叶子页的页号找到所有表的页面,所有属于该表的页都遍历完成后,返回所有的页号并使页号在逻辑上形成B树;
S3034:根据表的B树,依次取出页号,读取页内容,对于每个页,判断页类型,在位图上标记该页的未分配区、自由块、碎片的方法,如果该页为表内部页,由于不存放数据,所以只做标记;如果是表叶子页以及索引页,标记完成后对该页面的单元内容区进行分析;
53035:解析页面的单元,查看单元是否有溢出页,如果有溢出页,则对溢出页中的碎片进行标记;如果没有溢出页,则跳过;
53036:根据位图上的标记,清除B树的每个页面中未分配区、自由块、碎片的数据;
53037:判断所有表是否解析完成,如果是,则退出;如果否,则返回到S3031。
[0019]如图6所示,所述S304包括以下步骤:
53041:读取SQLite数据库空闲页链表首页指针,该指针为从开始的偏移量为32的4个字节;
53042:判断S3041读取的值是否为零,若为零,表示该SQLite数据库中无空闲页则结束;若不为零则执行S3043 ;
53043:读取该空闲树干页内容,并清除其中的碎片数据;
53044:判断该空闲树干页下是否有空闲叶子页,如果有,则执行S3045 ;如果没有,则S执行3046 ;
53045:读取该空闲树干页下的所有空闲叶子页,并清除每个空闲叶子页中的碎片数据;
53046:读取下一个空闲树干页的指针,该指针存放在当前的空闲树干页中;
S3047:判断下一个空闲树干页的指针是否为零,若为零则表示空闲链表已到尾部,结束;若不为零则执行S3043。
【权利要求】
1.一种清除SQLite数据库中数据的方法,其特征在于包括以下步骤: 51:连接装有SQLite数据库的设备,建立与设备的连接通道; 52:扫描设备内存空间中所有SQLite文件,得到存储路径; 53:将扫描到的SQLite文件逐个进行分析,并进行非正常数据清除。
2.根据权利要求1所述的一种清除SQLite数据库中数据的方法,其特征在于所述S2包括以下步骤: 5201:逐个扫描设备存储空间,获取路径; 5202:判断获取的路径对应的是文件夹还是文件,若是文件夹则打开扫描文件夹内的文件,若是文件则执行S203 ;5203:解析并判断该文件是否为SQLite数据库文件,若是执行S204,否则执行S205 ; 5204:记录该SQLite数据库文件的路径,执行步骤S205 ; 5205:判断是否扫描完成,如果扫描完成,执行S206,否则继续扫描直至完成所有SQLite数据库文件路径记录; 5206:扫描完成后返回并存储所有的SQLite数据库文件的路径。
3.根据权利要求1所述的一种清除SQLite数据库中数据的方法,其特征在于所述S3包括一下步骤: 5301:根据存储的SQLite文件路径中提取一个SQLite文件; 5302:解析并清除master表中的非正常数据; 5303:解析并清除数据表和索引表中的非正常数据; 5304:解析并清除空闲页面的非正常数据; 5305:判断所有SQLite文件是否解析完成,如是则退出;如否则返回到S301。
4.根据权利要求3所述的一种清除SQLite数据库中数据的方法,其特征在于所述S302包括以下步骤:53021:从master表的根页开始,找到master表所有的页面,并使页号在逻辑上形成B树; 53022:根据master表的B树,解析每个页面,对页面的未分配区、自由块、碎片在位图上进行标记; S3023:对表叶子页的单元内容区进行解析,查看单元是否有溢出页,如果有则对溢出页中的碎片进行标记;如果没有则跳过; 53024:将解析出来的所有表信息存储,提供给S303使用; 53025:根据位图上的标记,清除标记区域的所有数据。
5.根据权利要求3所述的一种清除SQLite数据库中数据的方法,其特征在于所述S303包括以下步骤: 53031:从S3024得到的表信息中取出一条表信息; 53032:判断该表的类型; 53033:根据表类型,创建表的对象,从表的根页开始,找到所有表的页面,并使页号在逻辑上形成B树; 53034:根据表的B树,解析每个页面,对页面的未分配区、自由块、碎片在位图上进行标记; 53035:解析叶子页及索引页的单元内容区,查看单元是否有溢出页,如果有则对溢出页中的碎片进行标记;如果没有则跳过; 53036:根据位图上的标记,清除该表所有标记区域数据; 53037:判断所有表是否解析完成,如果是,则退出;如果否,则返回到S3031 ;
6.根据权利要求3所述的一种清除SQLite数据库中数据的方法,其特征在于所述S304包括以下步骤: 53041:读取SQLite空闲页链表首页指针; 53042:判断是否有空闲页,若没有则结束,若有则执行S3043 ; 53043:读取该空闲树干页内容,并清除其中的碎片数据; 53044:判断该空闲树干页下是否有空闲叶子页,如果有,则执行S3045 ;如果没有,则S执行3046 ; S3045:读取该空闲树干页下的所有空闲叶子页,并清除每个空闲叶子页中的碎片数据; 53046:读取下一个空闲树干页的指针; 53047:判断下一个空闲树干页的指针是否为零,若为零则表示空闲链表已到尾部,结束;若不为零则执行S3043。
【文档编号】G06F17/30GK104298766SQ201410585592
【公开日】2015年1月21日 申请日期:2014年10月28日 优先权日:2014年10月28日
【发明者】梁效宁, 黄旭 申请人:四川秘无痕信息安全技术有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1