一种 IM 删除信息的恢复方法

技术领域

  本技术属于信息安全与计算机应用技术领域,涉及一种 IM 删除信息的恢复方法。


背景技术

  采用复合文件作为存储结构的 IM 删除信息的恢复,目前国内研究比较少,较为完整 的 技 术 文 档 和 相 关 专 利 也 较 少 。 目 前 市 场 上 已 有 I M 删 除 信 息 恢 复 的 软 件 ,但 是 局 限 性 很大,而且目前没有发现 IM 删除信息恢复相关公开的技术文档或专利。SafeAnalyzer 是一款具备 IM 删除信息恢复的软件,但是由于对存储 IM 信息的复合文件中的未使用空间挖掘不充分,导致只能恢复出部分的 IM 删除信息。

 

  IM 删除信息恢复,主要依赖于复合文件中未使用空间的获取和 IM 数据特征的搜索。目前已有的技术,对未分配空间的挖掘只限于文件残留区和复合文件中空闲空间(即标志为 -1 的块)。由于,在很多情况下 IM 信息被删除后,数据并没有流入到文件残留区或者空闲空间中,因此采用传统的恢复方法往往恢复效果不尽人意。
[0004] 我们在研究了复合文件格式的基础上,提出了一种采用复合文件作为存储结构的IM 删除信息的恢复方法。该方法采用全局标识的方法,尽最大可能的获取了复合文件中未使用空间并进行 IM 删除信息恢复,从而使 IM 删除信息的恢复更加完整和准确。


内容

删除的 IM 信息数据主要流入到复合文件的三个地方 :空闲扇区、文件残留区、无目录结构对应的扇区 ;

所述未使用空间数据的获取方法由以下几个步骤实现 :

a) 预处理:解析复合文件的头部结构,并获取长扇区分配表SAT、短扇区分配表SSAT、以及长扇区的长度 LSectorSize 和短扇区长度 LSectorSize,并用 N=LSectorSize/LSectorSize 表示长扇区长度是短扇区长度的多少倍,解析目录流结构,获取复合文件中各个文件的对应的扇区链 ;

b) 空闲扇区的获取:空闲空间为扇区表中value-1所对应的扇区,因此获取空闲空间的步骤为 :遍历整个扇区表,将扇区表中 value -1 对应的扇区的数据放入到pUnusedBuffer ;

c) 文件残留区的获取;遍历复合文件里面包含的所有文件,如果发现sectorsize*n> filesize,则将该文件从偏移 filesize 到偏移 sectorsize*n 区间所包含的数据加入到pUnusedBuffer 中 ;

d) 无目录结构对应的扇区的获取:在扇区表中,有一些扇区链没有被文件指向,这些

链对应的扇区就是无目录结构的扇区,在某些情况下,当一些 IM 信息被删除时,只是清空相应的目录结构,扇区表中的扇区链并没有清空,为了获取这些扇区的信息,采用全局标记的方法进行获取 ;

所述从未使用空间中恢复删除数据的方法由以下几个步骤实现 :

A) 删除聊天记录的恢复 : 确定所获取的 pUnusedBuffer 数据中是否包含正常的聊天记录需要以下步骤 :

1 )、初 步 判 断 : 根 据 聊 天 记 录 的 格 式 ,判 断 总 长 度 是 否 等 于“ 0 x 1 4 + 4 + d w B l o c k L e n 1 + 4 + dwBlockLen2”;

2)、再次确认 : 对第二部分的数据进行解密,判断是否解密成功,并判断解密后的头 8个字节为 0x4d,0x53,0x47,0x00,0x00,0x00,0x00,0x00 ;

1 )、2 ) 步 骤 都 判 断 为 是 聊 天 记 录 的 格 式 是 就 开 始 按 聊 天 记 录 的 格 式 去 解 析 ,解 析 完可进一步判断聊天记录是好友、群还是讨论组,具体做法为,根据第三部分数据解出来的字段名和值的集合,在集合中查找 " 接收者帐号 ID" 对应的值进行判断,通过分析正常聊天记录的数据可知,群 / 讨论组中的聊天记录的接收者帐号为群 / 讨论组的 ID 号,因此可在解析正常记录时记录所有群 / 讨论组 ID 的集合,通过判断接收者帐号是否在这个集合中来确定是否是群 / 讨论组中的聊天记录,如果不是群 / 讨论组的聊天记录,则根据对方的 IM 帐号ID进行分组;

B) 删除好友//讨论组信息记录的恢复: 由于好友//讨论组的信息保存在Info.db 文件中,且 Info.db 中的数据大部分是有 "ES" 标识的加密数据,所以通过解密"ES" 数据块进行判断。首先对数据块的类型和长度进行初步过滤,以免大量解密操作导致效率较慢,并对数据块的数据进行解密,如果解密成功,且数据是一条 TD 数据块,则初步判断为一条正常的记录 ;

当解析成功时可进一步判断该信息是属于好友、群还是讨论组的。具体做法为,对解密出来的 TD 数据块解析,可得到一组字段名和组的集合,可以通过判断是否同时存在一组字段来确定属于什么类型 ;其中群成员信息存在 " 群身份标识 " 字段 , 群信息同时存在 " 群标识""群名称"字段,讨论组及成员信息同时存在"讨论组ID""讨论组名称"字段,好友个人信息同时存在 " 帐号 ID" " 性别 " 字段。
[0007] 作为优选,所述全局标记的方法进行获取,其具体操作由以下几个步骤组成 :

1)、将整个复合文件分成一块一块的,每块的大小为 SSectorSize,即每块的大小为短扇区的大小 ;

2)、遍历长扇区表,对于扇区表第 i 个位置的 value 如果为 -1 或者 -2 或者 -3 或者 -4的话,则标记第 i*N+N~i*N+N 的块为被使用 ;

3)、从复合文件头部获取目录流在扇区表中的起始 ID,并获取相应的扇区链。根据获取到的扇区链,针对扇区链中得每个节点将相应的块标记为被使用。具体做法为对于该扇区链中的每个节点 j,将 j*N+N~j*N+2N 的块标志为被使用 ;

4)、遍历复合文件中包含的所有文件得到每个文件对应的扇区链,根据获取到的扇区链,将相应的块标记位被使用,如果获取到的扇区链为短扇区链,则对于该扇区链中得每

个节点 j ,获取到该短扇区所在的长扇区位置 i,以及偏移 k( k N-1),并标记第i*N+N+k 块为被使用,

5)、遍历所有的块,将没有被标记为被使用的块所对应的数据加入到 pUnusedBuffer


本发明
IM 删除信息的恢复方法的有益效果是 :本发明提出了一种 IM 删除信息的恢复

方法,该方法通过全局标识方法,充分的挖掘了复合文件中的未使用空间并采用 IM 数据特征搜索方法进行删除信息恢复。与现有的 IM 删除信息恢复软件相比该方法具有恢复准确度高、恢复信息全面的特点,通过该方法进行 IM 删除信息在最大程度上保证了删除信息能被恢复出来。为其他采用复合文件结构作为存储结构的文件的数据恢复提供了一种重要的思路,将广泛应用于相关数据删除、数据解析领域。

具体实施方式

  删除的 IM 信息数据主要流入到复合文件的三个地方 :空闲扇区、文件残留区、无目录结构对应的扇区 ;

  所述未使用空间数据的获取由以下几个步骤实现 :

a) 预处理:解析复合文件的头部结构,并获取长扇区分配表SAT、短扇区分配表SSAT、以及长扇区的长度 LSectorSize 和短扇区长度 SSectorSize,并用 N=LSectorSize/LSectorSize 表示长扇区长度是短扇区长度的多少倍,解析目录流结构,获取复合文件中各个文件的对应的扇区链 ;

b) 空闲扇区的获取:空闲空间为扇区表中value-1所对应的扇区,因此获取空闲空间的步骤为 :遍历整个扇区表,将扇区表中 value -1 对应的扇区的数据放入到pUnusedBuffer ;相应的流程图如图 2 所示 ;

c) 文件残留区的获取;遍历复合文件里面包含的所有文件,如果发现sectorsize*n> filesize,则将该文件从偏移 filesize 到偏移 sectorsize*n 区间所包含的数据加入到pUnusedBuffer 中 ;相应的流程图如图 2 所示 ;

d) 无目录结构对应的扇区的获取:在扇区表中,有一些扇区链没有被文件指向,这些链对应的扇区就是无目录结构的扇区,在某些情况下,当一些 IM 信息被删除时,只是清空

相应的目录结构,扇区表中的扇区链并没有清空,为了获取这些扇区的信息,采用全局标记的方法进行获取 ;本过程对应的流程图如图 3 所示 ;

所述从未使用空间中恢复删除数据由以下几个步骤实现 :

A) 删除聊天记录的恢复 : 确定所获取的 pUnusedBuffer 数据中是否包含正常的聊天记录需要以下步骤 :

1)、初步判断 : 根据聊天记录的格式,判断总长度是否等于“0x14( 第一部分长度 )+4( 第二部分数据长度 )+dwBlockLen1( 第二部分数据 )+4( 第三部分数据长度)+dwBlockLen2(第三部分数据)”;

2)、再次确认 : 对第二部分的数据进行解密,判断是否解密成功,并判断解密后的头 8个字节为 0x4d,0x53,0x47,0x00,0x00,0x00,0x00,0x00 ;

1 )、2 ) 步 骤 都 判 断 为 是 聊 天 记 录 的 格 式 是 就 开 始 按 聊 天 记 录 的 格 式 去 解 析 ,解 析 完可进一步判断聊天记录是好友、群还是讨论组,具体做法为,根据第三部分数据解出来的字段名和值的集合,在集合中查找 " 接收者帐号 ID" 对应的值进行判断,通过分析正常聊天记录的数据可知,群 / 讨论组中的聊天记录的接收者帐号为群 / 讨论组的 ID 号,因此可在解析正常记录时记录所有群 / 讨论组 ID 的集合,通过判断接收者帐号是否在这个集合中来确定是否是群 / 讨论组中的聊天记录,如果不是群 / 讨论组的聊天记录,则根据对方的 IM 帐号 ID 进行分组 ;删除聊天记录的恢复流程图如图 5 所示 ;

B) 删除好友//讨论组信息记录的恢复: 由于好友//讨论组的信息保存在 Info.db 文件中,且 Info.db 中的数据大部分是有 "ES" 标识的加密数据,所以通过解密 "ES" 数据块进行判断。首先对数据块的类型 ( 只处理 0x02 0x01) 和长度 ( 不大于0x10000) 进行初步过滤,以免大量解密操作导致效率较慢,并对数据块的数据进行解密,如果解密成功,且数据是一条 TD 数据块,则初步判断为一条正常的记录 ;

当解析成功时可进一步判断该信息是属于好友、群还是讨论组的。具体做法为,对解密出来的 TD 数据块解析,可得到一组字段名和组的集合,可以通过判断是否同时存在一组字段来确定属于什么类型 ;其中群成员信息存在 " 群身份标识 " 字段 , 群信息同时存在 " 群标识""群名称"字段,讨论组及成员信息同时存在"讨论组ID""讨论组名称"字段,好友个人信息同时存在 " 帐号 ID" " 性别 " 字段 ;删除好友 / / 讨论组信息记录的恢复恢复流程图如图 5 所示 ;

其中,所述全局标记的方法进行获取,其具体操作由以下几个步骤组成 :

1)、将整个复合文件分成一块一块的,每块的大小为 SSectorSize,即每块的大小为短扇区的大小 ;

2)、遍历长扇区表,对于扇区表第 个位置的value如果为-1或者-2或者-3或者-4的话,则标记第 i*N+N~i*N+N 的块为被使用 ;

3)、从复合文件头部获取目录流在扇区表中的起始 ID,并获取相应的扇区链。根据获取到的扇区链,针对扇区链中得每个节点将相应的块标记为被使用。具体做法为对于该扇区链中的每个节点 j(j 表示该节点在长扇区表中的位置 ),将 j*N+N~j*N+2N 的块标志为被使用;

4)、遍历复合文件中包含的所有文件得到每个文件对应的扇区链,根据获取到的扇区链,将相应的块标记位被使用,如果获取到的扇区链为短扇区链,则对于该扇区链中得每个

节点j(j表示该节点在长扇区表中的位置) ,获取到该短扇区所在的长扇区位置i,以及

偏移 k( k N-1),并标记第 i*N+N+k 块为被使用,5)、遍历所有的块,将没有被标记为被使用的块所对应的数据加入到 pUnusedBuffer

中。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值