CN109388621A - 用于解析日志文件的方法、装置以及计算机可读介质 - Google Patents
用于解析日志文件的方法、装置以及计算机可读介质 Download PDFInfo
- Publication number
- CN109388621A CN109388621A CN201811186604.4A CN201811186604A CN109388621A CN 109388621 A CN109388621 A CN 109388621A CN 201811186604 A CN201811186604 A CN 201811186604A CN 109388621 A CN109388621 A CN 109388621A
- Authority
- CN
- China
- Prior art keywords
- page
- record
- journal file
- main body
- data
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了用于解析日志文件的方法、装置以及计算机可读介质。该方法包括:确定所述日志文件中是否存在页面记录节点;如果存在所述页面记录节点,则根据所述日志文件的格式读取所述页面记录节点;从所述页面记录节点中提取记录主体;以及解析所提取的记录主体。
Description
技术领域
本公开涉及数据库解析技术,并且具体地涉及用于解析数据库的日志文件的方法、装置以及计算机可读介质。
背景技术
目前存在对数据库、特别是SQLite数据库删除数据进行通用解析的一些技术,但是还没有较为完整的相关技术。目前市场上已有SQLite删除数据的通用解析产品,但是有些局限性,而且目前还没有SQLite日志文件的数据分析相关的技术。
传统的SQLite删除数据解析方法是根据记录数据的特征来识别记录关键数据的起始和终止标志,从而解析某些关键数据,但是这种方法的弊端是只能针对某一类数据库文件的某些关键数据,而无法提取全部数据,并且对于其他的数据库文件则需要重新提取数据特征并重新解析,无法保证通用性。
SQLite数据库删除数据的通用解析,当前国内外已有一些研究。目前的通用解析产品有些局限性,在日志文件的删除记录挖掘方面,由于对于日志文件的分析不够精确,导致对日志文件恢复出的数据要么不全面,要么存在大量的冗余,这样影响了删除记录解析的准确性和全面性。
目前提出的方案都只针对完整SQLite文件或者文件碎片的恢复,对于SQLite日志文件就无能为力了,所以需要在这些方案的基础上,再提出一种方案以解析SQLite日志文件上的所有删除记录,以进一步完善SQLite删除数据的解析工作。
发明内容
本申请在研究SQLite格式和数据库表结构通用特征的基础上,提出了SQLite日志文件的记录分析方法,充分挖掘SQLite日志文件中的删除记录,以提高SQLite删除记录分析的准确性和全面性。
根据一个方面,提供了一种用于解析日志文件的方法,包括:确定所述日志文件中是否存在页面记录节点;如果存在所述页面记录节点,则根据所述日志文件的格式读取所述页面记录节点;从所述页面记录节点中提取记录主体;以及解析所提取的记录主体。
可替换地,如果存在所述页面记录节点,则从所述页面记录节点中提取页面编号。
可替换地,所述方法还包括:读取对应于所述页面编号的页面数据;将所读取的页面数据与所提取的记录主体进行比较;以及如果所读取的页面数据与所提取的记录主体不一致,则解析所提取的记录主体。
可替换地,所述方法还包括:识别出所提取的记录主体不同于所读取的页面数据的独有部分;以及解析所述独有部分。
可替换地,读取对应于所述页面编号的页面数据包括:从所述日志文件的当前页面往前查找页号为所述页面编号的节点作为对应于所述页面编号的页面数据。
可替换地,所述方法还包括:如果未从所述日志文件中找到对应于所述页面编号的页面数据,则从生成所述日志文件的数据库中查找对应于所述页面编号的页面数据。
可替换地,所述方法还包括:如果未从所述数据库中找到对应于所述页面编号的页面数据,则将整个所提取的记录主体作为独有部分进行解析。
根据另一个方面,提供了一种用于解析日志文件的装置,包括用于执行上述任一方法的单元。
根据另一个方面,提供了一种其上存储有指令的计算机可读介质,所述指令当被执行时使得计算设备执行上述任一方法。
附图说明
作为示例并且不是作为限制地在附图的各图中图示了本发明的实施例,其中同样的参考标号指代类似的要素。
图1示出了根据本发明一个实施例的SQLite数据库文件的页面结构的示意性框图。
图2示出了根据本发明另外实施例的SQLite数据库的日志文件的示意性框图。
图3示出了根据本发明另外实施例的用于解析日志文件的方法的流程图。
图4示出了根据本发明另外实施例的用于解析日志文件的方法的流程图。
图5示出了根据本发明另外实施例的用于解析日志文件的方法的流程图。
具体实施方式
在详细解释本发明的任何实施例之前,应当理解,本发明并不在其应用中被限制到在以下描述中阐述或在附图中所图示的部件的构造和布置的细节。本发明能够有其他实施例并且以各种方式被实践或实行。
而且,要理解,这里使用的措辞和术语是为了描述的目的,且不应被视为限制。在此使用“包括”或“具有”及其变体意指涵盖其后列出的项目及其等效物以及附加项目。术语“安装的”、“连接的”和“耦合的”被宽泛地使用并且涵盖直接和间接的安装、连接和耦合。此外,“连接的”和“耦合的”不局限于物理或机械连接或耦合,且可包括电连接或耦合,无论是直接还是间接的。而且,电子通信和通知可以使用其他已知的手段(包括直接连接、无线连接等)进行执行。
还应当指出的是,多个基于硬件和软件的设备以及多个不同的结构部件可被利用于实施本发明。此外,并且如在随后的段落中所描述,在各图中图示的具体的配置旨在举例说明本发明的实施例。替代配置是可能的。
SQLite数据库文件是由一系列的数据表组成的,而每张数据表是由一系列的页面组成的,并且这些页面组织由一棵B+树来管理,每个B+树节点对应一个SQLite页面,页面的大小是2的n次方,常见的有1024、2048、4096字节等。存放数据的叶子节点称为叶子页,而存放索引的内部节点称为内部页,每个页面由四个部分构成。如图1中所示,根据本发明一个实施例的SQLite数据库文件的页面结构包括页头部、单元指针数组、未分配空间以及单元内容区。页头部包括8个字节,其中,第0字节是页面类型,包括内部页(0X05)和叶子页(0X0D),第1-2字节表示第一个空闲块的起始地址,第3-4字节表示页面的单元数,第5-6字节表示单元内容区的起始地址,第7字节表示碎片字节数。
如图2中所示,根据本发明另外实施例的SQLite数据库的日志文件由日志头部和日志主体两部分组成。日志头部大小固定为512字节,包括头部和0填充区域,而日志主体包括一系列的页面记录。每个页面记录包括4个字节的页面编号、记录主体和4个字节的校验和。记录主体是SQLite数据库文件的一个页面。
对于数据库来说,当日志文件处理结束时,文件不会被删除,而只是简单地把28个字节的头部做0填充。本文仅描述了解析已处理结束的日志文件。然而,应当理解的是,根据本文的公开,涉及未处理结束的日志文件的解析也将是清楚的。
如图3中所示,示出了根据本发明另外实施例的用于解析日志文件的方法的流程图。根据上文描述,由于日志文件的前面28字节的头部已做0填充,文件处理已结束,所以该日志文件所涉及的数据都被视为已删除数据。将整个日志文件的所有数据作为已删除数据并如图3中所示的那样进行解析。在步骤301处,根据日志文件的格式来提取日志文件中的所有记录主体。将所提取的记录主体组成n个数据库碎片,其中1≤n≤日志文件的页数。在步骤302处,遍历n个数据库碎片,逐一恢复碎片中符合待恢复数据表结构的数据。
进一步的,图4示出了根据本发明另外实施例的用于解析日志文件的方法的流程图。在步骤401处,根据日志文件的格式来读取日志文件中的页面记录节点。在步骤402处,针对每个读取的页面记录节点,与数据库文件的对应页面进行比较来确定是否一致。在步骤403处,如果所读取的页面记录节点与数据库文件的对应页面不一致,则解析该页面记录节点对应的记录主体。通过本实施例的方法,只要根据日志文件的格式读取出所有页面记录节点,就可以按照解析出日志文件中符合待恢复的数据表的表结构的已删除数据。
图5示出了根据本发明另外实施例的用于解析日志文件的方法的流程图。在步骤501处,确定日志文件中是否存在页面记录节点PR。如果在步骤501处确定存在页面记录节点PR,则在步骤502处,根据日志文件的格式读取页面记录节点PR。在步骤503处,从页面记录节点PR中提取页面编号PN和记录主体PRB。如果在步骤501处确定不存在页面记录节点PR,则过程结束。在步骤504处,读取对应于页面编号PN的页面数据PRB1。在步骤505处,将所读取的页面数据PRB1与所提取的记录主体PRB进行比较以确定二者是否一致。如果在步骤505处确定所读取的页面数据PRB1与所提取的记录主体PRB不一致,则在步骤506处,解析所提取的记录主体PRB。如果在步骤505处确定所读取的页面数据PRB1与所提取的记录主体PRB一致,则过程返回到步骤501。解析所提取的记录主体PRB包括将所解析的数据写入删除数据集合中。在步骤506处解析所提取的记录主体PRB之后,过程返回到步骤501以确定是否存在另外的页面记录节点PR。如果存在,则重复上面描述的过程,如果不存在,则过程结束。
如图5中所示的方法将从日志文件中提取的记录主体与对应页面数据进行比较,使得仅解析不一致的记录主体。应该理解的是,在要求严格按原始数据解析的情况下,可以省略以上读取页面数据的步骤和比较步骤。
在步骤504处读取页面数据PRB1还包括从日志文件的当前页面往前查找页面编号为PN的节点,若找到,标记为页面数据PRB1。如果从日志文件中没有找到该节点,则从数据库中读取对应于页面编号PN的页面数据并标记为页面数据PRB1。如果从数据库中也没有找到该页面数据PRB1,则跳过比较步骤505,将步骤502处提取的记录主体PRB标记为独有记录并在步骤506处进行解析。
在步骤505处比较所读取的页面数据PRB1与所提取的记录主体PRB可以是逐个字节地进行比较以确定二者是否一致。可替换地,可以选择性地比较所读取的页面数据PRB1与所提取的记录主体PRB。根据所提取的记录主体PRB的页头部来确定其是内部页还是叶子页。如果所提取的记录主体PRB是内部页,则整个页面逐字节地比较所读取的页面数据PRB1与所提取的记录主体PRB。如果所提取的记录主体PRB是叶子页,则只比较所提取的记录主体PRB和所读取的页面数据PRB1的页头部和单元指针数组。在所提取的记录主体PRB是叶子页的情况下,如果所提取的记录主体PRB和所读取的页面数据PRB1的页头部和单元指针数组都一致,则确定所提取的记录主体PRB和所读取的页面数据PRB1是一致的。所提取的记录主体PRB的单元指针数组大小是PRB第3-4字节表示的数值的两倍,表示为PRB[3~4]*2。所读取的页面数据PRB1的单元指针数组大小与此类似。
在步骤505处比较所读取的页面数据PRB1与所提取的记录主体PRB还可以包括根据页面结构进行比较以识别出所提取的记录主体PRB的独有部分。在步骤506处,解析所提取的记录主体PRB可以包括解析所提取的记录主体PRB的独有部分。
本发明提出的用于解析日志文件的方法无需人工分析介入,自动根据数据库的格式读取日志文件的页面数据,并且根据页面结构对比识别日志文件中独有的数据记录。该方法不局限于某一个数据库,对所有SQLite数据库的日志文件分析都适用,具有很强的通用性。而且,本发明提出的用于解析日志文件的方法可以快速、准确地挖掘SQLite数据库中的文件上的删除记录,增强了SQLite数据库删除记录挖掘的准确性和全面性。
至少一个实施例的一个或多个方面可以由存储在计算机可读介质上的代表性代码实现,所述计算机可读介质表示和/或限定集成电路、诸如处理器内的逻辑。实施例的一个或多个部分可以通过使用软件、固件和/或硬件的不同组合而被实现。贯穿本详细描述,为了解释的目的,阐明了众多特定细节以便提供对本发明的透彻理解。然而,将对本领域技术人员显而易见的是,可以在没有这些特定细节中的一些的情况下实践实施例。在某些情况中,众所周知的结构和功能没有以详尽细节被描述以避免使实施例的发明主题模糊。因此,应当就随后的权利要求而判定本发明的精神和范围。
Claims (9)
1.一种用于解析日志文件的方法,包括:
确定所述日志文件中是否存在页面记录节点;
如果存在所述页面记录节点,则根据所述日志文件的格式读取所述页面记录节点;
从所述页面记录节点中提取记录主体;以及
解析所提取的记录主体。
2.如权利要求1所述的方法,还包括:
如果存在所述页面记录节点,则从所述页面记录节点中提取页面编号。
3.如权利要求2所述的方法,还包括:
读取对应于所述页面编号的页面数据;
将所读取的页面数据与所提取的记录主体进行比较;以及
如果所读取的页面数据与所提取的记录主体不一致,则解析所提取的记录主体。
4.如权利要求3所述的方法,还包括:
识别出所提取的记录主体不同于所读取的页面数据的独有部分;以及
解析所述独有部分。
5.如权利要求3所述的方法,读取对应于所述页面编号的页面数据包括:
从所述日志文件的当前页面往前查找页号为所述页面编号的节点作为对应于所述页面编号的页面数据。
6.如权利要求5所述的方法,还包括:
如果未从所述日志文件中找到对应于所述页面编号的页面数据,则从生成所述日志文件的数据库中查找对应于所述页面编号的页面数据。
7.如权利要求6所述的方法,还包括:
如果未从所述数据库中找到对应于所述页面编号的页面数据,则将整个所提取的记录主体作为独有部分进行解析。
8.一种用于解析日志文件的装置,包括用于执行如权利要求1-7中任一项所述的方法的单元。
9.一种其上存储有指令的计算机可读介质,所述指令当被执行时使得计算设备执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811186604.4A CN109388621B (zh) | 2018-10-12 | 2018-10-12 | 用于解析日志文件的方法、装置以及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811186604.4A CN109388621B (zh) | 2018-10-12 | 2018-10-12 | 用于解析日志文件的方法、装置以及计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109388621A true CN109388621A (zh) | 2019-02-26 |
CN109388621B CN109388621B (zh) | 2021-05-07 |
Family
ID=65427527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811186604.4A Active CN109388621B (zh) | 2018-10-12 | 2018-10-12 | 用于解析日志文件的方法、装置以及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109388621B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1975725A (zh) * | 2006-12-12 | 2007-06-06 | 华为技术有限公司 | 一种管理日志的方法及系统 |
CN103577283A (zh) * | 2013-10-21 | 2014-02-12 | 华为技术有限公司 | 一种日志备份方法及装置 |
CN103618692A (zh) * | 2013-10-28 | 2014-03-05 | 中国航天科工集团第二研究院七〇六所 | 一种构建日志快速匹配的方法 |
CN105068889A (zh) * | 2015-08-03 | 2015-11-18 | 四川效率源信息安全技术有限责任公司 | 恢复Ext3/Ext4中已彻底删除文件的方法 |
US20160034706A1 (en) * | 2014-07-30 | 2016-02-04 | Fujitsu Limited | Device and method of analyzing masked task log |
CN107451149A (zh) * | 2016-05-31 | 2017-12-08 | 北京京东尚科信息技术有限公司 | 流量数据查询任务的监控方法及其装置 |
-
2018
- 2018-10-12 CN CN201811186604.4A patent/CN109388621B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1975725A (zh) * | 2006-12-12 | 2007-06-06 | 华为技术有限公司 | 一种管理日志的方法及系统 |
CN103577283A (zh) * | 2013-10-21 | 2014-02-12 | 华为技术有限公司 | 一种日志备份方法及装置 |
CN103618692A (zh) * | 2013-10-28 | 2014-03-05 | 中国航天科工集团第二研究院七〇六所 | 一种构建日志快速匹配的方法 |
US20160034706A1 (en) * | 2014-07-30 | 2016-02-04 | Fujitsu Limited | Device and method of analyzing masked task log |
CN105068889A (zh) * | 2015-08-03 | 2015-11-18 | 四川效率源信息安全技术有限责任公司 | 恢复Ext3/Ext4中已彻底删除文件的方法 |
CN107451149A (zh) * | 2016-05-31 | 2017-12-08 | 北京京东尚科信息技术有限公司 | 流量数据查询任务的监控方法及其装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109388621B (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101456757B1 (ko) | SQLite 데이터베이스에서 삭제된 데이터의 복원 방법 및 장치 | |
CN106126543B (zh) | 一种关系型数据库到MongoDB的模型转换和数据迁移方法 | |
US20140297680A1 (en) | Analyzing multiple data streams as a single data object | |
EP1480132B1 (en) | System and method for identifying and storing changes made to a table | |
KR102179855B1 (ko) | 중복 웹 페이지 제거 방법 및 장치 | |
EP3848808A1 (en) | Method and system for recovering deleted file based on fat32 file system | |
CN108062357B (zh) | F2fs文件系统的删除文件恢复方法及存储介质 | |
CN105045817B (zh) | 基于事务日志的SQL Server数据库取证分析系统及方法 | |
CN108009049B (zh) | Myisam存储引擎删除记录离线恢复方法、存储介质 | |
Frühwirt et al. | InnoDB database forensics: Enhanced reconstruction of data manipulation queries from redo logs | |
CN104090922B (zh) | 一种清理隐私数据的方法和装置 | |
CN111125298A (zh) | 重建ntfs文件目录树的方法、设备及存储介质 | |
KR101549220B1 (ko) | 데이터베이스 관리 방법, 시스템 및 데이터베이스 트리 구조 | |
CN104765635B (zh) | 一种核对apk内多国语言的方法及其系统 | |
CN107797916A (zh) | Ddl语句审核方法和装置 | |
CN103377123B (zh) | 一种网页代码自动化测试方法及装置 | |
CN106547782A (zh) | 日志信息的获取方法及装置 | |
CN111400101B (zh) | 一种jfs2文件系统数据删除时的数据恢复方法及系统 | |
CN104866610A (zh) | 一种基于相似类型匹配估算的SQLite删除数据恢复方法 | |
CN106897211A (zh) | 针对混淆脚本语言的定位方法和系统 | |
Li et al. | Database management strategy and recovery methods of Android | |
Liu et al. | Recovery of deleted record for SQLite3 database | |
CN109344163B (zh) | 一种数据校验方法、装置和计算机可读介质 | |
CN103617122B (zh) | 一种源代码的比对方法 | |
CN109902070A (zh) | 一种面向WiFi日志数据的解析存储搜索方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |