公开/公告号CN112631838A
专利类型发明专利
公开/公告日2021-04-09
原文格式PDF
申请/专利权人 深圳软牛科技有限公司;
申请/专利号CN202011634814.2
申请日2020-12-31
分类号G06F11/14(20060101);G06F16/16(20190101);G06F16/17(20190101);
代理机构44653 深圳市特讯知识产权代理事务所(普通合伙);
代理人孟智广
地址 518000 广东省深圳市宝安区新安街道海旺社区N23卓越时代广场C栋海天路15-3号2903
入库时间 2023-06-19 10:32:14
技术领域
本说明书一个或多个实施例涉及文件恢复技术领域,尤其涉及一种NTFS中office文件恢复方法、装置及电子设备。
背景技术
NTFS是windows上主流的文件系统,该文件系统下,office文件(包括word、excel等)编辑后,如果非正常关闭,再次打时开office会提示几个编辑中的office文件给用户选择,用户选择需要保留的office文件保存后,其他的office文件自动删除。
但是发明人发现,如果用户在选择需要保留的office文件时选择错误,目标office文件会被自动删除,目前缺乏有效的方法恢复目标office文件。
发明内容
有鉴于此,本说明书一个或多个实施例的目的在于提出一种NTFS中office文件恢复方法、装置及电子设备,以解决现有技术中的技术问题。
基于上述目的,本说明书一个或多个实施例提供了一种NTFS中office文件恢复方法,包括:
根据NTFS的卷头信息查找$Logfile文件;
解析所述$Logfile文件,获取其中的记录项,并基于所述记录项的序列号将所述记录项排序;
将排序后的所述记录项划分为多个事务,其中,每个事务的第一个记录项为上一序列号为0的记录项,最后一个记录项为redo操作为ForgetTransaction的记录项;
若所述事务为重命名事务,则构建临时列表,所述临时列表用于记录从所述重命名事务中获取的重命名前的旧文件类型为office文件,且新文件类型为临时文件的文件id和office旧文件名;
若所述事务为删除文件的删除事务,且该删除事务对应的删除文件为临时文件,则判断所述临时文件列表中是否存储有该删除文件的文件id;
若所述临时文件列表中存储有该删除文件的文件id,则从所述删除事务对应的记录项中提取删除文件的文件信息以及文件的存储信息;
用对应的重命名前的office旧文件名替换所述文件信息中的新文件名;
输出office旧文件名和文件的存储信息。
作为一种可选的实施方式,所述根据NTFS的卷头信息查找$Logfile文件,包括:
根据NTFS的卷头信息定位$MFT文件的位置;
通过所述$MFT文件查找所述$Logfile文件。
作为一种可选的实施方式,所述基于所述记录项的序列号将所述记录项排序,包括:
按照所述序列号由小到大的顺序将所述记录项排序。
作为一种可选的实施方式,若事务中存在redo操作为DeleteAttribute、undo操作为CreateAttribute的记录项,且存在redo操作为CreateAttribute、undo操作为DeleteAttribute的记录项,则该事务为重命名事务。
作为一种可选的实施方式,所述从所述重命名事务中获取的重命名前的旧文件类型为office文件,且新文件类型为临时文件的文件id,包括:
在重命名事务的redo操作为DeleteAttribute且undo操作为CreateAttribute的记录项中,获取重命名前的旧文件类型,若所述旧文件类型为office文件,在该重命名事务的在redo操作为CreateAttribute且undo操作为DeleteAttribute的记录项中获取与旧文件类型对应的新文件类型,若所述新文件类型为临时文件,则获取与该临时文件对应的文件id。
作为一种可选的实施方式,判断事务是否为删除文件的删除事务的方法为:
针对每个事务,若该事务中有redo操作为DeallocateFileRecordSegmen的记录项,则该事务为删除文件的删除事务。
作为一种可选的实施方式,所述从所述删除事务对应的记录项中提取删除的文件信息以及文件的存储信息,包括:
针对每个所述删除事务对应的记录项,从redo操作为DeleteIndexEntryAllocation,且undo操作为AddIndexEntryAllocation的记录项中提取删除的文件信息;
针对每个所述删除事务对应的记录项,从redo操作为ClearBitsInNonResidentBitmap且undo操作为SetBitsInNonResidentBitmap的记录项中提取文件的存储信息。
作为本发明的第二个方面,提供了一种NTFS中office文件恢复装置,包括:
查找模块,用于根据NTFS的卷头信息查找$Logfile文件;
解析模块,用于解析所述$Logfile文件,获取其中的记录项,并基于所述记录项的序列号将所述记录项排序;
划分模块,用于将排序后的所述记录项划分为多个事务,其中,每个事务的第一个记录项为上一序列号为0的记录项,最后一个记录项为redo操作为ForgetTransaction的记录项;
构建模块,用于若所述事务为重命名事务,则构建临时列表,所述临时列表用于记录从所述重命名事务中获取的重命名前的旧文件类型为office文件,且新文件类型为临时文件的文件id和office旧文件名;
判断模块,用于若所述事务为删除文件的删除事务,且该删除事务对应的删除文件为临时文件,则判断所述临时文件列表中是否存储有该删除文件的文件id;
提取模块,用于若所述临时文件列表中存储有该删除文件的文件id,则从所述删除事务对应的记录项中提取删除文件的文件信息以及文件的存储信息;
替换模块,用于用对应的重命名前的office旧文件名替换所述文件信息中的新文件名;
输出模块,用于输出office旧文件名和文件的存储信息。
作为本发明的第三个方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如前所述的方法。
从上面所述可以看出,本说明书一个或多个实施例提供的一种NTFS中office文件恢复方法、装置及电子设备,本发明实施例中,首先获取$Logfile文件的记录项,并进行排序,再将记录项划分为多个事务,针对每个事务,首先从事务中查找重命名事务,并构建临时列表,所述临时列表用于记录从所述重命名事务中获取的重命名前的旧文件类型为office文件,且新文件类型为临时文件的文件id和office旧文件名;再从事务中查找删除文件的删除事务,且该删除事务对应的删除文件为临时文件,则判断所述临时文件列表中是否存储有该删除文件的文件id,若有,则从所述删除事务对应的记录项中提取删除文件的文件信息以及文件的存储信息;再用对应的重命名前的office旧文件名替换所述文件信息中的新文件名,即可获得所要恢复的office文件。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例的方法的逻辑示意图;
图2为本说明书一个或多个实施例的装置的逻辑示意图;
图3为本说明书一个或多个实施例的电子设备的逻辑示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,对本公开进一步详细说明。
需要说明的是,除非另外定义,本说明书一个或多个实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本说明书一个或多个实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
为了实现上述发明目的,本发明实施例提供了一种NTFS中office文件恢复方法,包括:
根据NTFS的卷头信息查找$Logfile文件;
解析所述$Logfile文件,获取其中的记录项,并基于所述记录项的序列号将所述记录项排序;
将排序后的所述记录项划分为多个事务,其中,每个事务的第一个记录项为上一序列号为0的记录项,最后一个记录项为redo操作为ForgetTransaction的记录项;
若所述事务为重命名事务,则构建临时列表,所述临时列表用于记录从所述重命名事务中获取的重命名前的旧文件类型为office文件,且新文件类型为临时文件的文件id和office旧文件名;
若所述事务为删除文件的删除事务,且该删除事务对应的删除文件为临时文件,则判断所述临时文件列表中是否存储有该删除文件的文件id;
若所述临时文件列表中存储有该删除文件的文件id,则从所述删除事务对应的记录项中提取删除文件的文件信息以及文件的存储信息;
用对应的重命名前的office旧文件名替换所述文件信息中的新文件名;
输出office旧文件名和文件的存储信息。
本发明实施例中,首先获取$Logfile文件的记录项,并进行排序,再将记录项划分为多个事务,针对每个事务,首先从事务中查找重命名事务,并构建临时列表,所述临时列表用于记录从所述重命名事务中获取的重命名前的旧文件类型为office文件,且新文件类型为临时文件的文件id;再从事务中查找删除文件的删除事务,且该删除事务对应的删除文件为临时文件,则判断所述临时文件列表中是否存储有该删除文件的文件id,若有,则从所述删除事务对应的记录项中提取删除文件的文件信息以及文件的存储信息;再用对应的重命名前的office旧文件名替换所述文件信息中的新文件名,即可获得所要恢复的office文件。
如图1所示,本发明实施例提供了一种NTFS中office文件恢复方法,包括:
S100、根据NTFS的卷头信息查找$Logfile文件。
可选的,根据NTFS的卷头信息定位$MFT文件的位置;通过所述$MFT文件查找所述$Logfile文件。
S200、解析所述$Logfile文件,获取其中的记录项,并基于所述记录项的序列号lsn将所述记录项排序。
可选的,按照所述序列号lsn由小到大的顺序将所述记录项排序。
其中,每个记录项的头部8个字节组成的整型为序列号。
S300、将排序后的所述记录项划分为多个事务,其中,每个事务的第一个记录项为上一序列号pre lsn为0的记录项,最后一个记录项为redo操作为ForgetTransaction(值为27)的记录项。
其中,每个记录项的偏移8个字节开始的8个字节组成为pre lsn。
其中,每个记录项偏移0x30位置的2个字节组成的整型值为redo操作值。
S400、若所述事务为重命名事务,则构建临时列表,所述临时列表用于记录从所述重命名事务中获取的重命名前的旧文件类型为office文件,且新文件类型为临时文件的文件id和office旧文件名。
可选的,所述从所述重命名事务中获取的重命名前的旧文件类型为office文件,且新文件类型为临时文件的文件id,包括:
在重命名事务的redo操作为DeleteAttribute(值为6)且undo操作为CreateAttribute(值为5)的记录项中,获取重命名前的旧文件类型,若所述旧文件类型为office文件,在该重命名事务的在redo操作为CreateAttribute(值为5)且undo操作为DeleteAttribute(值为6)的记录项中获取与旧文件类型对应的新文件类型,若所述新文件类型为临时文件,则获取与该临时文件对应的文件id。
其中,定位到undo操作的内容区域中(每个记录项偏移0x38位置的2个字节表示undo操作内容的偏移,0x40位置的2个字节表示undo操作内容的长度),在偏移0x9位置的1个字节表示文件名的长度,偏移0x10位置的1个字节表示文件名的偏移位置,根据文件名的偏移位置和长度获取完整的旧文件类型,若所述旧文件类型包含office文件后缀,例如.doc、.xlsx等,则所述旧文件类型为office文件。
其中,定位到redo操作的内容区域中,每个记录偏移0x34位置的2个字节表示redo操作内容的偏移,0x36位置的2个字节表示redo操作内容的长度,在偏移0x9位置的1个字节表示文件名的长度,偏移0x10位置的1个字节表示文件名的偏移位置,根据文件名的偏移位置和长度获取完整的新文件类型,判断新文件类型的后缀是否为.tmp,如果是则所述新文件类型为临时文件。
可选的,获取重命名前的旧文件类型为office文件,且新文件类型为临时文件的文件id的方法为:每个记录项偏移0x48位置的4个字节为簇编号,假定为A,偏移0x44位置的2个字节组成的整型表示记录在簇中编号,假定为B,则文件id的值为A*4+B/2。
S500、若所述事务为删除文件的删除事务,且该删除事务对应的删除文件为临时文件,则判断所述临时文件列表中是否存储有该删除文件的文件id。
可选的,判断事务是否为删除文件的删除事务的方法为:
针对每个事务,若该事务中有redo操作为DeallocateFileRecordSegmen(值为3)的记录项,则该事务为删除文件的删除事务。
S600、若所述临时文件列表中存储有该删除文件的文件id,则从所述删除事务对应的记录项中提取删除文件的文件信息以及文件的存储信息。
可选的,针对每个所述删除事务对应的记录项,从redo操作为DeleteIndexEntryAllocation(值为15),且undo操作为AddIndexEntryAllocation(值为14)的记录项中提取删除的文件信息;
其中,该记录项的undo操作的内容区域(每个记录项偏移0x38位置的2个字节表示undo操作内容的偏移,0x40位置的2个字节表示undo操作内容的长度)中,偏移0x52位置开始为删除的文件或者文件夹的名称。
针对每个所述删除事务对应的记录项,从redo操作为ClearBitsInNonResidentBitmap(值为22)且undo操作为SetBitsInNonResidentBitmap(值为21)的记录项中提取文件的存储信息。
其中,该记录项中undo内容区域的前4个字节为文件的起始簇号,后面4个字节为使用的簇的个数。
需要说明的是,文件不是连续存储的,该记录项会存在多个,每个代表一个存储块,合在一起才是完整的文件存储区。
S700、用对应的重命名前的office旧文件名替换所述文件信息中的新文件名;
S800、输出office旧文件名和文件的存储信息。
可以理解,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。
需要说明的是,本说明书一个或多个实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本说明书一个或多个实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
与所述NTFS中office文件恢复方法相对应的,本发明实施例还提供了一种NTFS中office文件恢复装置,如图2所示,包括:
查找模块10,用于根据NTFS的卷头信息查找$Logfile文件;
解析模块20,用于解析所述$Logfile文件,获取其中的记录项,并基于所述记录项的序列号将所述记录项排序;
划分模块30,用于将排序后的所述记录项划分为多个事务,其中,每个事务的第一个记录项为上一序列号为0的记录项,最后一个记录项为redo操作为ForgetTransaction的记录项;
构建模块40,用于若所述事务为重命名事务,则构建临时列表,所述临时列表用于记录从所述重命名事务中获取的重命名前的旧文件类型为office文件,且新文件类型为临时文件的文件id和office旧文件名;
判断模块50,用于若所述事务为删除文件的删除事务,且该删除事务对应的删除文件为临时文件,则判断所述临时文件列表中是否存储有该删除文件的文件id;
提取模块60,用于若所述临时文件列表中存储有该删除文件的文件id,则从所述删除事务对应的记录项中提取删除文件的文件信息以及文件的存储信息;
替换模块70,用于用对应的重命名前的office旧文件名替换所述文件信息中的新文件名;
输出模块80,用于输出office旧文件名和文件的存储信息。
本发明实施例中,首先获取$Logfile文件的记录项,并进行排序,再将记录项划分为多个事务,针对每个事务,首先从事务中查找重命名事务,并构建临时列表,所述临时列表用于记录从所述重命名事务中获取的重命名前的旧文件类型为office文件,且新文件类型为临时文件的文件id和office旧文件名;再从事务中查找删除文件的删除事务,且该删除事务对应的删除文件为临时文件,则判断所述临时文件列表中是否存储有该删除文件的文件id,若有,则从所述删除事务对应的记录项中提取删除文件的文件信息以及文件的存储信息;再用对应的重命名前的office旧文件名替换所述文件信息中的新文件名,即可获得所要恢复的office文件。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
与所述NTFS中office文件恢复方法相对应的,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的方法。
图3示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本说明书一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
本说明书一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
机译: 一种针对加密的MS-Office 2007文件的快速密码恢复方法
机译: 一种针对加密的MS-Office 2007文件的快速密码恢复方法
机译: 文件读取装置中的文件恢复方法及文件读取器