CN115495280A - 一种基于SQLite模糊匹配的通用删除数据定位方法及装置 - Google Patents
一种基于SQLite模糊匹配的通用删除数据定位方法及装置 Download PDFInfo
- Publication number
- CN115495280A CN115495280A CN202210918580.7A CN202210918580A CN115495280A CN 115495280 A CN115495280 A CN 115495280A CN 202210918580 A CN202210918580 A CN 202210918580A CN 115495280 A CN115495280 A CN 115495280A
- Authority
- CN
- China
- Prior art keywords
- data
- record
- rowid
- field
- deleted
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2465—Query processing support for facilitating data mining operations in structured databases
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2468—Fuzzy queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- Automation & Control Theory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的一个方面公开了一种基于SQLite模糊匹配的通用删除数据定位方法及装置,所述方法包括:根据被恢复的SQLite数据库建立字段头描述模板;按块读取原始数据文件中的数据,将每块数据模糊匹配所述字段头描述模板,定位记录的数据偏移量;响应于数据与字段头描述模板匹配成功,按照所述数据偏移量的定位及字段头描述模板中描述的数据长度读取完整的字段数据,得到数据记录结果;利用筛选机制对所述数据记录结果进行整理,定位删除数据,本发明公开的一个方面可以实现删除数据在不同数据结构形态、不同操作、不同业务情景下的恢复能力,实现SQLite数据库数据恢复的通用性、全面性、有效性和精确性。
Description
技术领域
本发明涉及电子证据取证技术领域,特别是涉及一种基于SQLite模糊匹配的通用删除数据定位方法及装置。
背景技术
在最新修改通过的《刑事诉讼法》和《民事诉讼法》都已将电子数据列为新一类证据,由此可想而知电子数据取证和司法鉴定在刑事及民事案件中的重要作用,那么“如何恢复已删除的涉案电子数据”便成为了取证难题,信息时代,电子数据的恢复也成为各个行政、执法机关至关重要的技术手段之一。
由于移动智能终端数据提取在电子数据取证中的重要占比,以及智能终端中核心应用数据均需要应用到SQLite数据库存储技术,其中嵌入式设备是SQLite应用的主要场景,典型代表为Google的Android。此外,桌面应用和Websites也越来越多地使用SQLite。当下手机应用市场发展迅猛,几乎所有手机平台下的APP存储数据时都使用到SQLite数据库,比如Android、iOS、Windows Mobile、Symbin、Palm等。针对智能手机中删除数据恢复问题,尤其是各类应用程序产生的结构化数据恢复问题,目前采取的通用方法是:获取存储相关数据的SQLite数据库文件,以数据库文件为基准进行数据分析,通过在数据库文件中的未分配空间搜索获取曾经删除的数据表内的残余数据完成数据恢复过程。这种方法是以完整的数据库文件为基础,数据库仅在删除数据后没有立刻进行释放存储空间操作时,才找到删除数据的痕迹并恢复。
应用在正常使用中会产生很多数据保存在SQLite存储中,将数据记录插入数据表中。这些数据类型一般包括需要永久保存的内容例如应用设置、聊天记录等,也有临时产生的数据例如cookies、缓存、网络状态等等。永久保存的数据如果没有额外操作会一直保存,临时数据会随着应用的使用不断地新增、更新和删除记录。在取证过程中,无论是主动删除的数据还是会不断更新变化而删除的临时数据,都包含需要恢复的记录。因此,传统的SQLite数据库数据恢复方法存在如下弊端:
(1)在不同应用数据,数据表各不相同,数据格式也均不相同,如果按照常规的方式,需要使用特征码,但使用特征码的方式做SQLite数据恢复则需要适配兼容每一个数据库文件,开发与维护工作将是海量的工作。
(2)应用程序的使用过程中往往伴随着高频次的数据删除行为,这种行为也会导致基于数据库存储的记录层级数据序列紊乱不堪,加之新数据的写入覆盖,传统的SQLite数据库恢复方式实施难度大。
(3)传统的SQLite数据库恢复技术虽然也能较完整的恢复出已删除数据,但众多研究结果表示,其恢复的数据重复率较高且存在部分无法识别字符,俗称乱码。所以即使成功恢复出数据,但恢复数据的可利用率却大大降低,无形中增加了使用者的工作量。
(4)传统的SQLite数据库恢复技术对删除数据经常存在误判行为,使用传统数据恢复技术在结果的呈现上会存在不准确性,而电子数据取证注重科学性、严谨性,以确保证据转换后的客观性、关联性和合法性,数据恢复结果的不准确性最终会对事实认定产生影响。
因此,亟需解决现有SQLite数据库恢复技术存在数据恢复的不通用,数据恢复结果的不全面、效率低和模糊性。
发明内容
为克服上述现有技术存在的不足,本发明之目的在于提供一种基于SQLite模糊匹配的通用删除数据定位方法及装置,。
为达上述目的,本发明提出一种基于SQLite模糊匹配的通用删除数据定位方法,包括如下步骤:
根据被恢复的SQLite数据库建立字段头描述模板;
按块读取原始数据文件中的数据,将每块数据模糊匹配所述字段头描述模板,定位记录的数据偏移量;
响应于数据与字段头描述模板匹配成功,按照所述数据偏移量的定位及所述字段头描述模板中描述的数据长度读取完整的字段数据,得到数据记录结果;
利用筛选机制对所述数据记录结果进行整理,定位删除数据。
优选地,所述根据被恢复的SQLite数据库建立字段头描述模板,包括:
建立字段头信息列表,响应于手动描述所述字段头信息列表中字段头信息的数据类型和附加信息,将描述后的字段头信息列表保存为字段头模板;或者,
通过建表语句自动推理字段头信息生成字段头模板,所述建表语句包括但不限于字段信息,所述字段头信息包括但不限于数据类型和附加信息。
优选地,所述按块读取原始数据文件中的数据,将每块数据模糊匹配所述字段头描述模板,定位记录的数据偏移量,包括:
打开原始数据文件,所述原始数据文件包括SQLite 数据库的主db文件和事务缓存文件;
顺序扫描并按块读取所述原始数据文件中的数据,依次与字段头描述模板进行匹配;
响应于所述字段头描述模板中任一一个字段头信息匹配错误,跳过该块数据,继续扫描后续数据,直至数据所述字段头描述模板中所有字段头信息均匹配成功。
优选地,所述利用筛选机制对所述字段数据结果进行整理,定位删除数据,包括:
通过SQLite数据库查询所有未删除记录的rowid列表,扫描所述数据记录结果得到所有数据记录结果的rowid;
将所述数据记录结果的rowid与所述rowid列表进行比对,判断所述rowid列表中是否存在所述数据记录结果的rowid;
若rowid列表中存在某一条所述数据记录结果的rowid,比对该条数据记录结果的rowid对应的数据内容与所述该条数据记录结果的rowid对应的所述rowid列表中的rowid对应的数据内容是否相同;
响应于比对的数据内容相同,标记所述该条数据记录结果为未删除记录;
响应于比对的数据内容不同,标记所述该条数据记录结果为被修改记录;
若rowid列表中不存在某一条所述数据记录结果的rowid,标记所述该条数据记录结果为删除记录,得到删除数据的定位;
其中,标记为删除的数据记录结果包括rowid丢失记录。
优选地,所述利用筛选机制对所述数据记录结果进行整理,定位删除数据,还包括:
根据所述rowid丢失记录,比较所述rowid丢失记录左右两侧的未删除记录的rowid值;
若所述rowid丢失记录被单条删除,根据所述数据子页中描述记录的最左侧数据或最右侧数据的偏移量,选择两侧任一起点,按照记录的rowid依次顺序读取,推理得到rowid丢失记录的位置;
若多条所述rowid丢失记录被批量删除或频繁进行连续的写入、删除操作,选择最左侧和最右侧两个起点,按照记录的rowid依次顺序读取,分别推理得到两个位置,当两个位置相同,任一结果均为所述rowid丢失记录的位置。
优选地,所述利用筛选机制对所述数据记录结果进行整理,定位删除数据,还包括:
响应于所述删除数据被新数据覆写,利用业务数据的字段信息进行二次筛选。
优选地,所述利用筛选机制对所述数据记录结果进行整理,定位删除数据,还包括:
响应于记录更新操作,生成新记录的字段数据,将所述未删除记录的字段数据与所述新记录的字段数据进行比对,若所述未删除记录的字段数据与所述新记录的字段数据不相同,标记所述未删除记录为记录更新前的残留记录,得到记录更新前的数据定位。
优选地,所述原始数据文件中的数据还包括FTS扩展模块中用户数据记录表。
在所述按块读取原始数据文件中的数据,将每块数据模糊匹配所述字段头描述模板,定位记录的数据偏移量之前,所述方法还包括:
于读取子页数据时,动态解密所述子页数据直接使用,使用后直接释放。
为达上述目的,本发明还提出一种基于Undo表空间解决PostgreSQL数据库表膨胀的装置,包括:
字段头描述模块创建模块,用于根据被恢复的SQLite数据库建立字段头描述模板;
字段类型模糊匹配模块,用于按块读取原始数据文件中的数据,将每块数据模糊匹配所述字段头描述模板,定位记录的数据偏移量
数据记录结果读取模块,用于响应于数据与字段头描述模板匹配成功,按照所述数据偏移量的定位及所述字段头描述模板中描述的数据长度读取完整的字段数据,得到数据记录结果
数据记录结果筛选模块,用于利用筛选机制对所述数据记录结果进行整理,定位删除数据。
与现有技术相比,本发明公开的一个方面带来的有益效果为:
(1)通过模糊匹配的方式全面对删除数据进行扫描定位,有效解决高频次数据删除行为和新数据写入覆盖行为带来的删除记录恢复困难问题,不遗失掉任何相关的残留字段,从而根本上保障数据恢复结果的全面完整程度。
(2)增加了更多的筛选条件,通过对已恢复数据的层层筛选,将重复数据、无法识别字符数据(乱码)合理的摒弃掉,使最终呈现的恢复数据具备有效性并提高其可利用率。
(3)在整合恢复数据的同时,从多方面对恢复数据进行校验,并将通过校验的数据记录下来最终呈现在恢复结果中,保障恢复结果的准确性,有效规避当电子数据取证中使用到基于数据库恢复技术时可能产生的不确定性,完善传统恢复技术手段。
附图说明
图1为本发明公开的一种基于SQLite模糊匹配的通用删除数据定位方法的步骤流程图;
图2为本发明公开的一个实施例之定位删除数据的步骤流程图;
图3为本发明公开的一个实施例之筛选重复数据的步骤流程图;
图4为本发明公开的一个实施例之挖掘潜在重复数据的步骤流程图;
图5为本发明公开的一个实施例之按块匹配字段头描述模块的步骤流程图;
图6为本发明公开的一个实施例之恢复FTS扩展模块数据残留的步骤流程图;
图7为本发明公开的一种基于SQLite模糊匹配的通用删除数据定位装置的结构示意图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
图1为本发明公开的一种基于SQLite模糊匹配的通用删除数据定位方法的步骤流程图。如图1所示,本发明一种基于SQLite模糊匹配的通用删除数据定位方法,包括如下步骤:
步骤S101,根据被恢复的SQLite数据库建立字段头描述模板。
在本发明公开的一个实施例中,通过手动生成字段头描述模板,具体地,包括如下步骤:
建立字段头信息列表,响应于手动描述所述字段头信息列表中字段头信息的数据类型和附加信息,将描述后的字段头信息列表保存为字段头描述模板。也就是说,手动生成并描述字段头描述信息,建立字段头信息列表后一一描述其类型并保存模板。
在本发明公开的另一个实施例中,通过建表语句自动推理生成字段头描述模板,具体地,包括如下步骤:
通过建表语句自动推理字段头信息生成字段头描述模板,所述建表语句可抽象为“create table [条件] 表名(字段信息) [附加信息]”,所述字段头信息的抽象格式为“字段名 [数据类型] [附加信息]”。
其中,在字段头信息的抽象格式中,“字段名”是必填项,“类型”通常都予以填写,“附加信息”通常为缺省值、约束、主键等信息可以填写加以利用。
需要说明的是,由于SQLite是一种弱数据类型的数据库,即真正保存的数据的类型可以与建表语句中描述的字段类型不符,甚至可以在建表的时候仅描述字段名而不需要描述字段类型,在插入数据时动态确认真正的类型并写入数据文件中保存。例如,建表语句描述字段类型为int整型,但使用中将该字段直接保存string字符串数据也是可行的,不存在报错现象。于SQLite数据库内,将字段类型和字段长度合并在一起组成字段头信息,进而形成字段头描述模板。在SQLite读取数据时,通过读取字段头描述模板的字段头信息即可解析出该字段的真实类型和数据的真实长度,结合后面的数据即可完成查询出一条记录。
如果数据发生异常导致字节内容错误,在正常读取时会不识别或直接报数据错误无法继续查询,利用总结的字段头数值类型,可以反向推算出数据类型和长度。在一条完整的记录中,多个字段的类型及长度信息组成字段头数据,字段头1~字段头N的类型和数据长度与后面的数据1~数据N对应。即使该记录已删除记录数据结构的头部已被改写,那么依然可以通过字段头进行数据类型和数据长度的匹配,并准确的重组出完整的记录内容。
基于此,本发明的实施例中,通过创建字段头描述模板,无需兼容多种数据残留情况做额外的兼容操作。
参考表1,在本发明的一个实施例中使用的字段类型包括如下几种:
类型 | 描述 |
空值(NULL) | 字段内容为空,单独匹配 |
主键(PRIMARY) | 自增主键一般就是rowid |
整型(INT) | 整数型类型 |
浮点数(FLOAT) | 浮点数类型 |
字符串(STRING) | 字符串类型,空字符串不是NULL |
二进制数据(BLOB) | 二进制数据类型 |
任意类型(ANY) | 字段类型缺省时使用,匹配任意类型数据 |
表1
在本发明的实施例中,可以修改某些字段的字段类型为ANY型,用于处理应用新旧版本数据类型差异的问题,提高兼容性。此外,除了字段类型外,还可以对字段描述信息附加非空、非NULL、范围或固定值等其他附加的限定条件提高扫描匹配的效率和成功率。
步骤S102,按块读取原始数据文件中的数据,将每块数据模糊匹配所述字段头描述模板,定位记录的数据偏移量。
可选地,使用多线程方式进行模糊匹配,用以提高扫描的效率。
在本发明公开了一个实施例之定位删除数据,图2为本发明公开的一个实施例之定位删除数据的步骤流程图,如图2所示,步骤S2进一步包括如下步骤:
步骤S1021,打开原始数据文件,所述原始数据文件包括SQLite 数据库的主db文件和事务缓存文件。
可选地,通过只读+共享的方式打开SQLite 数据库的主db文件和事务缓存文件,用以避免不谨慎操作导致原始数据被修改。
步骤S1022,顺序扫描并按块读取所述原始数据文件中的数据,依次与字段头描述模板进行模糊匹配。
步骤S1023,响应于所述字段头描述模板中任一一个字段头信息匹配错误,跳过该块数据,继续扫描后续数据,直至数据所述字段头描述模板中所有字段头信息均匹配成功。
步骤S103,响应于数据与字段头描述模板匹配成功,按照所述数据偏移量的定位及字段头描述模板中描述的数据长度读取完整的字段数据,得到删除数据的定位。
具体地,字段头信息是基于字段类型和字段长度的组合,读取数据时,通过读取字段头信息即可得到数据类型和数据长度,即可查询出一条记录。
步骤S104,利用筛选机制对所述数据记录结果进行整理,定位删除数据。
具体地,通过步骤S102至步骤S103进行了模糊匹配,得到的所述所有数据记录结果是SQLite数据表中所有的数据记录,包含了删除和未删除所有记录,以及在一些数据页变化和缓存等情况下,匹配到的记录也包含很多重复的数据。此时需要对所述数据记录结果进行筛选和略重,对部分未删除的记录进行提取,对删除数据进行精确定位。
在本发明公开了一个实施例之筛选重复数据,图3为本发明公开的一个实施例之筛选重复数据的步骤流程图,如图3所示,步骤S104包括:
步骤S10411,通过SQLite数据库查询所有未删除记录的rowid列表,扫描所述数据记录结果得到所有数据记录结果的rowid。
步骤S10412,将所述数据记录结果的rowid与所述rowid列表进行比对,判断所述rowid列表中是否存在所述数据记录结果的rowid。
步骤S10413,若rowid列表中存在某一条所述数据记录结果的rowid,比对该条数据记录结果的rowid对应的数据内容与所述该条数据记录结果的rowid对应的所述rowid列表中的rowid对应的数据内容是否相同。
步骤S10414,响应于比对的数据内容相同,标记所述该条数据记录结果为未删除记录。
步骤S10415,响应于比对的数据内容不同,标记所述该条数据记录结果为被修改记录。
步骤S10416,若rowid列表中不存在某一条所述数据记录结果的rowid,标记所述该条数据记录结果为删除记录,得到删除数据的定位。
其中,标记为删除的数据记录结果包括rowid丢失记录。
也就是说,利用rowid的唯一性,通过SQLite正常查询出所有未删除记录的rowid列表,然后进行数据文件扫描匹配出所有的记录并获取所有记录的rowid,再与已有的rowid列表进行比对,如果rowid存在则再次比对数据内容,一致则说明该记录未删除,不一致说明该记录内容可能被修改了。如果扫描到的记录的rowid不在已有rowid列表中,那么标记该记录为删除。另外,部分情况下删除的记录头部由于被覆写导致rowid丢失,则同样标记该记录为被删除记录。本实施例通过步骤S10411至步骤S10416可以实现对重复数据的筛选,剔除大量重复的删除数据。
在本发明还公开的一个实施例之挖掘潜在重复数据,图4为本发明公开的一个实施例之挖掘潜在重复数据的步骤流程图,如图4所示,步骤S104还包括如下步骤:
步骤S10421,根据所述rowid丢失记录,比较所述rowid丢失记录左右两侧的未删除记录的rowid值。
步骤S10422,若所述rowid丢失记录被单条删除,根据所述数据子页中描述记录的最左侧数据或最右侧数据的偏移量,选择两侧任一起点,按照记录的rowid依次顺序读取,推理得到rowid丢失记录的位置。
步骤S10423,若多条所述rowid丢失记录被批量删除或频繁进行连续的写入、删除操作,选择最左侧和最右侧两个起点,按照记录的rowid依次顺序读取,分别推理得到两个位置,当两个位置相同,任一结果均为rowid丢失记录的位置。
具体地,某些情况下rowid缺失业务关联条件导致记录数据成为垃圾数据,因此需要找到原始的rowid以进行业务匹配,也就是,需要找到rowid丢失记录的位置。同一数据子页里,在该rowid丢失记录的左侧是较大的rowid的记录,右侧是较小的rowid的记录。数据子页具有描述记录的最左和最右数据的偏移量,找到两侧的起点,按照记录rowid依次顺序读取,直到推理出丢失rowid的记录的位置,所推理出的rowid即为丢失的rowid值。
可选地,在单条删除的记录情况下,通过左侧或者右侧均即可推理出丢失的rowid值;在遇到部分记录批量删除或者频繁进行“写入-删除-写入-删除操作”(一边聊一边删除)等情况的时候,会导致单侧可用于推理的rowid断断续续没有连续或者有较大的差异,此时得到的值可信度就较低。电子数据取证中严格强调严谨性,所以本实施例中采用双侧同时推理,当左侧与右侧推理出的rowid相同时,暂时标记为该记录的临时rowid。通过两侧同时推理结果互相验证能提高结果的准确率,降低rowid错误率,避免数据逻辑处理错误等情况。
在本实施例中,步骤S10421至步骤S10423利用删除数据rowid推理机制,挖掘潜在的重复数据,提高删除数据恢复的质量。
本发明还公开了一个实施例之过滤无效数据,本实施例包括:
响应于所述删除数据被新数据覆写,利用业务数据的字段信息进行二次筛选。
具体地,由于删除的数据是空闲地址,可以被新数据覆写,通常情况下匹配出来的内容多是残缺的或者被部分覆写而出现乱码等情况,加之缓存等数据的干扰,即使经过了步骤S10411至步骤S10416对重复数据进行初步筛选,仍存在数据记录结果中包含部分乱码、重复的记录。在恢复过程中,目标数据表的作用和部分字段含义是非常清楚的,并且根据应用实际使用情况,有很多字段代表着固定的含义,那么就可以再通过业务数据的字段信息作为二次筛选和校验,用来增加恢复结果的数据质量。例如某些字段存储的是时间戳,就可以在模糊匹配整型的基础上再增加合法的时间条件判断,如果某字段存储的是手机号码,那么可以在模糊匹配字符串的基础上再增加电话号码格式的校验。实际使用中,例如手机短信息数据库恢复的场景下,可以通过对方号码字段是否合法等过滤掉乱码的记录,再通过短信息时间和内容过滤掉重复的内容,仅需要极小的适配和过滤,就可以去除结果数据中明显错误、乱码等垃圾数据,让取证结果更加清晰和有效。
本发明还公开了一个实施例之恢复更新操作的记录,步骤S104还包括:
响应于记录更新操作,生成新记录的字段数据,将所述未删除记录的字段数据与所述新记录的字段数据进行比对,若所述未删除记录的字段数据与所述新记录的字段数据不相同,标记所述未删除记录为记录更新前的残留记录,得到记录更新前的数据定位。
具体地,所述记录更新操作,是诸如撤回、刷新、事务缓存、页类型转换等操作,例如,微信中撤回的消息,数据库操作层面就是将原聊天内容字段的数据更新为“你撤回了一条消息”,通过跟踪撤回操作,数据库通常发生如下两种情况:
情况一:新值的长度小于等于原值的长度,会直接操作需要更新的字段原数据区域,原数据覆写为新数据。此时原字段内容彻底丢失,其他未修改的字段数据不变,记录rowid不变,新值未占用的部分长度会变为碎片。
情况二:新值的长度大于原值的长度,此时原数据块不足以保存新值内容,会新插入一条完整的记录,将原数据记录变为空闲块,相当于插入一条完整的新记录并将原记录删除,原记录数据会完整保留,新记录rowid不变。
本实施例中,在模糊匹配的基础上,将模糊匹配后标记为未删除记录的rowid与所述新记录的字段数据进行比对,若不一致,则该未删除记录为修改更新前的残留内容。通用恢复匹配流程中,可能会定位到拥有相同rowid的多组记录数据。如果数据内容不一致的情况下,可能就是更新的消息。此时可以根据实际查询到的数据做对比即可分辨出当前数据和更新前的数据,可进一步提高应用此类恢复方法获得数据的效率。
本实施例中,通过上述步骤可以实现对更新记录前的字段数据的残留,提高特定业务操作下的删除数据恢复能力。
在本发明还公开的另一实施例之按块匹配字段头描述模块,图5为本发明公开的一个实施例之按块匹配字段头描述模块的步骤流程图,如图5所示,包括如下步骤:
步骤S201,通过建表语句自动推理生成字段头描述模板。
具体地,表2为通过建表语句自动推理生成的字段头描述模板,如表2所示,模板中
包括七个字段类型和附加条件。
编号 | 类型 | 附加条件 |
1 | 主键 | 非空 |
2 | 整型 | 非空,长度固定为4 |
3 | 整型 | |
4 | 字符串 | 非空 |
5 | 二进制数据 | |
6 | 任意类型 | 非NULL |
7 | 整型 |
表2
步骤S202,通过只读+共享的方式打开原始数据文件。其中,所述原始数据文件包括SQLite 数据库的主db文件和事务缓存文件。
步骤S203,顺序扫描并按块读取所述原始数据文件中的数据,依次与该字段头描述模板进行模糊匹配。
步骤S204,当字段头描述模板中的任一一个字段头类型或附加条件匹配错误,跳过该块数据,继续扫描后续数据。
步骤S205,当七个字段均匹配成功,则完成一条记录数据的定位。
本发明还公开了一个实施例之恢FTS扩展模块中的数据残留,图6为本发明公开的一个实施例之恢复FTS扩展模块数据残留的步骤流程图,如图6所示,本实施例还包括:
步骤S301,根据被恢复的SQLite数据库建立字段头描述模板;
步骤S302,读取FTS扩展模块中用户数据记录表,将所述用户数据记录表中每块数据模糊匹配所述字段头描述模板,定位记录的数据偏移量;
步骤S303,响应于数据与字段头模板匹配成功,按照字段头模板中描述的数据长度读取完整的字段数据,得到FTS数据记录结果;
步骤S304,利用筛选机制对所述FTS数据记录结果进行整理,定位FTS扩展模块中的数据残留。
具体地,所述取FTS扩展模块,也就是SQLite内置的FTS全文搜索扩展模块,当数据存储量过大,FTS扩展模块具有加速全文搜索的功能。相比于普通表,FTS是虚表,当创建一个FTS虚表的时候,数据库中其实创建了若干个普通数据表用于存储物理数据,它们被称为影子表(shadow tables),并且这些影子表是独立db文件。启动扩展后会在新生成的ftsdb中新建影子表,分别命名为t_content、t_messageize、t_segdir、t_segments等,其中t_content表为包含用户数据记录的表,将t_content表按照上文中的模糊匹配方法及筛选机制即可定位FTS扩展模块中的数据残留。
本发明还公开了一个实施例之动态解密子页数据的方法,在本实施例中包括步骤S101至步骤S104中的所有步骤,相同步骤不再赘述,于步骤S101至步骤S102之间,本实施例还包括:
于读取子页数据时,动态解密所述子页数据直接使用,使用后直接释放。
具体地,手机应用为了用户数据安全,往往会对自身应用的数据进行加密。开启加密后应用在读写时分别进行加密和解密操作,数据存储以加密后的密文形式保存,直接读取到的密文无法直接用于模糊匹配,所以需要将加密的db文件(也包括事务缓存和fts扩展文件)解密为原始数据,并且保证页码不能乱序,随后再对原始的sqlite存储数据进行模糊匹配。在实施例中,通过在读取子页数据时动态解密该页数据后直接使用,使用后直接释放,可以实现完全内存直接操作,无需硬盘缓存。
本发明还提供了一种基于SQLite模糊匹配的通用删除数据定位装置,图7为本发明公开的一种基于SQLite模糊匹配的通用删除数据定位装置的结构示意图,如图7所示,所述装置包括:
字段头描述模块创建模块71,用于根据被恢复的SQLite数据库建立字段头描述模板。
字段类型模糊匹配模块72,用于按块读取原始数据文件中的数据,将每块数据模糊匹配所述字段头描述模板,定位记录的数据偏移量
数据记录结果读取模块73,用于响应于数据与字段头描述模板匹配成功,按照所述数据偏移量的定位及所述字段头描述模板中描述的数据长度读取完整的字段数据,得到数据记录结果
数据记录结果筛选模块74,用于利用筛选机制对所述数据记录结果进行整理,定位删除数据。
优选地,字段头描述模块创建模块71还用于建立字段头信息列表,响应于手动描述所述字段头信息列表中字段头信息的数据类型和附加信息,将描述后的字段头信息列表保存为字段头模板。
优选地,字段头描述模块创建模块71还用于通过建表语句自动推理字段头信息生成字段头模板,所述建表语句包括但不限于字段信息,所述字段头信息包括但不限于数据类型和附加信息。
优选地,字段类型模糊匹配模块72还用于:
打开原始数据文件,所述原始数据文件包括SQLite 数据库的主db文件和事务缓存文件;
顺序扫描并按块读取所述原始数据文件中的数据,依次与字段头描述模板进行匹配;
响应于所述字段头描述模板中任一一个字段头信息匹配错误,跳过该块数据,继续扫描后续数据,直至数据所述字段头描述模板中所有字段头信息均匹配成功。
优选地,数据记录结果筛选模块74还用于:
通过SQLite数据库查询所有未删除记录的rowid列表,扫描所述数据记录结果得到所有数据记录结果的rowid;
将所述数据记录结果的rowid与所述rowid列表进行比对,判断所述rowid列表中是否存在所述数据记录结果的rowid;
若rowid列表中存在某一条所述数据记录结果的rowid,比对该条数据记录结果的rowid对应的数据内容与所述该条数据记录结果的rowid对应的所述rowid列表中的rowid对应的数据内容是否相同;
响应于比对的数据内容相同,标记所述该条数据记录结果为未删除记录;
响应于比对的数据内容不同,标记所述该条数据记录结果为被修改记录;
若rowid列表中不存在某一条所述数据记录结果的rowid,标记所述该条数据记录结果为删除记录,得到删除数据的定位;
其中,标记为删除的数据记录结果包括rowid丢失记录。
优选地,数据记录结果筛选模块74还用于:
根据所述rowid丢失记录,比较所述rowid丢失记录左右两侧的未删除记录的rowid值;
若所述rowid丢失记录被单条删除,根据所述数据子页中描述记录的最左侧数据或最右侧数据的偏移量,选择两侧任一起点,按照记录的rowid依次顺序读取,推理得到rowid丢失记录的位置;
若多条所述rowid丢失记录被批量删除或频繁进行连续的写入、删除操作,选择最左侧和最右侧两个起点,按照记录的rowid依次顺序读取,分别推理得到两个位置,当两个位置相同,任一结果均为所述rowid丢失记录的位置。
优选地,数据记录结果筛选模块74还用于:
响应于所述删除数据被新数据覆写,利用业务数据的字段信息进行二次筛选。
优选地,数据记录结果筛选模块74还用于:
响应于记录更新操作,生成新记录的字段数据,将所述未删除记录的字段数据与所述新记录的字段数据进行比对,若所述未删除记录的字段数据与所述新记录的字段数据不相同,标记所述未删除记录为记录更新前的残留记录,得到记录更新前的数据定位。
优选地,于数据记录结果筛选模块74中,所述原始数据文件中的数据还包括FTS扩展模块中用户数据记录表。
优选地,所述装置还包括动态解密子页数据模块,用于在所述按块读取原始数据文件中的数据,将每块数据模糊匹配所述字段头描述模板,定位记录的数据偏移量之前,于读取子页数据时,动态解密所述子页数据直接使用,使用后直接释放。
需要说明的是,上述装置与本发明提供的基于SQLite模糊匹配的通用删除数据定位方法相对应,其他描述均可参照对本发明提供的基于SQLite模糊匹配的通用删除数据定位方法的描述,此处不再赘述。
可见,本发明一种基于SQLite模糊匹配的通用删除数据定位方法及装置通过建立字段头描述模板,将原始数据文件中的数据与字段头描述模板进行模糊匹配,匹配成功得到数据记录结果,再对数据记录结果进行筛选和整理,精确定位删除数据,可对多种不同类型的数据残留进行匹配和定位;其中,可以选择手动生成字段头描述模板或者利用建表语句自动生成字段头描述模板;利用rowid的唯一性,初步筛选重复数据,得到标记为删除的记录、标记为被修改的记录以及标记为未删除的记录,标记为删除的记录即得到经过初次去重的删除数据;利用删除数据rowi推理机制,根据rowid丢失记录的左右两侧的未删除记录的rowid值,推理该rowid丢失记录的位置,可实现潜在重复数据的挖掘;利用无效数据的过滤机制,当删除数据被新数据覆写,通过业务数据的字段信息进行二次筛选;利用更新记录的恢复技术,在模糊匹配的基础上,将模糊匹配后标记为未删除记录的rowid与所述新记录的字段数据进行比对,得到记录更新前的残留内容;若启用FTS扩展模块,则将用FTS扩展模块中的用户数据记录表通过上述模糊匹配及筛选机制定位FTS扩展模块中的数据残留。另外,将动态解密子页的方法作为加密的数据库预处理技术,无需外部缓存。本发明公开的以上几个方面可以实现恢复数据的全面性、有效性和准确性。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。
Claims (10)
1.一种基于SQLite模糊匹配的通用删除数据定位方法,包括如下步骤:
根据被恢复的SQLite数据库建立字段头描述模板;
按块读取原始数据文件中的数据,将每块数据模糊匹配所述字段头描述模板,定位记录的数据偏移量;
响应于数据与字段头描述模板匹配成功,按照所述数据偏移量的定位及所述字段头描述模板中描述的数据长度读取完整的字段数据,得到数据记录结果;
利用筛选机制对所述数据记录结果进行整理,定位删除数据。
2.如权利要求1所述的一种基于SQLite模糊匹配的通用删除数据定位方法,其特征在于,所述利用筛选机制对所述字段数据结果进行整理,定位删除数据,包括:
通过SQLite数据库查询所有未删除记录的rowid列表,扫描所述数据记录结果得到所有数据记录结果的rowid;
将所述数据记录结果的rowid与所述rowid列表进行比对,判断所述rowid列表中是否存在所述数据记录结果的rowid;
若rowid列表中存在某一条所述数据记录结果的rowid,比对该条数据记录结果的rowid对应的数据内容与所述该条数据记录结果的rowid对应的所述rowid列表中的rowid对应的数据内容是否相同;
响应于比对的数据内容相同,标记所述该条数据记录结果为未删除记录;
响应于比对的数据内容不同,标记所述该条数据记录结果为被修改记录;
若rowid列表中不存在某一条所述数据记录结果的rowid,标记所述该条数据记录结果为删除记录,得到删除数据的定位;
其中,标记为删除的数据记录结果包括rowid丢失记录。
3.如权利要求2所述的一种基于SQLite模糊匹配的通用删除数据定位方法,其特征在于,所述利用筛选机制对所述数据记录结果进行整理,定位删除数据,还包括:
根据所述rowid丢失记录,比较所述rowid丢失记录左右两侧的未删除记录的rowid值;
若所述rowid丢失记录被单条删除,根据所述数据子页中描述记录的最左侧数据或最右侧数据的偏移量,选择两侧任一起点,按照记录的rowid依次顺序读取,推理得到rowid丢失记录的位置;
若多条所述rowid丢失记录被批量删除或频繁进行连续的写入、删除操作,选择最左侧和最右侧两个起点,按照记录的rowid依次顺序读取,分别推理得到两个位置,当两个位置相同,任一结果均为所述rowid丢失记录的位置。
4.如权利要求1所述的一种基于SQLite模糊匹配的通用删除数据定位方法,其特征在于,所述按块读取原始数据文件中的数据,将每块数据模糊匹配所述字段头描述模板,定位记录的数据偏移量,包括:
打开原始数据文件,所述原始数据文件包括SQLite 数据库的主db文件和事务缓存文件;
顺序扫描并按块读取所述原始数据文件中的数据,依次与字段头描述模板进行匹配;
响应于所述字段头描述模板中任一一个字段头信息匹配错误,跳过该块数据,继续扫描后续数据,直至数据所述字段头描述模板中所有字段头信息均匹配成功。
5.如权利要求1所述的一种基于SQLite模糊匹配的通用删除数据定位方法,其特征在于,所述利用筛选机制对所述数据记录结果进行整理,定位删除数据,还包括:
响应于所述删除数据被新数据覆写,利用业务数据的字段信息进行二次筛选。
6.如权利要求2所述的一种基于SQLite模糊匹配的通用删除数据定位方法,其特征在于,所述利用筛选机制对所述数据记录结果进行整理,定位删除数据,还包括:
响应于记录更新操作,生成新记录的字段数据,将所述未删除记录的字段数据与所述新记录的字段数据进行比对,若所述未删除记录的字段数据与所述新记录的字段数据不相同,标记所述未删除记录为记录更新前的残留记录,得到记录更新前的数据定位。
7.如权利要求1所述的一种基于SQLite模糊匹配的通用删除数据定位方法,其特征在于,所述原始数据文件中的数据还包括FTS扩展模块中用户数据记录表。
8.如权利要求1所述的一种基于SQLite模糊匹配的通用删除数据定位方法,其特征在于,在所述按块读取原始数据文件中的数据,将每块数据模糊匹配所述字段头描述模板,定位记录的数据偏移量之前,所述方法还包括:
于读取子页数据时,动态解密所述子页数据直接使用,使用后直接释放。
9.如权利要求1所述的一种基于SQLite模糊匹配的通用删除数据定位方法,其特征在于,所述根据被恢复的SQLite数据库建立字段头描述模板,包括:
建立字段头信息列表,响应于手动描述所述字段头信息列表中字段头信息的数据类型和附加信息,将描述后的字段头信息列表保存为字段头模板;或者,
通过建表语句自动推理字段头信息生成字段头模板,所述建表语句包括但不限于字段信息,所述字段头信息包括但不限于数据类型和附加信息。
10.一种基于SQLite模糊匹配的通用删除数据定位装置,包括:
字段头描述模块创建模块,用于根据被恢复的SQLite数据库建立字段头描述模板;
字段类型模糊匹配模块,用于按块读取原始数据文件中的数据,将每块数据模糊匹配所述字段头描述模板,定位记录的数据偏移量
数据记录结果读取模块,用于响应于数据与字段头描述模板匹配成功,按照所述数据偏移量的定位及所述字段头描述模板中描述的数据长度读取完整的字段数据,得到数据记录结果
数据记录结果筛选模块,用于利用筛选机制对所述数据记录结果进行整理,定位删除数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210918580.7A CN115495280A (zh) | 2022-08-01 | 2022-08-01 | 一种基于SQLite模糊匹配的通用删除数据定位方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210918580.7A CN115495280A (zh) | 2022-08-01 | 2022-08-01 | 一种基于SQLite模糊匹配的通用删除数据定位方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115495280A true CN115495280A (zh) | 2022-12-20 |
Family
ID=84465699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210918580.7A Pending CN115495280A (zh) | 2022-08-01 | 2022-08-01 | 一种基于SQLite模糊匹配的通用删除数据定位方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115495280A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117992284A (zh) * | 2024-04-03 | 2024-05-07 | 北京万盛华通科技有限公司 | 基于SQLite全文索引的数据恢复方法、装置及存储介质 |
-
2022
- 2022-08-01 CN CN202210918580.7A patent/CN115495280A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117992284A (zh) * | 2024-04-03 | 2024-05-07 | 北京万盛华通科技有限公司 | 基于SQLite全文索引的数据恢复方法、装置及存储介质 |
CN117992284B (zh) * | 2024-04-03 | 2024-06-25 | 北京万盛华通科技有限公司 | 基于SQLite全文索引的数据恢复方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109325030B (zh) | 报文处理方法、装置、计算机设备和存储介质 | |
US7716196B2 (en) | Method for culling a litigation discovery file set | |
US9081838B2 (en) | Methods, apparatuses, and computer program products for database record recovery | |
US20140082001A1 (en) | Digital forensic audit system for analyzing user's behaviors | |
US20140317062A1 (en) | Amethod and apparatus for recovering sqlite file deleted from mobile terminal | |
CN110336786B (zh) | 消息发送方法、装置、计算机设备和存储介质 | |
CN101763394A (zh) | 计算机系统涉密文件搜索方法 | |
CN111680008A (zh) | 日志处理方法、系统、可读存储介质及智能设备 | |
CN111177795A (zh) | 一种利用区块链识别视频篡改的方法、装置和计算机存储介质 | |
CN115495280A (zh) | 一种基于SQLite模糊匹配的通用删除数据定位方法及装置 | |
Li et al. | Database management strategy and recovery methods of Android | |
CN103761095B (zh) | 一种生成通用的升级文件头部数据信息的方法 | |
CN104021217A (zh) | 一种提取手机碎片文件和被删除文件的系统和方法 | |
CN108009049B (zh) | Myisam存储引擎删除记录离线恢复方法、存储介质 | |
US7379940B1 (en) | Focal point compression method and apparatus | |
Vandermeer et al. | Forensic analysis of the exfat artefacts | |
Pahade et al. | A survey on multimedia file carving | |
CN103870364B (zh) | 一种基于时间戳的yaffs2文件最终版恢复方法 | |
CN116126997B (zh) | 一种文献去重存储方法、系统、设备及存储介质 | |
CN104182479A (zh) | 一种处理信息的方法及装置 | |
CN106874147B (zh) | 一种恢复并解析Windows操作系统预读文件的方法 | |
CN114546957A (zh) | 一种数据智能集中处理服务平台 | |
CN106126375B (zh) | 一种基于Hash的YAFFS2文件各版本恢复方法 | |
CN108959486B (zh) | 审计字段信息获取方法、装置、计算机设备和存储介质 | |
Wan et al. | Survey of digital forensics technologies and tools for Android based intelligent devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |