一种pdf文档恢复装置及方法

文档序号:10594490阅读:297来源:国知局
一种pdf文档恢复装置及方法【专利摘要】本发明公开了一种PDF文档恢复装置及方法,该装置包括全局密匙获取单元,利用彩虹表获取待解密文档的全局密匙;PDF标题、线性化参数字典对象产生单元,用来产生标题、线性化参数字典对象内容;交叉参考表预先生成单元,用来产生主交叉参考表和第2交叉参考表;尾部字典产生单元,用来产生与主交叉参考表和第2交叉参考表对应的尾部字典;对象号处理单元,用来完成对解密后对象号的处理;间接引用对象处理单元,用来完成对当前对象中所有引用对象的对象号处理;对象内容处理单元,用来完成对对象内容类型的判断,并对流对象进行解密。本发明可以忽略解密前后内容长度变化带来的起始偏移值计算困难,便于模块化设计,快速恢复出PDF文档。【专利说明】一种PDF文档恢复装置及方法
技术领域
[0001]本发明涉及]^FWortableDocumentFotmat)文件处理领域,尤其是指一种]文档恢复装置及方法。【
背景技术
】[〇〇〇2]众所周知,PDF全称ProtableDocumentFormat,可翻译为可移植文档格式,是一种电子文件格式。这种文件格式与操作系统无关,也就是说,PDF文件不管是在Windows、Uinx还是苹果公司的Mac0S操作系统中都是通用的,这一特性使它成为在网络上进行电子文档发行和数字化信息传播的理想文档格式。越来越多的电子图书、产品说明、电子邮件、网络资料开始使用H)F格式文件。[0003]PDF文件结构主要由标题、线性化参数字典、第二交叉参考表和对应的尾部字典、对象内容、主交叉参考表和对应的尾部字典组成。[0004]PDF规范从1993年到现在,已经有过7个版本,从最初的TOF1.0到现在的roFl.6,每次的版本升级都会加入一些新的特性,但是PDF文件格式的主要特性没有改变。1995年,PDF1.1版本加入了40比特文档加密;2001年,PDF1.4版本加入了128比特文档加密。现在针对40比特的加密方法,可以使用彩虹表进行破解,获取全局密匙后,进而恢复出PDF文档。PDF文档加密后增加了一个加密字典对象,用来存贮解密需要的信息。恢复TOF文档,需要重新计算各个对象的起始偏移值,并写入到交叉参考表。由于解密后,去掉了加密字典对象,导致部分对象的内容长度发生变化,例如对象A解密前的对象号为100,解密后变为99,则对象号长度由3变为2,对象A的总长度也对应的减1,进而导致对象A后面的所有对象的起始偏移值减1;另外对象A作为间接参考对象,也可能被对象B引用,因此也会产生上述的问题。由于不知道对象A、B在PDF文件结构中的位置,导致不能预先计算完每个对象的起始偏移值,而是实时计算每个对象的起始偏移值,从而给PDF文档恢复带来困难,不能快速恢复出PDF文档。另外假设解密前后各个对象长度不变,虽然可以快速计算出解密后各个对象的起始偏移值,但是还需要对长度发生变化的对象进行处理,如果处理不正确,也不能正确恢复出TOF文档。【
发明内容】[0005]本发明的目的在于克服现有技术的不足,提供一种TOF文档恢复装置及方法,可以忽略解密后对象长度变化导致的起始偏移值计算困难,根据解密前各个对象的长度,预先计算出解密后各个对象的起始偏移值,然后写入交叉参考表;另外对于解密前后内容长度发生变化的对象,给出一种合理的处理方法,以便于能够正确恢复出TOF文档。[0006]为实现上述目的,本发明所提供的技术方案,如下:[0007]一种PDF文档恢复装置,包括:[0008]全局密匙获取单元,由加密字典对象内容提取单元、数据索引单元、彩虹表数据存储单元、密匙输出单元组成,该全局密匙获取单元利用彩虹表获取待解密文档的全局密匙;[0009]PDF标题、线性化参数字典对象产生单元,由标题产生单元、线性化参数字典对象产生单元、内容输出单元组成,该PDF标题、线性化参数字典对象产生单元用来产生标题、线性化参数字典对象内容;[0010]交叉参考表预先生成单元,由主交叉参考表生成单元、第2交叉参考表生成单元、内容输出单元组成,该交叉参考表预先生成单元用来产生主交叉参考表和第2交叉参考表;[0011]尾部字典产生单元,用来产生与主交叉参考表和第2交叉参考表对应的尾部字典;[〇〇12]对象号处理单元,由第1判断单元、第2判断单元、处理单元组成,用来完成对解密后对象号的处理;[0013]间接引用对象处理单元,由搜索单元和对象号处理单元组成,用来完成对当前对象中所有引用对象的对象号处理;[0014]对象内容处理单元,由第3判断单元、流内容解密单元组成,用来完成对对象内容类型的判断,并对流对象进行解密。[0015]一种利用上述PDF文档恢复装置实现的PDF文档恢复方法,如下:[0016]首先假设各个对象解密前后内容长度不发生变化,则根据解密前各个对象的起始偏移值,获得各个对象的内容长度,预先计算出解密后各个对象的起始偏移值,并形成交叉参考表,然后把交叉参考表写入PDF文件;根据获取的加密字典对象号,把待处理的各个对象的对象号同加密字典对象号进行比较,如果小于加密字典对象号,则对象号不变;如果大于加密字典对象号,则对象号减1,另外判断对象号减1后,对象号长度是否变化,如果没有发生变化,则不作处理;如果对象号长度发生变化,则在原对象号的最高位填入一个预设值,修改后的对象号填入低位;其具体包括以下步骤:[0017]1)利用全局密匙密匙获取单元,首先获取加密TOF文档中的加密字典对象内容,然后根据已经保存的彩虹表和索引值,获得全局密匙;[0018]2)利用PDF标题、线性化参数字典对象产生单元,产生标题和线性化参数字典,并把两部分内容写入到打开的TOF文件,同时保存已经写入数据的长度L;[0019]3)把数据长度L和加密前各个对象的起始偏移值,送入到交叉参考表预产生单元,生成第2交叉参考表和主交叉参考表,并把第2交叉参考表写入已经打开的TOF文件;[0020]4)利用尾部字典产生单元,产生与第2交叉参考表对应的尾部字典,并把尾部字典内容写入已经打开的TOF文件;[0〇21]5)从加密文档中读出第n个对象内容,获得对象n的对象号码objectNumbern,然后把对象号码〇bjectNumbern送入到对象号处理单元,第1判断单元把objectNumbern同加密字典对象号码进行比较,如果〇bjectNumbern小于,则不作任何处理;反之则objectNumbern’n=objectNumbern_l;把新对象号码objectNumbern’n送入到第2判断单元,如果满足mod(loglO(objectNumbern’n+l),1)等于0,mod表示取模运算,则需要把对象号objectNumbern’n送入到处理单元进行处理,处理方法是:在对象号码objectNumbern的最高位补0,剩余低位存放objectNumbern’n;[〇〇22]6)把第(5)步处理后的对象内容送入到间接引用对象处理单元,搜索单元完成对象n中所有间接引用对象的统计,然后依次送入到对象号处理单元,完成对象号处理;[〇〇23]7)把第(6)步处理后的对象n送入到对象内容处理单元,第3判断单元进行对象类型判断,如果对象n不是流对象,则直接写入已经打开的TOF文件;反之送入到流内容解密单元,根据获取的全局密匙、对象n的原对象号码objectNumbern、产生号码,获得流对象加密密匙,然后对流内容进行解密,并把处理后的对象n写入到已经打开的TOF文件;[0024]8)根据获得对象个数N,依次对每个对象进行(5)-(7)步的处理;[〇〇25]9)把第(3)步预先生成的主交叉参考表写入到已经打开的PDF文件中;[0026]10)利用尾部字典产生单元,产生与主交叉参考表对应的尾部字典,并把尾部字典内容写入已经打开的TOF文件。[0027]本发明与现有技术相比,具有如下优点与有益效果:[0028]1、本发明不用考虑解密前后对象内容长度变化带来的影响,根据解密前各个对象的起始偏移值,获得各个对象的内容长度,然后根据内容长度预先计算出解密后各个对象的起始偏移值,从而可以忽略解密前后内容长度变化带来的起始偏移值计算困难,便于模块化设计,快速恢复出TOF文档。[0029]2、本发明对解密前后对象内容长度发生变化的对象,只需对对象号进行处理,然后把修改后的对象内容写入roF文档即可;另外本发明对对象中的间接索引对象也给出了合理的处理方法。本发明给出的对象处理方法只用关注于对象号码的处理,而不用关心一个对象中的剩余内容,易于实现。【附图说明】[0030]图1为全局密匙获取单元图。[0031]图2为PDF标题、线性化参数字典对象产生单元图。[0032]图3为交叉参考表预先生成单元图。[〇〇33]图4为对象号处理单元图。[〇〇34]图5为间接引用对象处理单元图。[〇〇35]图6为对象内容处理单元图。【具体实施方式】[〇〇36]下面结合具体实施例对本发明作进一步说明。[〇〇37]本发明所述的PDF文档恢复装置,包括:[0038]全局密匙获取单元,由加密字典对象内容提取单元、数据索引单元、彩虹表数据存储单元、密匙输出单元组成(如图1所示),该全局密匙获取单元利用彩虹表获取待解密文档的全局密匙;[0039]PDF标题、线性化参数字典对象产生单元,由标题产生单元、线性化参数字典对象产生单元、内容输出单元组成(如图2所示),该TOF标题、线性化参数字典对象产生单元用来产生标题、线性化参数字典对象内容;[0040]交叉参考表预先生成单元,由主交叉参考表生成单元、第2交叉参考表生成单元、内容输出单元组成(如图3所示),该交叉参考表预先生成单元用来产生主交叉参考表和第2交叉参考表;[0041]尾部字典产生单元,用来产生与主交叉参考表和第2交叉参考表对应的尾部字典;[〇〇42]对象号处理单元,由第1判断单元、第2判断单元、处理单元组成(如图4所示),用来完成对解密后对象号的处理;[0043]间接引用对象处理单元,由搜索单元和对象号处理单元组成(如图5所示),用来完成对当前对象中所有引用对象的对象号处理;[0044]对象内容处理单元,由第3判断单元、流内容解密单元组成(如图6所示),用来完成对对象内容类型的判断,并对流对象进行解密。[〇〇45]下面为利用上述PDF文档恢复装置实现的PDF文档恢复方法,具体情况如下:[0046]首先假设各个对象解密前后内容长度不发生变化,则可以根据解密前各个对象的起始偏移值,获得各个对象的内容长度,预先计算出解密后各个对象的起始偏移值,并形成交叉参考表,然后把交叉参考表写入PDF文件;根据获取的加密字典对象号,把待处理的各个对象的对象号同加密字典对象号进行比较,如果小于加密字典对象号,则对象号不变;如果大于加密字典对象号,则对象号减1,另外判断对象号减1后,对象号长度是否变化,如果没有发生变化,则不作处理;如果对象号长度发生变化,则在原对象号的最高位填入一个预设值,修改后的对象号填入低位。[0047]采用40比特密匙加密的TOF文档,可以利用彩虹表获取全局密匙,然后恢复出PDF文档,其具体包括以下步骤:[0048]1)利用全局密匙密匙获取单元,首先获取加密TOF文档中的加密字典对象内容,然后根据已经保存的彩虹表和索引值,获得全局密匙;[0049]2)利用PDF标题、线性化参数字典对象产生单元,产生标题和线性化参数字典,并把两部分内容写入到打开的TOF文件,同时保存已经写入数据的长度L;[0050]3)把数据长度L和加密前各个对象的起始偏移值,送入到交叉参考表预产生单元,生成第2交叉参考表和主交叉参考表,并把第2交叉参考表写入已经打开的TOF文件;[0051]4)利用尾部字典产生单元,产生与第2交叉参考表对应的尾部字典,并把尾部字典内容写入已经打开的TOF文件;[0〇52]5)从加密文档中读出第n个对象内容,获得对象n的对象号码objectNumbern,然后把对象号码〇bjectNumbern送入到对象号处理单元,第1判断单元把objectNumbern同加密字典对象号码进行比较,如果〇bjectNumbern小于,则不作任何处理;反之则objectNumbern’n=objectNumbern_l;把新对象号码objectNumbern’n送入到第2判断单元,如果满足mod(loglO(objectNumbern’n+l),1)等于0,mod表示取模运算,则需要把对象号objectNumbern’n送入到处理单元进行处理,处理方法是:在对象号码objectNumbern的最高位补0,剩余低位存放objectNumbern’n;[〇〇53]6)把第(5)步处理后的对象内容送入到间接引用对象处理单元,搜索单元完成对象n中所有间接引用对象的统计,然后依次送入到对象号处理单元,完成对象号处理;[〇〇54]7)把第(6)步处理后的对象n送入到对象内容处理单元,第3判断单元进行对象类型判断,如果对象n不是流对象,则直接写入已经打开的TOF文件;反之送入到流内容解密单元,根据获取的全局密匙、对象n的原对象号码objectNumbern、产生号码,获得流对象加密密匙,然后对流内容进行解密,并把处理后的对象n写入到已经打开的TOF文件;[0055]8)根据获得对象个数N,依次对每个对象进行(5)-(7)步的处理;[〇〇56]9)把第(3)步预先生成的主交叉参考表写入到已经打开的PDF文件中;[〇〇57]10)利用尾部字典产生单元,产生与主交叉参考表对应的尾部字典,并把尾部字典内容写入已经打开的roF文件。[0058]以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。【主权项】1.一种PDF文档恢复装置,其特征在于,包括:全局密匙获取单元,由加密字典对象内容提取单元、数据索引单元、彩虹表数据存储单元、密匙输出单元组成,该全局密匙获取单元利用彩虹表获取待解密文档的全局密匙;PDF标题、线性化参数字典对象产生单元,由标题产生单元、线性化参数字典对象产生单元、内容输出单元组成,该TOF标题、线性化参数字典对象产生单元用来产生标题、线性化参数字典对象内容;交叉参考表预先生成单元,由主交叉参考表生成单元、第2交叉参考表生成单元、内容输出单元组成,该交叉参考表预先生成单元用来产生主交叉参考表和第2交叉参考表;尾部字典产生单元,用来产生与主交叉参考表和第2交叉参考表对应的尾部字典;对象号处理单元,由第1判断单元、第2判断单元、处理单元组成,用来完成对解密后对象号的处理;间接引用对象处理单元,由搜索单元和对象号处理单元组成,用来完成对当前对象中所有引用对象的对象号处理;对象内容处理单元,由第3判断单元、流内容解密单元组成,用来完成对对象内容类型的判断,并对流对象进行解密。2.—种利用权利要求1所述PDF文档恢复装置实现的TOF文档恢复方法,其特征在于:首先假设各个对象解密前后内容长度不发生变化,则根据解密前各个对象的起始偏移值,获得各个对象的内容长度,预先计算出解密后各个对象的起始偏移值,并形成交叉参考表,然后把交叉参考表写入PDF文件;根据获取的加密字典对象号,把待处理的各个对象的对象号同加密字典对象号进行比较,如果小于加密字典对象号,则对象号不变;如果大于加密字典对象号,则对象号减1,另外判断对象号减1后,对象号长度是否变化,如果没有发生变化,则不作处理;如果对象号长度发生变化,则在原对象号的最高位填入一个预设值,修改后的对象号填入低位;其具体包括以下步骤:1)利用全局密匙密匙获取单元,首先获取加密TOF文档中的加密字典对象内容,然后根据已经保存的彩虹表和索引值,获得全局密匙;2)利用PDF标题、线性化参数字典对象产生单元,产生标题和线性化参数字典,并把两部分内容写入到打开的TOF文件,同时保存已经写入数据的长度L;3)把数据长度L和加密前各个对象的起始偏移值,送入到交叉参考表预产生单元,生成第2交叉参考表和主交叉参考表,并把第2交叉参考表写入已经打开的TOF文件;4)利用尾部字典产生单元,产生与第2交叉参考表对应的尾部字典,并把尾部字典内容写入已经打开的TOF文件;5)从加密文档中读出第n个对象内容,获得对象n的对象号码objectNumbern,然后把对象号码objectNumbern送入到对象号处理单元,第1判断单元把objectNumbern同加密字典对象号码进行比较,如果〇bjectNumbern小于,则不作任何处理;反之则objectNumbern’n=objectNumbern-l;把新对象号码objectNumbern’n送入到第2判断单元,如果满足mod(loglO(objectNumbern’n+l),1)等于0,mod表示取模运算,则需要把对象号objectNumbern’n送入到处理单元进行处理,处理方法是:在对象号码objectNumbern的最高位补0,剩余低位存放objectNumbern’n;6)把第(5)步处理后的对象内容送入到间接引用对象处理单元,搜索单元完成对象n中所有间接引用对象的统计,然后依次送入到对象号处理单元,完成对象号处理;7)把第(6)步处理后的对象n送入到对象内容处理单元,第3判断单元进行对象类型判断,如果对象n不是流对象,则直接写入已经打开的PDF文件;反之送入到流内容解密单元,根据获取的全局密匙、对象n的原对象号码objectNumbern、产生号码,获得流对象加密密匙,然后对流内容进行解密,并把处理后的对象n写入到已经打开的TOF文件;8)根据获得对象个数N,依次对每个对象进行(5)-(7)步的处理;9)把第(3)步预先生成的主交叉参考表写入到已经打开的PDF文件中;10)利用尾部字典产生单元,产生与主交叉参考表对应的尾部字典,并把尾部字典内容写入已经打开的TOF文件。【文档编号】G06F21/60GK105956477SQ201610246757【公开日】2016年9月21日【申请日】2016年4月20日【发明人】黄晓光【申请人】广州慧睿思通信息科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1