专利名称:文件检测系统的制作方法
技术领域:
本发明实施例涉及扫描技术领域,具体涉及一种文件检测系统。
背景技术:
随着计算机的普及,服务端和用户端都需要对计算机内的文件进行扫描从而及时发现病毒等恶意软件。但是在进行扫描的时候,需要大量的CPU运算和磁盘操作,扫描过程漫长而且影响系统的速度。在这些扫描的文件中,有许多文件都是相同的,例如Windows的文件、帮助文件、压缩文件和很多软件的安装包文件等。目前现有技术中对上述具有相同特征的文件进行扫描时,第一次会全盘扫描计算机内所有的文件,并且会扫描文件的所有内容,因此对于包括内容比较多的文件,其扫描的时耗费的时间相当长,占用的资源也相当多,从而导致第一次扫描的时间非常长。而第一次扫描之后的再次扫描也需要重新获取这些特征,以至于扫描速度仍然很慢。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种文件检测系统。根据本发明,提供了一种文件检测系统,其包括主界面模块,适于对封装模块发起文件扫描操作,并指定待扫描文件;封装模块,适于调用扫描模块;扫描模块,适于扫描待扫描文件并调用数据库操作模块获取所述待扫描文件的特征信息;数据库操作模块,适于读取所述待扫描文件的特征信息;其中,所述扫描模块包括属性获取模块,适于获取待扫描文件的当前属性信息;判断模块,适于访问本地缓存数据库,判断本地缓存数据库中是否存在待扫描文件的已扫描特征信息;若存在,则解析已扫描特征信息得到已扫描属性信息,并判断已扫描属性信息与当前属性信息是否一致;读取模块,适于当已扫描属性信息与当前属性信息一致时,读取已扫描特征信息作为待扫描文件的当前特征信息;计算模块,适于当已扫描属性信息与当前属性信息不一致时,通过当前属性信息计算待扫描文件的当前特征信息,并存入本地缓存数据库作为下次扫描的已扫描特征信
肩、O本发明实施例中,计算模块还适于当本地缓存数据库中不存在待扫描文件的已扫描特征信息时,通过当前属性信息计算待扫描文件的当前特征信息,并存入本地缓存数据库作为下次扫描的已扫描特征信息。本发明实施例中,所述扫描模块还包括监控模块,适于监控待扫描文件,当待扫描文件进行修改操作时,对本地缓存数据库中待扫描文件的已扫描特征信息设置无效标
O本发明实施例中,判断模块还适于读取已扫描特征信息作为待扫描文件的当前特征信息之前,判断待扫描文件的已扫描特征信息是否包含无效标志;读取模块还适于待扫描文件的已扫描特征信息不包含无效标志时,读取已扫描特征信息作为待扫描文件的当前特征信息;计算模块还适于待扫描文件的已扫描特征信息包含无效标志时,通过当前属性信息计算待扫描文件的当前特征信息,并存入本地缓存数据库作为下次扫描的已扫描特征信
肩、O本发明实施例中,属性获取模块包括路径读取子模块,适于读取待扫描文件的路径;信息获取子模块,适于根据待扫描文件的路径获取待扫描文件的当前属性信息。本发明实施例中,待扫描文件的当前属性信息包括文件的大小、文件的最后修改时间和文件的创建时间;待扫描文件的已扫描特征信息包括属性信息和特征值,特征值通过属性信息计算得到。本发明实施例中,还包括驱动模块,适于监控所述待扫描文件,当所述待扫描文件进行修改操作时,将包含所述待扫描文件进行的修改操作的文件修改消息发送至所述消息服务模块;消息服务模块,适于接收所述驱动模块发送的文件修改消息,并将所述文件修改消息发送至所述数据库操作模块;所述数据库操作模块,还适于接收所述消息服务模块发送的文件修改消息,并依据所述文件修改消息对该文件对应的数据库文件设置无效标志。与现有技术相比,本发明包括以下优点首先,本发明实施例通过访问本地缓存数据库,判断所述本地缓存数据库中是否存在所述待扫描文件的已扫描特征信息,在本地缓存数据库中存在待扫描文件的已扫描特征信息且与当前属性信息一致时,直接读取缓存数据库中的已扫描特征信息作为所述待扫描文件的当前特征信息,而不需要再次通过当前属性信息计算当前特征信息,从而可以减少再次扫描时获取同一文件特征的时间,大大提高了文件扫描的速度,节约了系统资源。其次,本发明实施例即使本地缓存数据库中不存在待扫描文件的已扫描特征信息或者在本地缓存数据库中存在待扫描文件的已扫描特征信息且与当前属性信息不一致时,在本次扫描的时候通过当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息,这样对该文件进行再次扫描的时候,就可以直接从缓存数据库中找到该文件的特征信息了,可以加速再次扫描的进度。最后,本发明实施例监控所述待扫描文件,当所述待扫描文件进行修改操作时,对所述本地缓存数据库中待扫描文件的已扫描特征信息设置无效标志。也就是说,一旦文件发生了修改操作,例如,写操作、或者属性进行了修改,就对本地缓存数据库中存储的待扫描文件的已扫描特征信息设置一个无效标志,代表该已扫描特征信息已经失效,下次进行扫描的时候,需要通过所述当前属性信息重新计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。避免了文件内容发生变化而文件的大小相同,且文件的最后修改时间及文件的创建时间也改为相同的情况下,如果只判断已扫描属性信息与当前属性信息一致,就直接读取缓存数据库中的已扫描特征信息作为所述待扫描文件的当前特征信息的错误操作。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式
。
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中图1示出了根据本发明一个实施例的一种文件扫描方法的流程图;图2示出了根据本发明一个实施例的另一种文件扫描方法的流程图;图3示出了根据本发明一个实施例的一种文件扫描装置的结构框图;图4示出了根据本发明一个实施例的另一种文件扫描装置的结构框图;图5示出了根据本发明一个实施例的一种文件检测系统的结构框图。
具体实施例方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。本发明实施例可以应用到木马云查杀的扫描引擎中,该引擎可以结合安全相关的产品使用,包括杀毒软件,主动防御系统和其他的利用服务器查杀相关软件中。本发明实施例可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统、大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。实施例一参照图1,示出了本发明实施例的一种文件扫描方法的流程图,本实施例具体可以包括以下步骤
SIOI,获取待扫描文件的当前属性信息。本实施例中所述获取待扫描文件的当前属性信息包括读取待扫描文件的路径;根据所述待扫描文件的路径获取待扫描文件的当前属性信息。具体地,首先可以通过遍历待扫描文件目录,从所述待扫描文件目录中提取待扫描文件的路径;其次可以通过待扫描文件的路径找到待扫描文件;最后读取待扫描文件的当前属性信息。本实施例中待扫描文件的当前属性信息包括文件的大小、文件的最后修改时间和文件的创建时间。例如,待扫描文件的路径为C: \program files\msn gaming zone\windows\rvsezm. exe,依据此路径,就可以从C盘中找到待扫描文件rvsezm. exe,然后读取待扫描文件的当前属性信息,具体包括文件的大小41. 5KB、文件的最后修改时间2009年8月10日,10:11:21和/或文件的创建时间:2004年8月17日,20:00:00。S102,访问本地缓存数据库。本地缓存数据库中中保存有已扫描文件的特征信息,具体的,所述特征信息包括属性信息和特征值,属性信息包括上述文件的大小、文件的最后修改时间和文件的创建时间,特征值通过属性信息计算得到,例如通过文件的大小、文件的最后修改时间和文件的创建时间计算出全文信息-摘要算法(MD5,message_digest algorithm 5),全文安全哈希算法(SHA1, Secure Hash Algorithm)等特征值。本实施例中可以根据所述待扫描文件的路径生成键值,并依据所述键值访问本地缓存数据库;其中,所述本地缓存数据库以键值为访问索引。需要说明的是,在文件扫描过程中,获取特征值是非常重要的一步。之后需要根据所述特征值判断文件的安全级别。S103,判断所述本地缓存数据库中是否存在所述待扫描文件的已扫描特征信息。依据步骤S102中的描述,本地缓存数据库中保存有已扫描文件的特征信息,在本实施例中已扫描文件的含义是之前进行过扫描,对于待扫描文件来说,其也有可能在此次扫描之前进行过扫描,对于此次扫描而言该文件为待扫描文件,对于下次扫描而言该文件为已扫描文件。在步骤S103中需要判断本地缓存数据库中是否存在该待扫描文件的已扫描特征信息,如果本地缓存数据库中存在该待扫描文件的已扫描特征信息,说明该文件在此次扫描之前进行过扫描,此次扫描为再次扫描,执行步骤S104解析所述已扫描特征信息得到已扫描属性信息;如果本地缓存数据库中不存在该待扫描文件的已扫描特征信息,说明该待扫描文件在此次扫描之前没有进行过扫描,此次扫描为第一次扫描,执行步骤S107通过所述当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。这样第一次扫描的文件计算得到的特征信息就作为已扫描特征信息存储到缓存数据库中了,该文件进行再次扫描的时候,就可以从缓存数据库中找到该文件的已扫描特征信息了。S104,当本地缓存数据库中存在所述待扫描文件的已扫描特征信息时,解析所述已扫描特征信息得到已扫描属性信息。特征信息包含属性信息和特征值,在步骤S104中解析已扫描特征信息就可以得到已扫描属性信息,也就是文件的大小、文件的最后修改时间和文件的创建时间,这些已扫描属性信息是存储在缓存数据库中的。S105,判断所述已扫描属性信息与所述当前属性信息是否一致,若一致,执行步骤S106,若不一致,则执行步骤S107。将步骤SlOl中获取的待扫描文件的当前属性信息和步骤S104中得到的已扫描属性信息进行比对,判断上述当前属性信息和已扫描属性信息是否一致,具体地,判断上述当前属性信息和已扫描属性信息包含的文件的大小是否一致、文件的最后修改时间是否一致、文件的创建时间是否一致。只有上述文件的大小、文件的最后修改时间和文件的创建时间三者都一致,才判定已扫描属性信息与当前属性信息一致,只要上述三者有一者不一致,都判定已扫描属性信息与当前属性信息不一致。S106,读取所述已扫描特征信息作为所述待扫描文件的当前特征信息。举例来说扫描A. exe文件并获取全文MD5。第一次扫描时,需完整读取A. exe的内容,然后计算出A. exe文件内容的MD5,并存入数据库。第二次扫描时,如果A. exe的文件大小、文件最后修改时间、文件创建时间没有变化,且文件没有发生过写操作,那么直接从数据库中获取A. exe的MD5值。当所述已扫描属性信息与所述当前属性信息一致的时候,直接读取缓存数据库中的已扫描特征信息作为所述待扫描文件的当前特征信息,而不需要再通过当前属性信息重新进行特征值的计算,节省了获取特征值的时间,从而节省了文件扫描所需的时间,进而加速了文件扫描的速度。S107,通过所述当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。当所述已扫描属性信息与所述当前属性信息不一致的时候,说明该文件很有可能进行了修改,因此不能直接读取缓存数据库中的已扫描特征信息作为所述待扫描文件的当前特征信息,而需要通过所述当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。当然,如果步骤S103中判断本地缓存数据库中不存在所述待扫描文件的已扫描特征信息,也需要通过所述当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。首先,本实施例通过访问本地缓存数据库,判断所述本地缓存数据库中是否存在所述待扫描文件的已扫描特征信息,在本地缓存数据库中存在待扫描文件的已扫描特征信息且与当前属性信息一致时,直接读取缓存数据库中的已扫描特征信息作为所述待扫描文件的当前特征信息,而不需要再次通过当前属性信息计算当前特征信息,从而可以减少再次扫描时获取同一文件特征的时间,大大提高了文件扫描的速度,不需要重新从磁盘读取文件的全部内容,从而节省了重复读写磁盘文件所带来的系统资源消耗。其次,本实施例即使本地缓存数据库中不存在待扫描文件的已扫描特征信息或者在本地缓存数据库中存在待扫描文件的已扫描特征信息且与当前属性信息不一致时,在本次扫描的时候通过当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息,这样对该文件进行再次扫描的时候,就可以直接从缓存数据库中找到该文件的特征信息了,可以加速再次扫描的进度。需要说明的是,对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请所必需的。实施例二 参照图2,示出了本发明实施例的一种文件扫描方法的流程图,本实施例具体可以包括以下步骤S201,获取待扫描文件的当前属性信息。本实施例中,可以通过遍历待扫描文件目录,从所述待扫描文件目录中提取待扫描文件的路径。然后可以通过待扫描文件的路径找到待扫描文件,继而读取待扫描文件的当前属性信息。本实施例中待扫描文件的当前属性信息包括文件的大小、文件的最后修改时间和文件的创建时间。例如,待扫描文件的路径为C: \program files\msn gaming zone\windows\rvsezm. exe,依据此路径,就可以从C盘中找到待扫描文件rvsezm. exe,然后读取待扫描文件的当前属性信息,具体包括文件的大小41. 5KB、文件的最后修改时间2009年8月10日,10:11:21和/或文件的创建时间:2004年8月17日,20:00:00。S202,访问本地缓存数据库。本地缓存数据中保存有已扫描文件的特征信息,具体的,所述特征信息包括属性信息和特征值,属性信息包括上述文件的大小、文件的最后修改时间和文件的创建时间,特征值通过属性信息计算得到,例如通过文件的大小、文件的最后修改时间和文件的创建时间计算出全文MD5,SHAl等特征值。本实施例中可以根据所述待扫描文件的路径生成键值,并依据所述键值访问本地缓存数据库;其中,所述本地缓存数据库以键值为访问索引。S203,判断所述本地缓存数据库中是否存在所述待扫描文件的已扫描特征信息,若存在,则执行步骤S204,若不存在,则执行步骤S208。依据步骤S202中的描述,本地缓存数据库中保存有已扫描文件的特征信息,在本实施例中已扫描文件的含义是之前进行过扫描,对于待扫描文件来说,其也有可能在此次扫描之前进行过扫描,对于此次扫描而言该文件为待扫描文件,对于下次扫描而言该文件为已扫描文件。在步骤S203中需要判断本地缓存数据库中是否存在该待扫描文件的已扫描特征信息,如果本地缓存数据库中存在该待扫描文件的已扫描特征信息,说明该文件在此次扫描之前进行过扫描,执行步骤S204解析所述已扫描特征信息得到已扫描属性信息;如果本地缓存数据库中不存在该待扫描文件的已扫描特征信息,说明该待扫描文件在此次扫描之前没有进行过扫描,执行步骤S207通过所述当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。这样第一次扫描的文件计算得到的特征信息就作为已扫描特征信息存储到缓存数据库中了,该文件进行再次扫描的时候,就可以从缓存数据库中找到该文件的已扫描特征信息了。S204,解析所述已扫描特征信息得到已扫描属性信息。
已扫描特征信息包含属性信息和特征值,在步骤S204中解析已扫描特征信息就可以得到已扫描属性信息,也就是文件的大小、文件的最后修改时间和文件的创建时间,这些已扫描属性信息是存储在缓存数据库中的。S205,判断所述已扫描属性信息与所述当前属性信息是否一致,若一致,执行步骤S206,若不一致,则执行步骤S208。将步骤S201中获取的待扫描文件的当前属性信息和步骤S204中得到的已扫描属性信息进行比对,判断上述当前属性信息和已扫描属性信息是否一致,具体地,判断上述当前属性信息和已扫描属性信息包含的文件的大小是否一致、文件的最后修改时间是否一致、文件的创建时间是否一致。只有上述文件的大小、文件的最后修改时间和文件的创建时间三者都一致,才判定已扫描属性信息与当前属性信息一致,只要上述三者有一者不一致,都判定已扫描属性信息与当前属性信息不一致。S206,判断所述待扫描文件的已扫描特征信息是否包含无效标志,若不包含无效标志,则执行步骤S207,若包含无效标志,则执行步骤S208。需要说明的是,即使步骤S205中判断已扫描属性信息与所述当前属性信息包含的文件的大小一致、文件的最后修改时间一致和文件的创建时间都一致,也不能确定文件没有进行过修改。因为文件的最后修改时间和文件的创建时间是可以修改的,如果文件内容发生变化而文件的大小相同,且文件的最后修改时间及文件的创建时间也改为相同,步骤S205中就会得到已扫描属性信息与所述当前属性信息一致的结果,而很明显文件内容已经发生了变化,因此本实施例监控所述待扫描文件,当所述待扫描文件进行修改操作时,对所述本地缓存数据库中待扫描文件的已扫描特征信息设置无效标志。也就是说,一旦文件发生了修改操作,例如,写操作、或者属性进行了修改,就对本地缓存数据库中存储的待扫描文件的已扫描特征信息设置一个无效标志,代表该已扫描特征信息已经失效,下次进行扫描的时候,需要执行步骤S208,通过所述当前属性信息重新计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。S207,读取所述已扫描特征信息作为所述待扫描文件的当前特征信息。当所述已扫描属性信息与所述当前属性信息一致,且待扫描文件的已扫描特征信息不包含无效标志的时候,直接读取缓存数据库中的已扫描特征信息作为所述待扫描文件的当前特征信息,而不需要再通过当前属性信息重新进行特征值的计算,节省了获取特征值的时间,其中文件特征值等内容描述信息只占整个文件的很小一部分,当用户端扫描文件内容描述信息部分时,所耗费时间远远小于扫描整个文件的时间,从而节省了文件扫描所需的时间,进而加速了文件扫描的速度。S208,通过所述当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。当所述已扫描属性信息与所述当前属性信息不一致,或者待扫描文件的已扫描特征信息包含无效标志的时候,说明该文件进行了修改操作,因此不能直接读取缓存数据库中的已扫描特征信息作为所述待扫描文件的当前特征信息,而需要通过所述当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。当然,如果步骤S203中判断本地缓存数据库中不存在所述待扫描文件的已扫描特征信息,也需要通过所述当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。需要说明的是,即使步骤S205中判断已扫描属性信息与所述当前属性信息包含的文件的大小一致、文件的最后修改时间一致和文件的创建时间都一致,也不能确定文件没有进行过修改。因为文件的最后修改时间和文件的创建时间是可以修改的,如果文件内容发生变化而文件的大小相同,且文件的最后修改时间及文件的创建时间也改为相同,步骤S205中就会得到已扫描属性信息与所述当前属性信息一致的结果,而很明显文件内容已经发生了变化。因此在实施例一的基础上,本实施例二监控所述待扫描文件,当所述待扫描文件进行修改操作时,对所述本地缓存数据库中待扫描文件的已扫描特征信息设置无效标志。也就是说,一旦文件发生了修改操作,例如,写操作、或者属性进行了修改,就对本地缓存数据库中存储的待扫描文件的已扫描特征信息设置一个无效标志,代表该已扫描特征信息已经失效,下次进行扫描的时候,需要执行步骤S208通过所述当前属性信息重新计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。避免了文件内容发生变化而文件的大小相同,且文件的最后修改时间及文件的创建时间也改为相同的情况下,如果只判断已扫描属性信息与当前属性信息一致,就直接读取缓存数据库中的已扫描特征信息作为所述待扫描文件的当前特征信息的错误操作。需要说明的是,对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请所必需的。实施例三参照图3,示出了本发明实施例的一种文件扫描装置的结构框图,本实施例具体可以包括以下模块属性获取模块301,适于获取待扫描文件的当前属性信息。本实施例中上述属性获取模块301包括路径读取子模块,适于读取待扫描文件的路径;信息获取子模块,适于根据所述待扫描文件的路径获取待扫描文件的当前属性信
肩、O具体地,路径读取子模块可以通过遍历待扫描文件目录,从所述待扫描文件目录中提取待扫描文件的路径,然后信息获取子模块可以通过待扫描文件的路径找到待扫描文件,继而读取待扫描文件的当前属性信息。本实施例中待扫描文件的当前属性信息包括文件的大小、文件的最后修改时间和文件的创建时间。例如,路径读取子模块获取的待扫描文件的路径为C: \program f iles\msngaming zone\windows\rvsezm. exe,信息获取子模块依据此路径,就可以从C盘中找到待扫描文件rvsezm. exe,然后读取待扫描文件的当前属性信息,具体包括文件的大小41. 5KB、文件的最后修改时间2009年8月10日,10:11:21和/或文件的创建时间2004年8月17日,20:00:00。判断模块302,适于访问本地缓存数据库,判断所述本地缓存数据库中是否存在所述待扫描文件的已扫描特征信息;若存在,则解析所述已扫描特征信息得到已扫描属性信息,并判断所述已扫描属性信息与所述当前属性信息是否一致。本地缓存数据中保存有已扫描文件的特征信息,具体的,所述特征信息包括属性信息和特征值,属性信息包括上述文件的大小、文件的最后修改时间和文件的创建时间,特征值通过属性信息计算得到,例如通过文件的大小、文件的最后修改时间和文件的创建时间计算出全文MD5,SHAl等特征值。在本实施例中已扫描文件的含义是之前进行过扫描,对于待扫描文件来说,其也有可能在此次扫描之前进行过扫描,对于此次扫描而言该文件为待扫描文件,对于下次扫描而言该文件为已扫描文件。判断模块302需要判断本地缓存数据库中是否存在该待扫描文件的已扫描特征信息,如果本地缓存数据库中存在该待扫描文件的已扫描特征信息,说明该文件在此次扫描之前进行过扫描,因此解析所述已扫描特征信息得到已扫描属性信息,并判断所述已扫描属性信息与所述当前属性信息是否一致;若一致,则进入读取模块303,若不一致,则进入计算模块304。本实施例中待扫描文件的已扫描特征信息包括属性信息和特征值,所述特征值通过所述属性信息计算得到。判断模块302解析已扫描特征信息就可以得到已扫描属性信息,也就是可以得到文件的大小、文件的最后修改时间和文件的创建时间,这些已扫描属性信息是存储在缓存数据库中的。判断模块302将属性获取模块301获取的待扫描文件的当前属性信息和访问本地缓存数据库得到的已扫描属性信息进行比对,判断上述当前属性信息和已扫描属性信息是否一致,具体地,判断上述当前属性信息和已扫描属性信息包含的文件的大小是否一致、文件的最后修改时间是否一致、文件的创建时间是否一致。只有上述文件的大小、文件的最后修改时间和文件的创建时间三者都一致,才判定已扫描属性信息与当前属性信息一致,只要上述三者有一者不一致,都判定已扫描属性信息与当前属性信息不一致。读取模块303,适于当所述已扫描属性信息与所述当前属性信息一致时,读取所述已扫描特征信息作为所述待扫描文件的当前特征信息。读取模块303当所述已扫描属性信息与所述当前属性信息一致的时候,直接读取缓存数据库中的已扫描特征信息作为所述待扫描文件的当前特征信息,而不需要再通过当前属性信息重新进行特征值的计算,节省了获取特征值的时间,从而节省了文件扫描所需的时间,进而加速了文件扫描的速度。计算模块304,适于当所述已扫描属性信息与所述当前属性信息不一致时,通过所述当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。当所述已扫描属性信息与所述当前属性信息不一致的时候,说明该文件很有可能进行了修改,因此不能直接读取缓存数据库中的已扫描特征信息作为所述待扫描文件的当前特征信息,而需要通过计算模块304计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。这样第一次扫描的文件计算得到的特征信息就作为已扫描特征信息存储到缓存数据库中了,该文件进行之后再进行扫描的时候,就可以从缓存数据库中找到该文件的已扫描特征信息了。
在本实施例的一个优选实施例中,上述计算模块304还适于当所述本地缓存数据库中不存在所述待扫描文件的已扫描特征信息时,通过所述当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。当然,如果判断模块302判断本地缓存数据库中不存在所述待扫描文件的已扫描特征信息,也需要通过计算模块304计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见图1方法实施例的部分说明即可。实施例四参照图4,示出了本发明实施例的另一种文件扫描装置的结构框图,本实施例具体可以包括以下模块属性获取模块401,适于获取待扫描文件的当前属性信息。本实施例中上述属性获取模块401包括路径读取子模块,适于读取待扫描文件的路径;信息获取子模块,适于根据所述待扫描文件的路径获取待扫描文件的当前属性信
肩、O具体地,路径读取子模块可以通过遍历待扫描文件目录,从所述待扫描文件目录中提取待扫描文件的路径,然后信息获取子模块可以通过待扫描文件的路径找到待扫描文件,继而读取待扫描文件的当前属性信息。本实施例中待扫描文件的当前属性信息包括文件的大小、文件的最后修改时间和文件的创建时间。例如,路径读取子模块获取的待扫描文件的路径为C: \program f iles\msngaming zone\windows\rvsezm. exe,信息获取子模块依据此路径,就可以从C盘中找到待扫描文件rvsezm. exe,然后读取待扫描文件的当前属性信息,具体包括文件的大小41. 5KB、文件的最后修改时间2009年8月10日,10:11:21和/或文件的创建时间2004年8月17日,20:00:00。判断模块402,适于访问本地缓存数据库,判断所述本地缓存数据库中是否存在所述待扫描文件的已扫描特征信息;若存在,则解析所述已扫描特征信息得到已扫描属性信息,并判断所述已扫描属性信息与所述当前属性信息是否一致。本地缓存数据中保存有已扫描文件的特征信息,具体的,所述特征信息包括属性信息和特征值,属性信息包括上述文件的大小、文件的最后修改时间和文件的创建时间,特征值通过属性信息计算得到,例如通过文件的大小、文件的最后修改时间和文件的创建时间计算出全文MD5,SHAl等特征值。上述判断模块402通过以下子模块访问本地缓存数据库键值生成子模块,适于根据所述待扫描文件的路径生成键值;键值访问子模块,适于依据所述键值访问本地缓存数据库;其中,所述本地缓存数据库以键值为访问索引。在本实施例中已扫描文件的含义是之前进行过扫描,对于待扫描文件来说,其也有可能在此次扫描之前进行过扫描,对于此次扫描而言该文件为待扫描文件,对于下次扫描而言该文件为已扫描文件。
判断模块402需要判断本地缓存数据库中是否存在该待扫描文件的已扫描特征信息,如果本地缓存数据库中存在该待扫描文件的已扫描特征信息,说明该文件在此次扫描之前进行过扫描,因此解析所述已扫描特征信息得到已扫描属性信息,并判断所述已扫描属性信息与所述当前属性信息是否一致;若一致,则进入读取模块403,若不一致,则进入计算模块404。当然如果本地缓存数据库中不存在该待扫描文件的已扫描特征信息,说明该待扫描文件在此次扫描之前没有进行过扫描,也进入计算模块404通过所述当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。这样第一次扫描的文件计算得到的特征信息就作为已扫描特征信息存储到缓存数据库中了,该文件进行再次扫描的时候,就可以从缓存数据库中找到该文件的已扫描特征信息了。本实施例中待扫描文件的已扫描特征信息包括属性信息和特征值,所述特征值通过所述属性信息计算得到。判断模块402解析已扫描特征信息就可以得到已扫描属性信息,也就是文件的大小、文件的最后修改时间和文件的创建时间,这些已扫描属性信息是存储在缓存数据库中的。判断模块402将属性获取模块401获取的待扫描文件的当前属性信息和访问本地缓存数据库得到的已扫描属性信息进行比对,判断上述当前属性信息和已扫描属性信息是否一致,具体地,判断上述当前属性信息和已扫描属性信息包含的文件的大小是否一致、文件的最后修改时间是否一致、文件的创建时间是否一致。只有上述文件的大小、文件的最后修改时间和文件的创建时间三者都一致,才判定已扫描属性信息与当前属性信息一致,只要上述三者有一者不一致,都判定已扫描属性信息与当前属性信息不一致。需要说明的是,即使判断模块402判断已扫描属性信息与所述当前属性信息包含的文件的大小一致、文件的最后修改时间一致和文件的创建时间都一致,也不能确定文件没有进行过修改。因为文件的最后修改时间和文件的创建时间是可以修改的,如果文件内容发生变化而文件的大小相同,且文件的最后修改时间及文件的创建时间也改为相同,判断模块402中就会得到已扫描属性信息与所述当前属性信息一致的结果,而很明显文件内容已经发生了变化。因此本实施例所述装置还包括监控模块405,适于监控所述待扫描文件,当所述待扫描文件进行修改操作时,对所述本地缓存数据库中待扫描文件的已扫描特征信息设置无效标志。监控模块监控所述待扫描文件,当所述待扫描文件进行修改操作时,对所述本地缓存数据库中待扫描文件的已扫描特征信息设置无效标志。也就是说,一旦文件发生了修改操作,例如,写操作、或者属性进行了修改,就对本地缓存数据库中存储的待扫描文件的已扫描特征信息设置一个无效标志,代表该已扫描特征信息已经失效,下次进行扫描的时候,需要进入计算模块404,通过所述当前属性信息重新计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。相应的,所述判断模块402,还适于读取已扫描特征信息作为所述待扫描文件的当前特征信息之前,判断所述待扫描文件的已扫描特征信息是否包含无效标志。读取模块403,还适于所述待扫描文件的已扫描特征信息不包含无效标志时,读取所述已扫描特征信息作为所述待扫描文件的当前特征信息。
当所述判断模块402判断已扫描属性信息与所述当前属性信息一致,且待扫描文件的已扫描特征信息不包含无效标志的时候,直接读取缓存数据库中的已扫描特征信息作为所述待扫描文件的当前特征信息,而不需要再通过当前属性信息重新进行特征值的计算,节省了获取特征值的时间,从而节省了文件扫描所需的时间,进而加速了文件扫描的速度。计算模块404,还适于所述待扫描文件的已扫描特征信息包含无效标志时,通过所述当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。当所述已扫描属性信息与所述当前属性信息不一致,或者待扫描文件的已扫描特征信息包含无效标志的时候,说明该文件进行了修改操作,因此不能直接读取缓存数据库中的已扫描特征信息作为所述待扫描文件的当前特征信息,而需要通过所述当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。这样第一次扫描的文件计算得到的特征信息就作为已扫描特征信息存储到缓存数据库中了,该文件进行之后再进行扫描的时候,就可以从缓存数据库中找到该文件的已扫描特征信息了。当然,如果判断模块402判断本地缓存数据库中不存在所述待扫描文件的已扫描特征信息,也需要通过计算模块404计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见图2方法实施例的部分说明即可。实施例五参照图5,示出了本发明实施例的一种文件检测系统的结构框图,本实施例具体可以包括以下模块主界面模块501,适于对封装模块发起文件扫描操作,并指定待扫描文件;在本实施例中主界面模块501指定的待扫描文件可以是一个文件,也可以是多个文件。封装模块502,适于调用扫描模块;扫描模块503,适于扫描待扫描文件并调用数据库操作模块获取所述待扫描文件的特征信息;在本实施例中扫描模块503可以调用数据库操作模块504,数据库操作模块504获取所述待扫描文件的特征信息。数据库操作模块504,适于读取所述待扫描文件的特征信息。在本实施例的一个优选实施例中,所述文件检测系统还包括驱动模块505,适于监控所述待扫描文件,当所述待扫描文件进行修改操作时,将包含所述待扫描文件进行的修改操作的文件修改消息发送至所述消息服务模块;消息服务模块506,适于接收所述驱动模块发送的文件修改消息,并将所述文件修改消息发送至所述数据库操作模块;具体实现时,消息服务模块506可以调用驱动调用模块(图5未示出)来调用驱动模块505得到文件修改消息。所述数据库操作模块504,还适于接收所述消息服务模块发送的文件修改消息,并依据所述文件修改消息对该文件对应的数据库文件设置无效标志。当所述数据库操作模块504依据所述文件修改消息对该文件对应的数据库文件设置无效标志后,扫描模块503将无法成功获取所述待扫描文件的特征信息,因为此时待扫描文件的特征信息已经失效,需要重新计算特征信息,可以参见图4所示的装置实施例的相关描述。对于系统实施例而言,由于其与装置实施例基本相似,所以描述的比较简单,相关之处参见图4装置实施例的部分说明即可。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。本领域技术人员易于想到的是上述各个实施例的任意组合应用都是可行的,故上述各个实施例之间的任意组合都是本申请的实施方案,但是由于篇幅限制,本说明书在此就不一一详述了。在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式
的权利要求书由此明确地并入该具体实施方式
,其中每个权利要求本身都作为本发明的单独实施例。本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的文件扫描装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
权利要求
1.一种文件检测系统,包括主界面模块,适于对封装模块发起文件扫描操作,并指定待扫描文件;封装模块,适于调用扫描模块;扫描模块,适于扫描待扫描文件并调用数据库操作模块获取所述待扫描文件的特征信数据库操作模块,适于读取所述待扫描文件的特征信息;其中,所述扫描模块包括属性获取模块,适于获取待扫描文件的当前属性信息;判断模块,适于访问本地缓存数据库,判断所述本地缓存数据库中是否存在所述待扫描文件的已扫描特征信息;若存在,则解析所述已扫描特征信息得到已扫描属性信息,并判断所述已扫描属性信息与所述当前属性信息是否一致;读取模块,适于当所述已扫描属性信息与所述当前属性信息一致时,读取所述已扫描特征信息作为所述待扫描文件的当前特征信息;计算模块,适于当所述已扫描属性信息与所述当前属性信息不一致时,通过所述当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。
2.根据权利要求1所述的系统,其中,所述计算模块还适于当所述本地缓存数据库中不存在所述待扫描文件的已扫描特征信息时,通过所述当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。
3.根据权利要求1所述的系统,其中,所述扫描模块还包括监控模块,适于监控所述待扫描文件,当所述待扫描文件进行修改操作时,对所述本地缓存数据库中待扫描文件的已扫描特征信息设置无效标志。
4.根据权利要求3所述的系统,其中,所述判断模块还适于读取已扫描特征信息作为所述待扫描文件的当前特征信息之前,判断所述待扫描文件的已扫描特征信息是否包含无效标志;所述读取模块还适于所述待扫描文件的已扫描特征信息不包含无效标志时,读取所述已扫描特征信息作为所述待扫描文件的当前特征信息;所述计算模块还适于所述待扫描文件的已扫描特征信息包含无效标志时,通过所述当前属性信息计算所述待扫描文件的当前特征信息,并存入所述本地缓存数据库作为下次扫描的已扫描特征信息。
5.根据权利要求1所述的系统,其中,所述属性获取模块包括路径读取子模块,适于读取待扫描文件的路径;信息获取子模块,适于根据所述待扫描文件的路径获取待扫描文件的当前属性信息。
6.根据权利要求1所述的系统,其中,所述待扫描文件的当前属性信息包括文件的大小、文件的最后修改时间和文件的创建时间;所述待扫描文件的已扫描特征信息包括属性信息和特征值,所述特征值通过所述属性信息计算得到。
7.根据权利要求1至6中任一项所述的系统,还包括驱动模块,适于监控所述待扫描文件,当所述待扫描文件进行修改操作时,将包含所述待扫描文件进行的修改操作的文件修改消息发送至所述消息服务模块;消息服务模块,适于接收所述驱动模块发送的文件修改消息,并将所述文件修改消息发送至所述数据库操作模块;、所述数据库操作模块,还适于接收所述消息服务模块发送的文件修改消息,并依据所述文件修改消息对该文件对应的数据库文件设置无效标志。
全文摘要
本发明实施例公开了一种文件检测系统,以解决再次扫描所需时间比较长的问题。所述文件检测系统包括主界面模块,适于对封装模块发起文件扫描操作,并指定待扫描文件;封装模块,适于调用扫描模块;扫描模块,适于扫描待扫描文件并调用数据库操作模块获取所述待扫描文件的特征信息;数据库操作模块,适于读取所述待扫描文件的特征信息;其中,所述扫描模块包括属性获取模块;判断模块;读取模块;计算模块。本发明可以减少再次扫描时获取同一文件特征的时间,提高了文件扫描的速度。
文档编号G06F21/56GK102999722SQ201210452169
公开日2013年3月27日 申请日期2012年11月12日 优先权日2012年11月12日
发明者刘智锋, 孔庆龙 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司