一种独占文件的获取方法和系统的制作方法

文档序号:9489452阅读:422来源:国知局
一种独占文件的获取方法和系统的制作方法
【技术领域】
[0001] 本发明涉及计算机信息安全技术领域,尤其涉及一种独占文件的获取方法和系 统。
【背景技术】
[0002] 正常情况下,文件系统不允许独占文件被重复打开,因此无法获取独占文件的属 性和内容数据。但是,出于某些需求,信息安全系统需要对这些独占文件的内容进行审计等 操作,因此,需要获取相应的独占文件。
[0003] 现有技术中,独占文件的获取方式主要有以下三种,具体如下:
[0004] 1)句柄复制方式:如果文件被进程A独占,先在进程A中使用用于查询关于系统 内核状态信息的ZwQuerySystemlnformationO函数来枚举句柄(HANDLE),若是独占文件, 调用复制句柄函数Dup1icateHand1e()将句柄复制到控制进程,此时可在控制进程中进 行读取操作。此方式缺陷比较明显:首先必须知道文件被哪个进程独占;其次使用了较多 Windows未公开的内部结构(如HANDLE结构),影响了兼容性;另外某些被System进程独 占的文件(如注册表文件)仍然无法获取。
[0005] 2)借助微软公开的用于获取文件在磁盘上的分配图的函数FSCTL_GET_ RETRIEVAL_POINTERS,获取文件在磁盘上,占用的簇位置分布,然后利用磁盘直接读写获取 文件数据。此方式和我们目前实现相近,缺陷如下:首先,对于NTFS(NewTechnologyFile System,WindowsNT环境的文件系统)下小于IK的文件,数据一般直接存储在MFT(Master FileTable,主文件表)文件记录中,不存在簇分配,因此无法获取;其次,必须使用读属 性函数FILE_READ_ATTRIBUTES方式打开文件,下发FSCTL_GET_RETRIEVAL_POINTERS类型 I0CTL。这些过程,容易受制于某些安全软件,导致文件获取失败。
[0006] 3)其他一些针对文件对象操作的驱动方式,由于稳定性以及兼容性的原因,一般 不做考虑。
[0007] 综上,如何提供一种兼容性好、准确性高且可以有效避免第三方安全设施干扰的 独占文件的获取的方法和系统,成为目前急需解决的问题之一,具有重要意义。

【发明内容】

[0008] 鉴于上述技术问题,本发明提供一种独占文件的获取的方法和系统,以实现独占 文件属性和内容的有效、快速获取,避免现有技术中的兼容问题,提高数据获取的准确性和 安全性。
[0009] 根据本发明的一个方面,提供了一种独占文件的获取方法,该方法包括:
[0010] 解析磁盘文件系统结构,获取独占文件在磁盘上对应的簇编号列表;
[0011] 采用RAW分区读取方式,获取所述簇编号列表中各文件簇对应的物理磁盘扇区;
[0012] 采用ReadFile函数依次读取所述簇编号列表中各文件簇对应的物理磁盘扇区, 获取各文件簇中的数据块,并写入预设文件。
[0013] 其中,对于FAT32文件系统,所述解析磁盘文件系统结构,获取独占文件在磁盘上 对应的簇编号列表,具体包括:
[0014] 解析FAT32文件系统的磁盘分区引导记录DBR和文件分配表,获取根目录文件;
[0015] 解析所述根目录文件,获取独占文件在磁盘上对应的第一文件索引项;
[0016] 从所述第一文件索引项中获取独占文件的起始文件簇在所述文件分配表中的编 号;
[0017] 根据所述起始文件簇在所述文件分配表中的编号,获取独占文件在磁盘上对应的 簇编号列表。
[0018] 其中,对于NTFS文件系统,所述解析磁盘文件系统结构,获取独占文件在磁盘上 对应的簇编号列表,具体包括:
[0019] 解析NTFS文件系统的磁盘分区引导记录DBR和主文件表,获取根目录文件;
[0020] 解析所述根目录文件,获取独占文件在磁盘上对应的第二文件索引项;
[0021] 从所述第二文件索引项中获取独占文件的文件记录在主文件表中的编号;
[0022] 根据所述文件记录在主文件表中的编号,获取独占文件在磁盘上对应的簇编号列 表。
[0023] 其中,所述获取独占文件在磁盘上对应的第一文件索引项,具体为:
[0024] 采用二分法获取独占文件在磁盘上对应的第一文件索引项。
[0025] 其中,所述获取独占文件在磁盘上对应的第二文件索引项,具体为:
[0026] 采用B+树算法获取独占文件在磁盘上对应的第二文件索引项。
[0027] 其中,所述采用ReadFile函数依次读取所述簇编号列表中各文件簇对应的物理 磁盘扇区,获取各文件簇中的数据块,并写入预设文件,具体包括:
[0028] 将各文件簇中的数据块按照文件簇的读取顺序进行组合,得到独占文件组合数 据;
[0029] 根据独占文件的大小属性,将所述独占文件组合数据的尾部数据截除,得到独占 文件的文件数据;
[0030] 将所述独占文件的文件数据写入所述预设文件。
[0031] 其中,所述方法还包括:
[0032] 对于NTFS文件系统,当独占文件的文件数据小于1K时,读取主文件表对应的文件 记录,获取独占文件的文件数据。
[0033] 根据本发明的另一个方面,提供了一种独占文件的获取系统,该系统包括:
[0034] 解析模块,用于解析磁盘文件系统结构,获取独占文件在磁盘上对应的簇编号列 表;
[0035] 第一获取模块,用于采用RAW分区读取方式,获取所述簇编号列表中各文件簇对 应的物理磁盘扇区;
[0036] 第二获取模块,用于采用ReadFile函数依次读取所述簇编号列表中各文件簇对 应的物理磁盘扇区,获取各文件簇中的数据块,并写入预设文件。
[0037] 其中,所述解析模块包括:
[0038] 第一解析单元,用于解析FAT32文件系统的磁盘分区引导记录DBR和文件分配表, 获取根目录文件;
[0039] 第二解析单元,用于解析所述根目录文件,获取独占文件在磁盘上对应的第一文 件索引项;
[0040] 第一编号获取单元,用于从所述第一文件索引项中获取独占文件的起始文件簇在 所述文件分配表中的编号;
[0041] 第一列表获取单元,用于根据所述起始文件簇在所述文件分配表中的编号,确定 独占文件在磁盘上对应的簇编号列表。
[0042] 其中,所述解析模块包括:
[0043] 第三解析单元,用于解析NTFS文件系统的磁盘分区引导记录DBR和主文件表,获 取根目录文件;
[0044] 第四解析单元,用于解析所述根目录文件,获取独占文件在磁盘上对应的第二文 件索引项;
[0045] 第二编号获取单元,用于从所述第二文件索引项中获取独占文件的文件记录在主 文件表中的编号;
[0046] 第二列表获取单元,用于根据所述文件记录在主文件表中的编号,获取独占文件 在磁盘上对应的簇编号列表。
[0047] 其中,所述第二获取模块包括:
[0048] 数据组合单元,用于将各文件簇中的数据块按照文件簇的读取顺序进行组合,得 到独占文件组合数据;
[0049] 数据处理单元,用于根据独占文件的大小属性,将所述独占文件组合数据的尾部 数据截除,得到独占文件的文件数据;
[0050] 数据拷贝单元,用于将所述独占文件的文件数据写入所述预设文件。
[0051] 其中,所述第二获取模块,还用于若当前文件系统为NTFS文件系统,且独占文件 的文件数据小于1K时,读取主文件表对应的文件记录,获取独占文件的文件数据。
[0052] 本
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1