[发明专利]一种数据过滤方法及装置有效
申请号: | 202110566822.6 | 申请日: | 2021-05-24 |
公开(公告)号: | CN113220953B | 公开(公告)日: | 2022-08-23 |
发明(设计)人: | 张冬波 | 申请(专利权)人: | 北京安盟信息技术股份有限公司 |
主分类号: | G06F16/9035 | 分类号: | G06F16/9035;G06F21/62;G06F16/13;G06F3/06 |
代理公司: | 北京冠榆知识产权代理事务所(特殊普通合伙) 11666 | 代理人: | 王道川 |
地址: | 100085 北京市海淀区上地*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据 过滤 方法 装置 | ||
1.一种数据过滤方法,其特征在于,利用嵌入式Linux内核对文件系统类型为FAT32格式或exFAT格式的真实USB存储设备中的数据进行过滤,具体包括如下步骤:
1)通过将真实USB存储设备中的FAT32文件系统或exFAT文件系统的磁盘分区挂载到Linux系统内并形成规则数据;规则数据通过如下步骤形成:
1.1)在Linux系统内创建目录mnt且目录mnt为空目录,并将真实USB存储设备中的FAT32文件系统或exFAT文件系统的磁盘分区挂载到目录mnt上;
1.2)执行杀毒软件或关键字过滤软件对目录mnt内的文件进行遍历分析,同时记录风险文件的路径并形成风险文件记录;
1.3)遍历步骤1.2)中形成的风险文件记录,并根据步骤1.2)中记录的风险文件的路径依次打开风险文件以及该风险文件的各级父目录,调用fcntl函数获取该风险文件的扇区号以及该风险文件各级父目录的扇区号;fcntl函数为增加了F_GET_DISK_SECTOR命令的fcntl函数,通过调用fcntl函数获取风险文件的扇区号以及该风险文件各级父目录的扇区号的具体方法为:其中,fcntl函数中的F_GET_DISK_SECTOR命令先获取风险文件或与该风险文件相关的目录的file inode,然后调用bmap(file inode,0)获取扇区号,并将返回值拷贝到用户态;
1.4)合并各个风险文件的各级父目录,形成规则数据;规则数据的格式如下:
[目录扇区号] [子目录1扇区号] [文件1扇区号] [文件2扇区号] [0xffffffff结束标记]和[子目录1扇区号] [文件1扇区号] [文件2扇区号] [0xffffffff结束标记];
2)对规则数据的文件系统格式进行判别,具体步骤为:
2.1)调用filp_open打开真实USB存储设备中的磁盘分区文件,通过调用kernel_read读取512字节的文件系统的DBR信息;
2.2)根据DBR信息判断文件系统是否为FAT32格式或exFAT格式,如果文件系统是FAT32格式,则通过调用fat_boot_sector结构体指针,提取文件系统参数,如果文件系统是exFAT格式,则通过调用boot_sector结构体指针,提取文件系统参数,文件系统参数包括扇区大小、FAT表起始扇区、FAT表大小和数据起始扇区;
2.3)根据FAT表起始扇区和FAT表大小,调用kernel_read将FAT表读取到内存中;
2.4)解析通过ioctl接收到的规则数据,为每个目录自定义一个用以表示该目录的结构体,该结构体内部成员至少包括该目录第一个扇区值和规则数据中该目录下所有文件的第一个扇区值的列表;然后将该目录的扇区号作为key、该结构体作为value插入结构体扇区基数树,将该目录下文件的扇区号作为key、该结构体作为value插入到文件扇区基数树;并将该目录下文件的扇区号加入到该结构体的成员变量中;如果目录文件的大小超过1簇,则遍历缓存的FAT表,将该目录文件所有簇的第1个扇区的值加入到结构体扇区基数树;
2.5)在f_mass_storage模块的do_read函数返回之前增加过滤函数filter_bh_plugin,用于将读取的真实USB存储设备中的磁盘数据传入过滤模块处理,然后再返回给目标主机;
2.6)启动f_mass_storage模块模拟真实USB存储设备;
3)根据进行文件系统格式判别后的规则数据进行对应的数据过滤,具体步骤如下:
3.1)当f_mass_storage模块调用filter_bh_plugin过滤函数时,在真实USB存储设备中的磁盘数据读取传入后,先判断当前所读取的数据的扇区号是根目录起始扇区的扇区号还是目录文件簇下的一个扇区的扇区号,如果当前所读取的数据的扇区号不是根目录起始扇区的扇区号与目录文件簇下的一个扇区的扇区号中的任意一种,表示当前所读取的数据为数据区数据,则直接退出过滤函数;如果当前所读取的数据的扇区号是根目录起始扇区的扇区号与目录文件簇下的一个扇区的扇区号中的任意一种,表示当前所读取的数据为目录文件内容,则进入下一步处理;
3.2)当目标主机读取的是目录文件内容时,根据规则数据对风险文件的目录项进行修改,实现对风险文件的隐藏;
3.3)在结构体扇区基数树和文件扇区基数树中查找是否有该扇区号作为key的结构体,如果没有,则使用临时变量作为结构体指针;
3.4)如果文件系统为FAT32格式,将从真实USB存储设备中读取到的数据地址赋值给msdos_dir_entry目录项指针,然后遍历msdos_dir_entry目录项指针,跳过attr为ATTR_EXT和ATTR_DIR的目录项以及跳过name[0]为0xE5的目录项,其中,ATTR_EXT为长目录项,ATTR_DIR为子目录项,0xE5为已删除目录项;如果文件系统为exFAT格式,将从真实USB存储设备中读取到的数据地址赋值给exfat_dentry目录项指针,然后遍历exfat_dentry目录项指针,跳过type不为0x85的File Directory Entry目录项和跳过file.attr置位为0x10的File Directory Entry目录项;
3.5)如果文件系统为FAT32格式,经过步骤3.4)遍历检查,从真实USB存储设备中读取的数据中剩下的目录项则都是文件的短目录项,从目录项中提取文件起始簇ID,并将该簇ID转换成扇区号,然后判断该扇区号是否在结构体的文件扇区号列表中,根据该判断的命中结果并结合预先设置好的黑/白名单模式,得出是否要隐藏该文件;如果文件系统为exFAT格式,经过步骤3.4)遍历检查,从真实USB存储设备中读取的数据中剩下的目录项则都是文件的File Directory Entry目录项,从Stream Extension Directory Entry目录项中提取文件起始簇ID,并将该簇ID转换成扇区号,然后判断该扇区号是否在结构体的文件扇区号列表中,根据该判断的命中结果并结合预先设置好的黑/白名单模式,得出是否要隐藏该文件,其中,Stream Extension Directory Entry目录项的地址为File DirectoryEntry目录项指针+1;
3.6)如果文件系统为FAT32格式,对于要隐藏的文件,则修改此文件的短目录项,将该文件的attr成员的值修改为ATTR_EXT;如果文件系统为exFAT格式,对于要隐藏的文件,则修改该文件的File Directory Entry目录项,将该目录项的type成员的值修改为EXFAT_INVAL,然后重新计算该目录项的file.checksum成员值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京安盟信息技术股份有限公司,未经北京安盟信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110566822.6/1.html,转载请声明来源钻瓜专利网。
- 上一篇:用于确定挡位转速的方法、处理器及工程机械
- 下一篇:一种防水智能手表
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置