CN104866610A - 一种基于相似类型匹配估算的SQLite删除数据恢复方法 - Google Patents
一种基于相似类型匹配估算的SQLite删除数据恢复方法 Download PDFInfo
- Publication number
- CN104866610A CN104866610A CN201510304010.9A CN201510304010A CN104866610A CN 104866610 A CN104866610 A CN 104866610A CN 201510304010 A CN201510304010 A CN 201510304010A CN 104866610 A CN104866610 A CN 104866610A
- Authority
- CN
- China
- Prior art keywords
- data
- free block
- data cell
- judge
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于相似类型匹配估算的SQLite删除数据恢复方法。本发明的主要步骤为:首先导入数据库文件,解析sqlite_master表,获取数据表的数据段以及内部页的根页编号,内部页指向叶子页。遍历所有叶子页,获取所有自由块数据。依次读入每个自由块,与至少一种预先设置的自由块的特征规则进行匹配,判断自由块是否具有完整的数据单元。若有完整的数据单元,则精确恢复该自由块,若自由块不完整,则恢复该数据单元中未被覆盖的数据。最后对恢复的已删数据进行解码,恢复已删除的sqlite文件数据。本发明能快速地定位被删的数据单元,适用于自由块中存在多个不连续的数据单元的情形,提高了删除数据的恢复率。
Description
技术领域
本发明涉及一种数据恢复技术,特别是一种SQLite删除数据恢复方法。
背景技术
数据恢复是指通过技术手段,将保存在台式机硬盘、笔记本硬盘、存储磁带库、移动硬盘、U盘、书包存储卡、Mp3等等设备上丢失的电子数据进行抢救和恢复的技术。
近年来,通信技术不断发展,智能手机的应用日益普及。然而,以手机为作案工具的高科技犯罪现象也越来越多。所以,在取证、侦查过程中对手机移动终端的数据进行分析显得尤为重要。公安部门迫切需要获取手机中的联系人、通话记录、短消息、电子邮件、社交活动等用户信息数据,尽可能对已经删除的联系人、通话记录、短信等进行恢复,以帮助相关部门进行调查取证。
目前,Android、IOS移动终端大多都支持SQLite数据库。SQLite是轻量型、小嵌入式的关系型数据库,且其代码开源。它被认为具有高可靠性,是因为SQLite遵循数据库事务正确执行的ACID(Atomicity原子性、Consistency一致性、Isolation隔离性、Durability持久性)四个基本要素。支持SQL标准,主要针对存储简单数据的软件或嵌入式设备而专门设计的数据库。由于它占用资源非常的低,能够支持Windows/Linux/Unix等主流的操作系统并且能够跟很多程序语言相结合,还有ODBC接口,同样比起Mysql、PostgreSQL两个数据库管理,它的处理速度更快。在数字取证过程中,经常出现移动设备上的联系人、通话记录、短消息等用户信息已经删除的情况。这些用户信息大多存储在SQLite数据库中。
以下简要介绍一下SQLite数据库文件格式。
SQLite有3类数据库。除内存数据库外,SQLite把每个数据库(main或temp)都存储到一个单独的文件中。SQLite数据库文件由固定大小的“页(page)”组成。页的大小可以在512~32768之间(包含这两个值,必须是2的指数),默认大小为1024个字节(1KB)。页大小可以在数据库刚刚创建时设置,一旦创建了数据库对象之后,这个值就不能再改变了。数据库中所有的页从1开始顺序编号。在具体的实现中,页号用4字节来表示,并限制最大页号不得超过2^31。第1个页被称为page1,第二个页被称为page2,以此类推。页的类型可以是:Btree页、空闲页(free)或溢出页。一个数据库文件中可能没有空闲页或溢出页,但必然有Btree页。Btree为一种树结构,又可以分为B-tree或B+tree,每一种树的结点又区分为内部页和叶子页。一个SQLite数据库文件由多个多重Btree构成。每个Btree占用至少一个完整的页,每个页是Btree的一个结点。每个表或索引的第1个页称为根页,所有表或索引的根页编号都存储在系统表sqlite_master中,并且其中系统表sqlite_master的根页为page1。系统表sqlite_master保存了数据库的schema信息即概要信息。SQLite数据库中第一个页永远都是Btree页。page1的前100个字节是一个对数据库文件进行描述的头文件。它包括数据库的版本、格式的版本、页大小、编码等。具体格式如表1:
表1
在SQLite的数据库中,对于属于同一张表中的数据单元具有相似的数据类型。表2是SQLite数据库中一个正常数据单元的数据结构,前三位分别为Payload Size、Rowid和Header Size,从第四位开始的N位为Type字段,Type字段后的N位为Data字段。Type字段用于表示的是后面Data字段对应的数据类型和大小。
表2
Payload Size | Rowid | Header Size | Type1 | …… | TypeN | Data1 | …… | DataN |
数据类型包括:NULL型、整型、浮点数型、BLOB型以及TEXT型。同一张表中,不同的数据单元区域Type字段表示的类型是相似的。例如,某个表数据有五个表项,即Data1-Data5依次是NULL型、整型、浮点数、TEXT型和TEXT型,在表中某条数据单元被删除后,被删除数据单元中的每个数据对应的Type字段所表示的类型值应该和正常的数据单元对应的各个类型值保持一致,每个Type的值对应的范围如表3所示。
表3
类型值 | 含义 | 数据宽度(字节数) |
0 | NULL | 0 |
N in 1-4 | 有符号整数 | N |
5 | 有符号整数 | 6 |
6 | 有符号整数 | 8 |
7 | IEEE符点数 | 8 |
8-11 | 未使用 | N/A |
N>12的偶数 | BLOB | (N-12)/2 |
N>13的偶数 | TEXT | (N-13)/2 |
SQLite中自由块是被删除的数据单元集合,里面包含了一个或若干个被删除的数据单元及数据单元间的碎片,其长度大于四个字节且小于一页,自由块会进入自由块列表等待回收。
目前,恢复已删除数据的算法还不是很多,已提出的算法有暴力估算、探测估算等方法。2012年Sangjun Jeon,Jewan Bang,Keunduck Byun提出了暴力估算法,暴力估算法是利用数据库恢复技术来恢复已删除数据,通过分析手机数据存储方式,特别是潜在证据最高的短信息的存储结构,分析短信表字段来定位删除数据单元的实际内容,估算数据未被删除前PayloadSize、RowID及Header-size几个区域值的大小,从而恢复出原数据。该方法的局限性在于自由块中包含的所有数据单元必须是连续完整的。2014年方冬蓉提出了探测估算法,探测估算法对暴力估算法进行了改进,对于自由块中不完整的数据单元,结合“尽最大努力恢复”语义分析法,利用Type字段的指示尽最大可能估算不完整的数据单元残留的数据项。将SQLite数据存储结构理论与数据库恢复技术相结合,分析删除数据的不同形式,针对不同形式进行针对性恢复。
但是这两种方法均忽视了自由块中被删除单元之间存在碎片的情况,碎片经常在其中某个数据单元存储长度发生变化后出现,对数据单元进行删除或修改都会导致存储长度的变化。因而上述两种方法均不能有效的定位每个数据单元的起始位置。
发明内容
发明目的:为了克服现有技术中存在的不足,本发明提供一种基于相类似匹配估算的SQLite删除数据恢复方法,用于解决现有的暴力估算法只能恢复自由块中连续完整的数据单元以及暴力估算法和探测估算都不能解决的恢复自由块中多个不连续数据单元的问题。
技术方案:为实现上述目的,本发明采用的技术方案为:
一种基于相似类型匹配估算的SQLite删除数据恢复方法,包括以下步骤:
步骤1、由于属于同一张表中的数据单元的类型的相似的,因此首先读入SQLite数据库文件,对第一页sqlite_master进行解析,因此通过解析系统表sqlite_master就能获得表的数据段以及内部页的信息。通过内部页的指引,遍历所有叶子页,从页头获取所有的自由块信息。提取与待恢复数据单元属于同一表中的未被删除的正常数据单元,获取正常数据单元中的Type区域中的Type字段,得到Data区域对应的每个Data字段的数据类型和长度,可以快速定位被删数据段的起始位置;
步骤2、预先设置的三种自由块特征规则如下:
特征规则1、自由块仅包含一个不完整的数据单元,其中部分数据被新写入的单元覆盖;
特征规则2、自由块仅包含一个完整的数据单元;
特征规则3、自由块包含两个以上数据单元;
任意一个自由块必然满足有且仅有其中一种特征规则,判断待恢复数据单元所属的自由块满足上述哪种特征规则,若属于特征规则1则跳转到步骤3;若属于特征规则2或特征规则3,则跳转到步骤4;
步骤3、判断自由块的长度是否大于预设长度,预设长度为具有同类型的数据单元去除其中的Data区域后的长度;若大于预设长度,则转到步骤4,根据现有的Type字段对Data区域进行估算,尝试恢复被删数据;若小于等于预设长度,则判断待恢复数据单元的Data区域完全被覆盖,无法恢复,结束本方法;
步骤4、利用相似类型检测的方法,确定自由块中每个数据单元的Type字段的位置划分出各个数据单元并恢复每个数据单元的Data区域。具体包括以下步骤:
步骤4.1、从自由块中的第i个字节位置开始,判断当前位置的Type字段与步骤一中获得的正常数据单元的相应位置的Type字段所代表的数据类型是否一致;若数据类型一致,则判断相似类型检测成功;若数据类型不一致,则递增i值并重新判断,直至判断相似类型检测成功并记录对应的判断起始位置i;
步骤4.2、判断待检测的数据单元是否完整,对于满足特征规则1的自由块,判断待检测的数据单元不完整;对于满足特征规则2的自由块,判断待检测的数据单元完整;对于满足特征规则3的自由块,判断自由块从当前位置起至自由块尾部所提供的空间是否能够容纳一个完整的数据单元中Type字段和Data区域的总大小,若能够,则判断待检测的数据单元完整,若不能够,则判断待检测的数据单元不完整。
若是完整的数据单元,则转到步骤4.3,若是部分完整的数据单元,则不清楚Data区域具体的覆盖程度,因此不能利用Type字段计算后面Data区域的大小以检验获取的Type字段位置的正确性,因此无法保证恢复的正确性,则直接转到步骤4.4;
步骤4.3、在正常数据单元中,利用Type字段计算相应的Data区域总的数据大小并与自由块中的待恢复的完整的数据单元的Data区域总的数据大小进行比较;若总的数据大小一致,则确认判断起始位置i正确,转到步骤4.4;若总的数据大小不一致,则确认判断起始位置i不正确,增加i值后返回步骤4.1;用上述方法验证获取的Type字段的正确性和Data区域数据的完整性;
步骤4.4、从自由块中的第i个字节的位置开始,根据Type字段里存储的值判断Data区域数据类型和长度,对紧跟在Type字段后的Data区域数据进行读取,并且由于SQLite提供了三种编码方式UTF-8、UTF16le和UTF16be,最后存储恢复出的Data区域的数据完成对一个数据单元的恢复;
步骤4.5、判断是否存在下一个数据单元,若不存在,则结束本发明,若存在,则确定返回步骤4.1,并设置第i个字节位置为紧邻当前数据单元尾部之后的位置处。
进一步的,在本发明中,由于当正常数据单元被删除而变为自由块进入自由块链表等待回收时,每个自由块中只对原始被删信息的前4个字节进行覆盖,用来存储自由块的信息,并且前两个字节表示下一个自由块的偏移量,后两个字节表示当前自由块的大小,除此之外的其它数据完整的保留,因此在步骤四中,每个自由块首次判断的起始位置设置在第i=5个字节的位置处。
进一步的,在本发明中,由于正常数据单元的Payload-size、Rowid、Head-size和Type1字段均为可变长整数,可变长整数的长度可能为1~9个字节,因此,为了与上一段中设置首次判断的起始位置为第i=5个字节进行对应,会产生如下三种情况:
1)Payload-size、Rowid、Head-size和Type1各占1个字节,其余Type字段以及Data字段保存完好;
2)Payload-size、Rowid、Head-size共占4个字节,整个Type字段以及Data字段保存完好;
3)Payload-size、Rowid、Head-size所占大小超过4字节,整个Type字段以及Data字段同样保存完好。
由此可以看出不管Payload-size、Rowid、Head-size每个区域占据多少字节,Type(2~N)和Data区域不会改变。利用这一特性可以精确恢复自由块里的完整数据单元。并且在判断数据类型不一致时,需要依次向后递增i值并重新判断,递增的大小要根据可变长整数的长度来确定。
进一步的,在本发明中,步骤4.5中,当一个数据单元恢复结束后,根据自由块中当前数据单元尾部之后剩余的空间判断是否还存在下一个数据单元;如果不存在,则结束本方法;如果存在,则需要对其他数据单元进行恢复,这里最重要的是要找到下一个数据单元的起始位置,分为以下2种情况:
如果数据单元之间没有碎片存在,下一个数据单元紧跟着上一个数据单元排列,并且由于上一个数据单元检测成功,因此获得上一个数据单元的具体位置和大小在基础上,返回步骤4.1且设置第i个字节位置为紧邻当前数据单元尾部之后的位置处重新进行相似类型匹配,匹配时必然会发现第一次就能匹配成功,那么就可以直接根据下一个数据单元的起始位置获得其Type字段并得到Data区域的数据类型和长度即可。
如果数据单元之间有碎片存在,但是碎片长度未知,此时返回步骤4.1且设置第i个字节位置为紧邻当前数据单元尾部之后的位置处重新进行相似类型匹配,匹配时一开始必然不成功,因为一开始的几个字节属于碎片,但随着i值递增,逐渐越过碎片后会找到匹配成功的位置。具体步骤如下:从上一个数据单元的末尾开始,对之后的数据与正常的数据单元的Type字段按照一个字节一个字节地进行比对,看是否能满足当前的数据中有与正常数据单元的Type字段的数据类型完全一致的对比起始位置,若找不到则不断递增对比的起始位置,若找到,则该位置为下一个数据单元的Type字段起始位置,然后再用类似的方法对Data区域的数据进行恢复。利用上述方法,跳过数据单元之间的碎片,划分出每个数据单元。
有益效果:
本发明提供的一种基于相似类型匹配估算的SQLite删除数据恢复方法,当同一表中某个数据单元被删除后,利用数据单元间相似类型的特性,把被删的数据单元各个数据的Type类型与一条正常获取的数据单元的类型进行对比,从而可以快速定位被删数据单元的起始位置,检测被删数据的各个字段的大小,从而完成数据恢复。本发明有效地适用于自由块中存在多个不连续的数据单元的情形,提高了删除数据的恢复率。
附图说明
图1是本发明的基于相似类型匹配估算的SQLite删除数据恢复方法的流程图;
图2是本发明的基于相似类型匹配估算的SQLite删除数据恢复方法对完整数据单元恢复的流程图;
图3是本发明的基于相似类型匹配估算的SQLite删除数据恢复方法对部分完整数据单元恢复的流程图。
具体实施方式
下面结合附图对本发明作更进一步的说明。
图1所示为本发明的基于相似类型匹配估算的SQLite删除数据恢复方法对自由块的恢复的流程图。包括以下步骤:
101、预先设置三种自由块特征规则:特征规则1、自由块包含一个不完整的数据单元,期中部分数据被新写入的单元覆盖;特征规则2、自由块包含一个完整的数据单元;特征规则3、自由块包含两个或者多个数据单元;然后导入获得的SQLite数据库文件。
102、解析sqlite_master表,即可获取sqlite_master表内部页的根页编号。内部页只存储导航信息,其指针域指向下级页的指针,所有的数据库记录都存储在下级页,也就是叶子页内。
103、通过遍历所有叶子页,从页头即可获取所有自由块数据指针。
104、依次读入每个自由块数据,与至少一种预先设置的自由块的特征规则进行匹配。
105、读入自由块中的一条待恢复的数据单元。
106、判断该自由块是否具有完整的数据单元。
107、对于自由块中完整的数据单元,可以精确地恢复该条数据单元。
108、如果自由块被新的数据覆盖即数据单元不完整,那么对于不完整的数据单元只能恢复该数据单元中未被覆盖的数据部分。
109、最后对恢复的数据单元进行解码,即可恢复移动终端已删除的SQLite文件数据。
110、接下来从前一个自由块中的前2个字节中寻找信息,判断是否存在下一个自由块信息。
111、如果存在,那么搜索下一个自由块的起始位置,如果不存在,则结束已删除数据的恢复。
图2所示是本发明的基于相似类型匹配估算的SQLite删除数据恢复方法对完整数据单元恢复的流程图,即上文中步骤107的具体流程。
由于数据被删除后,原始被删信息的前4个字节即头部信息就会被改写,因此无法精确的获取Type1字段的位置,进而就无法获取Data区域的数据。但Type2—TpyN肯定不会覆盖,所以自由块中包含一个完整的数据单元恢复的关键在于确定Type2字段的正确位置。
具体恢复方法按照如下步骤进行:
201、预提取同一表中正常的数据单元,获取其Type字段,就可以得到每个Data单元的数据类型和长度。
202、从自由块第i个字节开始检验,i的初始值为5。
203、检测当前位置的Type字段表示的类型是否和正常数据单元的该位置的Type字段表示类型一致。如果所表示的类型一致,则相似类型检测成功并转入204;否则,进行205:将i的位置依次向后递增并重新检验,直到相似类型检测成功。
204、计算Type字段指示的Data区域的大小。
206、将利用Type字段计算正常数据单元Data区域的数据总大小与实际获取的自由块中待恢复的完整的数据单元的Data区域的大小相比较。如果一致,则判断步骤4中获得的i值正确,转入207;否则,进行205:将i的位置依次向后递增并返回203。
207、获取正确的i值之后,从自由块第i的位置开始,通过计算Type字段的值,确定Data区域的数据类型和长度。最后对恢复出的数据解码并存储解码后的Data区域的数据。
上述流程中,在步骤202中当正常数据被删除变成自由块后,每个自由块中只对原始被删信息的前4个字节进行覆盖,其他数据保留完整,因此i的初始值设为5。在检测出自由块某一位置Type字段表示的类型和正常数据单元的该位置的Type字段表示类型一致,并不一定确定两者的Type字段的所有值都相似,则需要如步骤206所述进一步判断利用Type字段计算正常数据单元Data区域的数据总大小与实际获取的自由块Data区域的大小是否一致,如果一致才能真正确定i的位置。在步骤202、203、204以及205中,由于Type字段存储的是可变长整数,其大小可为1~9个字节,因此要确定可变长整数的字节数,i在依次向后递增时要注意递增数,若可变长整数小于127,递增数为1,若大于127小于16384,说明占据两个字节,递增数为2,以此类推。
图3所示是本发明的基于相似类型匹配估算的SQLite删除数据恢复方法对部分完整数据单元恢复的流程图,即上文中步骤108的具体流程。部分完整数据单元是数据单元的Data区域的尾部被新的数据单元覆盖导致的。由于Data区域的数据不完整,该方法不会像完整的数据单元在相似度检测后计算Type字段对应的数据段长度以便校验Data区域数据的完整性。因此该方法是在确定了Type字段位置之后,根据Data区域剩余的长度尽最大可能恢复出Data区域剩余的所有数据。
具体恢复方法按照如下步骤进行:
301、预提取同一表中正常的数据单元,获取其Type字段,就可以得到每个Data单元的数据类型。
302、比较自由块的长度是否大于预设长度,若小于预设长度,说明数据单元的Data区域完全被覆盖,没有恢复的价值。
303、从自由块第i个字节位置,i的初始值为5。
304、检测当前位置的Type字段表示的类型是否和正常数据单元的相应位置的类型一致。如果所表示的类型一致,则相似类型检测成功并转入306;否则,进行305:将i的位置依次向后递增并重新检验,直到相似类型检测成功。
306、获取正确的i的值之后,从自由块第i的位置开始,通过计算Type字段的值,确定Data区域的数据类型和长度。
307、依次对Data区域的数据进行恢复,直到自由块的末尾。
308、最后对恢复出的数据进行解码。
上述流程中,在步骤302中的预设长度是指依据现有同类型的数据单元估算出一个参考长度,这个参考长度是一个正常的数据单元去除了数据部分长度构成。若小于这个长度,则该数据单元不存在有效数据,若大于这个长度可依据现有的Type字段对Data区域进行估算,尝试恢复被删数据。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (7)
1.一种基于相似类型匹配估算的SQLite删除数据恢复方法,其特征在于:包括以下步骤:
步骤1、读入SQLite数据库文件并获得自由块,提取与待恢复数据单元属于同一表中的未被删除的正常数据单元,获取正常数据单元中的Type区域中的Type字段,得到Data区域对应的每个Data字段的数据类型和长度;
步骤2、判断待恢复数据单元所属的自由块中是否为仅包含一个不完整的数据单元的自由块;若是,则转入步骤3;否则,转入步骤4;
步骤3、判断自由块的长度是否大于预设长度,若大于预设长度,则转到步骤4;若小于等于预设长度,则判断待恢复数据单元的Data区域完全被覆盖,结束本方法;
步骤4、利用相似类型检测的方法,确定自由块中每个数据单元的Type字段的位置划分出各个数据单元并恢复每个数据单元的Data区域。
2.根据权利要求1所述的基于相似类型匹配估算的SQLite删除数据恢复方法,其特征在于:所述步骤4按照以下步骤顺序进行:
步骤4.1、从自由块中的第i个字节位置开始,判断当前位置的Type字段与步骤1中获得的正常数据单元的相应位置的Type字段所代表的数据类型是否一致;若数据类型一致,则判断相似类型检测成功;若数据类型不一致,则递增i值并重新判断,直至判断相似类型检测成功并记录对应的判断起始位置i;
步骤4.2、判断待检测的数据单元是否完整,若是完整的数据单元,则转到步骤4.3,若是部分完整的数据单元,则转到步骤4.4;
步骤4.3、在正常数据单元中,利用Type字段计算相应的Data区域总的数据大小并与自由块中的待恢复的完整的数据单元的Data区域总的数据大小进行比较;若总的数据大小一致,则确认判断起始位置i正确,转到步骤4.4;若总的数据大小不一致,则确认判断起始位置i不正确,增加i值后返回步骤4.1;
步骤4.4、从自由块中的第i个字节的位置开始,根据Type字段里存储的值判断Data区域数据类型和长度,对紧跟在Type字段后的Data区域数据进行读取,最后存储恢复出的Data区域的数据完成对一个数据单元的恢复;
步骤4.5、判断是否存在下一个数据单元,若不存在,则结束本发明,若存在,则确定返回步骤4.1,并设置第i个字节位置为紧邻当前数据单元尾部之后的位置处。
3.根据权利要求1所述的基于相似类型匹配估算的SQLite删除数据恢复方法,其特征在于:预先设置三种自由块特征规则如下:
特征规则1、自由块仅包含一个不完整的数据单元,其中部分数据被新写入的单元覆盖;
特征规则2、自由块仅包含一个完整的数据单元;
特征规则3、自由块包含两个以上数据单元;
对步骤1种获得的自由块,根据自由块中字节的多少判断其满足上述哪种特征规则。
4.根据权利要求1所述的基于相似类型匹配估算的SQLite删除数据恢复方法,其特征在于:步骤3中所述预设长度为数据单元去除其中的Data区域后的长度。
5.根据权利要求2所述的一种基于相似类型匹配估算的SQLite删除数据恢复方法,其特征在于:步骤4中,每个自由块首次判断的起始位置i设置在第5个字节的位置处。
6.根据权利要求2所述的一种基于相似类型匹配估算的SQLite删除数据恢复方法,其特征在于:步骤4.2中,结合自由块所满足的特征规则,对于满足特征规则1的自由块,判断待检测的数据单元不完整;对于满足特征规则2的自由块,判断待检测的数据单元完整;对于满足特征规则3的自由块,判断自由块从当前位置起至自由块尾部所提供的空间是否能够容纳一个完整的数据单元中Type字段和Data区域的总大小,若能够,则判断待检测的数据单元完整,若不能够,则判断待检测的数据单元不完整。
7.根据权利要求2所述的一种基于相似类型匹配估算的SQLite删除数据恢复方法,其特征在于:步骤4.5中,根据自由块中当前数据单元尾部之后剩余的空间判断是否还存在下一个数据单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510304010.9A CN104866610B (zh) | 2015-06-04 | 2015-06-04 | 一种基于相似类型匹配估算的SQLite删除数据恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510304010.9A CN104866610B (zh) | 2015-06-04 | 2015-06-04 | 一种基于相似类型匹配估算的SQLite删除数据恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104866610A true CN104866610A (zh) | 2015-08-26 |
CN104866610B CN104866610B (zh) | 2018-05-08 |
Family
ID=53912436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510304010.9A Active CN104866610B (zh) | 2015-06-04 | 2015-06-04 | 一种基于相似类型匹配估算的SQLite删除数据恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104866610B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105426542A (zh) * | 2015-12-24 | 2016-03-23 | 厦门市美亚柏科信息股份有限公司 | 一种SQLite空闲页上被删数据表的记录分析方法和装置 |
CN106599048A (zh) * | 2016-11-10 | 2017-04-26 | 厦门安胜网络科技有限公司 | 一种SQLite数据库文件恢复删除记录的方法和装置 |
CN107193871A (zh) * | 2017-04-12 | 2017-09-22 | 腾讯科技(深圳)有限公司 | 数据库修复方法及装置 |
CN107332974A (zh) * | 2017-05-23 | 2017-11-07 | 成都联宇云安科技有限公司 | 一种在未备份数据的情况下恢复安卓手机通讯录和短信数据的方法 |
CN109582504A (zh) * | 2018-12-05 | 2019-04-05 | 深圳软牛科技有限公司 | 一种用于苹果设备的数据恢复方法和装置 |
CN112579612A (zh) * | 2020-12-31 | 2021-03-30 | 厦门市美亚柏科信息股份有限公司 | 数据库索引表记录分析方法、装置、计算设备及存储介质 |
CN113407375A (zh) * | 2020-03-16 | 2021-09-17 | 浙江宇视科技有限公司 | 数据库删除数据的恢复方法、装置、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102298634A (zh) * | 2011-09-09 | 2011-12-28 | 厦门市美亚柏科信息股份有限公司 | 一种Sqlite删除记录结构重组方法 |
CN102937926A (zh) * | 2012-10-30 | 2013-02-20 | 厦门市美亚柏科信息股份有限公司 | 一种恢复移动终端已删除sqlite文件的方法及装置 |
CN104376091A (zh) * | 2014-11-20 | 2015-02-25 | 厦门市美亚柏科信息股份有限公司 | 对SQLite中删除的数据进行恢复的方法及装置 |
-
2015
- 2015-06-04 CN CN201510304010.9A patent/CN104866610B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102298634A (zh) * | 2011-09-09 | 2011-12-28 | 厦门市美亚柏科信息股份有限公司 | 一种Sqlite删除记录结构重组方法 |
CN102937926A (zh) * | 2012-10-30 | 2013-02-20 | 厦门市美亚柏科信息股份有限公司 | 一种恢复移动终端已删除sqlite文件的方法及装置 |
CN104376091A (zh) * | 2014-11-20 | 2015-02-25 | 厦门市美亚柏科信息股份有限公司 | 对SQLite中删除的数据进行恢复的方法及装置 |
Non-Patent Citations (1)
Title |
---|
方冬蓉等: "Android系统删除数据恢复方法研究", 《计算机工程》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105426542A (zh) * | 2015-12-24 | 2016-03-23 | 厦门市美亚柏科信息股份有限公司 | 一种SQLite空闲页上被删数据表的记录分析方法和装置 |
CN105426542B (zh) * | 2015-12-24 | 2019-02-22 | 厦门市美亚柏科信息股份有限公司 | 一种SQLite空闲页上被删数据表的记录分析方法和装置 |
CN106599048A (zh) * | 2016-11-10 | 2017-04-26 | 厦门安胜网络科技有限公司 | 一种SQLite数据库文件恢复删除记录的方法和装置 |
CN107193871A (zh) * | 2017-04-12 | 2017-09-22 | 腾讯科技(深圳)有限公司 | 数据库修复方法及装置 |
CN107193871B (zh) * | 2017-04-12 | 2018-10-16 | 腾讯科技(深圳)有限公司 | 数据库修复方法及装置 |
CN107332974A (zh) * | 2017-05-23 | 2017-11-07 | 成都联宇云安科技有限公司 | 一种在未备份数据的情况下恢复安卓手机通讯录和短信数据的方法 |
CN109582504A (zh) * | 2018-12-05 | 2019-04-05 | 深圳软牛科技有限公司 | 一种用于苹果设备的数据恢复方法和装置 |
CN113407375A (zh) * | 2020-03-16 | 2021-09-17 | 浙江宇视科技有限公司 | 数据库删除数据的恢复方法、装置、设备和存储介质 |
CN113407375B (zh) * | 2020-03-16 | 2024-03-29 | 浙江宇视科技有限公司 | 数据库删除数据的恢复方法、装置、设备和存储介质 |
CN112579612A (zh) * | 2020-12-31 | 2021-03-30 | 厦门市美亚柏科信息股份有限公司 | 数据库索引表记录分析方法、装置、计算设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104866610B (zh) | 2018-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104866610A (zh) | 一种基于相似类型匹配估算的SQLite删除数据恢复方法 | |
KR101456757B1 (ko) | SQLite 데이터베이스에서 삭제된 데이터의 복원 방법 및 장치 | |
CN102937926B (zh) | 一种恢复移动终端已删除sqlite文件的方法及装置 | |
KR101575246B1 (ko) | SQLite 데이터베이스 파일 내 손상된 레코드의 복원 방법 | |
WO2019075969A1 (zh) | 表格信息结构化提取方法、电子设备及计算机可读存储介质 | |
CN103699585A (zh) | 文件的元数据存储以及文件恢复的方法、装置和系统 | |
CN107291858B (zh) | 一种基于字符串后缀的数据索引方法 | |
EP3051428A1 (en) | Method and system for selecting an encoding format for reading a target document | |
CN109710455A (zh) | 基于fat32文件系统的删除文件恢复方法及系统 | |
CN111125298A (zh) | 重建ntfs文件目录树的方法、设备及存储介质 | |
CN112052120B (zh) | 数据库删除数据恢复方法和装置 | |
CN108009049B (zh) | Myisam存储引擎删除记录离线恢复方法、存储介质 | |
CN112597345A (zh) | 一种实验室数据自动采集与匹配方法 | |
WO2019041529A1 (zh) | 新闻主体企业识别方法、电子设备及计算机可读存储介质 | |
CN111176901B (zh) | 一种hdfs删除文件恢复方法、终端设备及存储介质 | |
CN104536947A (zh) | 版式文档的处理方法及装置 | |
CN109359481B (zh) | 一种基于bk树的反碰撞搜索约减方法 | |
KR101938730B1 (ko) | SQLite 데이터베이스의 비정상 페이지와 저널 파일에서의 삭제된 레코드 복구 방법, 그 방법을 수행하는 장치 및 컴퓨터 프로그램 | |
CN101901172B (zh) | 数据处理装置和方法 | |
CN105302889A (zh) | 数据存储结构的转换方法及装置 | |
CN107609068B (zh) | 一种数据无感迁移方法 | |
CN107315806B (zh) | 一种基于文件系统的嵌入式存储方法和装置 | |
CN113535962B (zh) | 数据入库方法、装置、电子装置、程序产品及存储介质 | |
CN102591941B (zh) | 一种SQLite空闲链表节点的解析方法和装置 | |
CN116107971A (zh) | 模型的数据处理方法、装置、电子设备以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |