一种待分析文件的文件具体类型的判断方法及装置制造方法

文档序号:6535862阅读:95来源:国知局
一种待分析文件的文件具体类型的判断方法及装置制造方法
【专利摘要】本发明公开一种待分析文件的文件具体类型的判断方法及装置,判断方法包括:步骤(11),扫描待分析文件中与编程语言有关的特征符号及每个特征符号在所述待分析文件中的出现次数;步骤(12),选择一种未分析的编程语言作为待分析编程语言;步骤(13),计算特征符号下出现待分析编程语言概率;如果还有其他未分析的编程语言,则执行步骤(12),否则执行步骤(14);步骤(14),从多个特征符号下出现待分析编程语言概率中选择最大值对应的待分析编程语言,作为所述待分析文件的编程语言;步骤(15),根据所述待分析文件的编程语言,确定所述待分析文件的文件具体类型。本发明准确性高,即使文件具体类型有多个,也能确定文件具体类型。
【专利说明】一种待分析文件的文件具体类型的判断方法及装置
【技术领域】
[0001]本发明涉及文件分析相关【技术领域】,特别是一种待分析文件的文件具体类型的判断方法及装置。
【背景技术】
[0002]文件具体类型包括文件类型(比如各种格式的图片,Office Word文档等等)以及如果是文本文件的话,其可能所属的编程语言的类型(如Java语言源代码文件,LinuxShell脚本等等)等更为具体的信息。
[0003]当对代码仓库进行展示时,需要知道各文件具体类型,例如对图片格式的文件进行图片展示;对二进制类型的文件只展示一个占位符以便用户点击进行下载,对于各种编程语言的源代码文件则需要根据相应的语法进行语法高亮展示。另外,在对用户的代码仓库进行统计分析时,以及在用户按语言搜索时等很多场景下,也需要知道每个文件的类型及所属语言。这对于用户体验及数据挖掘都非常重要。
[0004]然而,现有技术一般仅仅通过文件某一个或一些方面的特性来判断文件类型及所属语言,因此:
[0005]I)准确性低,特别是对于几种均等的可能性毫无判断的方法;
[0006]2)判断的标准单一导致局限非常大;
[0007]3)针对源代码文件无法提供针对性的分析判断;
[0008]4)判断方法扩展性低,无法通过大量的新数据升级及修正现有的判断标准;
[0009]5)不能根据实际的需要提供满足不同性能及准确性需要的灵活解决方案。

【发明内容】

[0010]基于此,有必要针对现有技术对文件具体类型判断不准确的技术问题,提供一种待分析文件的文件具体类型的判断方法及装置。
[0011]一种待分析文件的文件具体类型的判断方法,包括:
[0012]步骤11,扫描待分析文件中与编程语言有关的特征符号及每个特征符号在所述待分析文件中的出现次数;
[0013]步骤12,选择一种未分析的编程语言作为待分析编程语言;
[0014]步骤13,获取样本数据库中每个特征符号在待分析编程语言中出现的概率,根据每个特征符号在所述待分析文件中的出现次数以及样本数据库中每个特征符号在待分析编程语言中出现的概率,计算待分析编程语言下特征符号出现总概率;
[0015]将样本数据库中待分析编程语言的源代码文件的个数除以样本数据库中源代码文件的总个数,计算结果作为样本数据库中待分析编程语言出现概率;
[0016]将所述待分析编程语言下特征符号出现总概率乘以样本数据库中待分析编程语言出现概率,计算结果作为特征符号下出现待分析编程语言概率;
[0017]如果还有其他未分析的编程语言,则执行步骤12,得到其他未分析的编程语言的特征符号下出现待分析编程语言概率,否则执行步骤14 ;
[0018]步骤14,从多个特征符号下出现待分析编程语言概率中选择最大值,将最大值对应的待分析编程语言,作为所述待分析文件的编程语言;
[0019]步骤15,根据所述待分析文件的编程语言,确定所述待分析文件属于所述编程语言的文件具体类型。
[0020]一种待分析文件的文件具体类型的判断装置,包括:
[0021]扫描模块,扫描待分析文件中与编程语言有关的特征符号及每个特征符号在所述待分析文件中的出现次数;
[0022]分析语言选择模块,选择一种未分析的编程语言作为待分析编程语言;
[0023]分析模块,获取样本数据库中每个特征符号在待分析编程语言中出现的概率,根据每个特征符号在所述待分析文件中的出现次数以及样本数据库中每个特征符号在待分析编程语言中出现的概率,计算待分析编程语言下特征符号出现总概率;
[0024]将样本数据库中待分析编程语言的源代码文件的个数除以样本数据库中源代码文件的总个数,计算结果作为样本数据库中待分析编程语言出现概率;
[0025]将所述待分析编程语言下特征符号出现总概率乘以样本数据库中待分析编程语言出现概率,计算结果作为特征符号下出现待分析编程语言概率;
[0026]如果还有其他未分析的编程语言,则执行分析语言选择模块,得到其他未分析的编程语言的特征符号下出现待分析编程语言概率,否则执行编程语言确认模块;
[0027]编程语言确认模块,从多个特征符号下出现待分析编程语言概率中选择最大值,将最大值对应的待分析编程语言,作为所述待分析文件的编程语言;
[0028]文件具体类型确认模块,根据所述待分析文件的编程语言,确定所述待分析文件属于所述编程语言的文件具体类型。
[0029]本发明根据待分析编程语言下特征符号出现总概率与样本数据库中待分析编程语言出现概率,计算出特征符号下出现待分析编程语言概率,从中选择最大值所对应的待分析编程语言作为待分析文件的编程语言,根据待分析文件的编程语言,确定待分析文件的文件具体类型。因此,本发明准确性高,即使文件具体类型有多个,也能通过本发明的方法确定编程语言,从而确定文件具体类型。且本发明判断的标准丰富,适用范围大,能针对源代码文件提供针对性的客观分析判断,同时判断方法扩展性高,可通过大量的新数据升级及修正现有的判断标准。并且可根据实际的需要提供满足不同性能及准确性需要的灵活解决方案。
【专利附图】

【附图说明】
[0030]图1为本发明一种待分析文件的文件具体类型的判断方法的工作流程图;
[0031]图2为本发明一种待分析文件的文件具体类型的判断方法其中一个实施例的工作流程图;
[0032]图3为本发明一种待分析文件的文件具体类型的判断方法一个例子的工作流程图;
[0033]图4为本发明一种待分析文件的文件具体类型的判断装置的结构模块图。【具体实施方式】
[0034]下面结合附图和具体实施例对本发明做进一步详细的说明。
[0035]如图1所示为本发明一种待分析文件的文件具体类型的判断方法的工作流程图,包括:
[0036]步骤11,扫描待分析文件中与编程语言有关的特征符号及每个特征符号在所述待分析文件中的出现次数;
[0037]步骤12,选择一种未分析的编程语言作为待分析编程语言;
[0038]步骤13,获取样本数据库中每个特征符号在待分析编程语言中出现的概率,根据每个特征符号在所述待分析文件中的出现次数以及样本数据库中每个特征符号在待分析编程语言中出现的概率,计算待分析编程语言下特征符号出现总概率;
[0039]将样本数据库中待分析编程语言的源代码文件的个数除以样本数据库中源代码文件的总个数,计算结果作为样本数据库中待分析编程语言出现概率;
[0040]将所述待分析编程语言下特征符号出现总概率乘以样本数据库中待分析编程语言出现概率,计算结果作为特征符号下出现待分析编程语言概率;
[0041]如果还有其他未分析的编程语言,则执行步骤12,得到其他未分析的编程语言的特征符号下出现待分析编程语言概率,否则执行步骤14 ;
[0042]步骤14,从多个特征符号下出现待分析编程语言概率中选择最大值,将最大值对应的待分析编程语言,作为所述待分析文件的编程语言;
[0043]步骤15,根据所述待分析文件的编程语言,确定所述待分析文件属于所述编程语言的文件具体类型。
[0044]步骤11中扫描待分析文件中与编程语言有关的特征符号及每个特征符号在所述待分析文件中的出现次数,如果完全扫描不到与编程语言有关的特征符号或者每个特征符号在所述待分析文件中的出现次数过小,则可以判断待分析文件为普通文本文件。
[0045]步骤12选择一种未分析的编程语言可以在样本数据库所包括的所有的编程语言中选择,也可以是一个预设的范围内选择。
[0046]对于在多种编程语言中选择,根据贝叶斯定理(Bayes’ theorem):在B出现的前提下,A出现的概率等于A出现的前提下B出现的概率乘以A出现的概率再除以B出现的概率。通过联系A与B,计算从一个事件产生另一事件的概率,即从结果上溯原。
[0047]朴素贝叶斯分类法的正式定义如下:
[0048]1、设X = {au a2,..., am}为一个待分类项,而每个a为x的一个特征属性。
[0049]2、有类别集合 C = (Y1, J2,..., yn} ο
[0050]3、计算?(7上),?(72|叉),...,P (ynI x)。
[0051]4、如果 P(yk|x) = max {P (Y11 x), P (y21 x),...,P (yn | x)},则 x e yk。
[0052]步骤13计算出待分析编程语言下特征符号出现总概率,以及样本数据库中待分析编程语言出现概率。根据贝叶斯定律,特征符号下出现待分析编程语言概率应该为待分析编程语言下特征符号出现总概率乘以样本数据库中待分析编程语言出现概率再除以样本数据库中特征符号出现总概率,由于朴素贝叶斯分类法的最终计算结果,是选择特征符号下出现待分析编程语言概率的最大值,而样本数据库中特征符号出现总概率在同一样本数据库中所有的待分析编程语言的概率一致,因此,为了减少计算将待分析编程语言下特征符号出现总概率乘以样本数据库中待分析编程语言出现概率的计算结果作为特征符号下出现待分析编程语言概率。
[0053]步骤14从多个特征符号下出现待分析编程语言概率中选择最大值,根据朴素贝叶斯分类法,最大值对应的待分析编程语言,为待分析文件最有可能使用的编程语言,因此将最大值对应的待分析编程语言作为所述待分析文件的编程语言。
[0054]步骤15根据所述待分析文件的编程语言,确定所述待分析文件属于所述编程语言的文件具体类型。其中,文件具体类型则为该编程语言下的文件类型。例如,可以为C、C++或者objective C的源代码文件,更加具体地,针对待分析文件的扩展名,例如.h结尾的待分析文件则可以为C、C++或者objective C的头文件。
[0055]本实施例满足朴素贝叶斯分类法,因此所选择的编程语言能很好地符合待分析文件。
[0056]在其中一个实施例中,所述待分析编程语言下特征符号出现总概率采用如下方式计算:
[0057]获取样本数据库中每个特征符号在待分析编程语言中出现的概率乘以对应特征符号在所述待分析文件中的出现次数,计算结果作为待分析编程语言下特征符号出现概率,将每个特征符号对应的所述待分析编程语言下特征符号出现概率相加,计算结果作为待分析编程语言下特征符号出现总概率。
[0058]作为一个例子,例如一个待分析文件中的特征符号包括:“ if”和“for”,待分析编程语言为C语言,其中,if在待分析文件中的出现次数为3,样本数据库中if在C语言中出现的概率为10%,for在待分析文件中的出现次数为10,样本数据库中for在C语言中出现的概率为20%,则if对应的所述待分析编程语言下特征符号出现概率为3 X 10%=30%,而for对应的所述待分析编程语言下特征符号出现概率为10X20%=200%,将两者相加则得到C语言下特征符号出现总概率=230%。之所以会出现超过100%的概率,原因是没有将乘积除以样本数据库中特征符号出现总概率,然而,正如上述分析看出,为了减少计算量,没有必要除以样本数据库中特征符号出现总概率,因此,超过100%的概率也是可以接受的。
[0059]如图2所示,在其中一个实施例中,还包括:
[0060]步骤21,获取多个已知编程语言的源代码样本文件保存在样本数据库中;
[0061]步骤22,选择一个未统计的编程语言作为待统计编程语言;
[0062]步骤23,扫描待统计编程语言的所有源代码样本文件中与编程语言有关的特征符号及每个特征符号在所述源代码样本文件中的出现次数,计算每个特征符号在待统计编程语言中的出现次数除以所有特征符号在待统计编程语言中的出现次数,计算结果作为特征符号在待统计编程语言中出现的概率并保存在样本数据库中,如果还有未统计的编程语言则执行步骤22,否则执行步骤24 ;
[0063]步骤24,结束对多个已知编程语言的源代码样本文件的统计。
[0064]上述步骤21?24可以在执行步骤11之前执行,通过执行步骤21?24,生成样本数据库,同时计算特征符号在待统计编程语言中出现的概率。
[0065]在其中一个实施例中,步骤24具体包括:
[0066]将保存在样本数据库中所有源代码样本文件计算一个摘要作为统计摘要,并保存在样本数据库中,结束对多个已知编程语言的源代码样本文件的统计。[0067]在其中一个实施例中,还包括:将保存在样本数据库中所有源代码样本文件计算一个摘要作为校验摘要,如果所述校验摘要与所述统计摘要一致,则执行步骤12,否则执行统计步骤21至步骤24后,执行步骤12。
[0068]在其中一个实施例中,还包括:
[0069]判断待分析文件是否为文本文件,如果待分析文件为文本文件,则根据待分析文件的文件名、扩展名以及幻数匹配查找所述待分析文件的文件具体类型,如果待分析文件的文件具体类型所属编程语言的可能性多于一种,则执行步骤11至步骤15,确定所述待分析文件的文件具体类型。
[0070]其中,判断待分析文件是否为文本文件可以采用例如先分析待分析文件内容的编码,如果能够获取到编码信息或者待分析文件所含内容都是ASCII字符,说明待分析文件为文本文件,否则如果待分析文件的文件大小,超过一个阈值则可以认为是二进制文件,如果小于阈值则仍然可以认为是文本文件。
[0071]其中,幻数即magic number,文件中的magic number能够用于判断该文件的文件具体类型。然而,根据待分析文件的文件名、扩展名以及幻数,判断所述待分析文件的文件具体类型很多情况下都会出现多种可能,例如对于一个头文件,其扩展名为“h”,然而,.h结尾的文件有可能是C、C++或者objective C源代码文件,因此文件具体类型所属编程语言的可能性多于一种,则执行步骤11至步骤15,确定所述待分析文件的文件具体类型。
[0072]如图3所示为本发明一种待分析文件的文件具体类型的判断的一个例子的工作流程图,包括:
[0073]步骤S301,获取待分析文件的文件属性信息及内容;
[0074]步骤S302,判断编码方式,如果属于文本文件则执行步骤S304,否则执行步骤S303 ;
[0075]步骤S303,判断文件大小是否超过阈值,如果超过阈值,则文件具体类型判断为二进制文件,否则执行步骤S304 ;
[0076]步骤S304,根据文件名、扩展名及magic number进行匹配查找,文件名、扩展名及magic number可以结合匹配查找,也可以单独匹配查找,其中文件名及扩展名先根据媒体类型(Multipurpose Internet Mail Extensions, MIME type)的对应关系来匹配查找文件具体类型,然后根据一个已知文件名及扩展名的映射表来匹配查找文件具体类型,如果查找到文件具体类型,且所属编程语言仅有一个,则执行步骤S305,如果查找到,且所属编程语言为多个,则执行步骤S306,如果查找不到,则执行步骤S307 ;
[0077]步骤S305,该待分析文件的文件具体类型为所查找到的文件具体类型,结束判断;
[0078]步骤S306,采用朴素贝叶斯分类法从所查找到文件具体类型中所属的多个编程语言得出概率最大的编程语言,从而确定文件具体类型;
[0079]步骤S307,判断待分析文件的文件具体类型为二进制文件。
[0080]其中,步骤S306,具体包括:
[0081]首先是先验数据的准备阶段:
[0082]I)实现一个针对源代码文本的扫描工具,该工具利用正则表达式逐行地扫描待分析文本,过滤掉代码注释,空格,换行符,字面量,标点符号,运算符等等对其所属编程语言特征无关的干扰,从而提取与其有关的该编程语言的特征符号以及其出现的次数;
[0083]2)实现一个基于本发明实施例步骤21~步骤24的分类器,该分类器能够自我训练,通过对传入的已知的某种源代码文件样本进行扫描,将分析的结果整合进一个特殊的包含各种编程语言信息及其所包含的所有特征符号信息的样本数据库;
[0084]3)实现一套样本数据库管理的机制,利用分类器逐个分析基于各种已知编程语言的大量源代码样本文件,完成后将新的样本数据库持久化(如以json的格式存储)。同时也将此次分析的所有样本文件计算一个摘要并保存下来,这样在启动时可以先去迅速地计算样本数据库的摘要,然后与现有的样本数据库的对应摘要进行比对,如果相同则说明样本数据库没有更新,这样就可以快速地载入之前持久化的样本数据库,否则就需要重新分析样本并更新样本数据库并将结果与新样本文件的摘要持久化。根据这种机制用户可以随时调整样本文件来新增或者修正样本数据库;
[0085]然后是数据的应用阶段:
[0086]4)根据输入的文本内容以及其可能属于哪些编程语言的类型,计算出该内容属于每种可能编程语言的概率,从而得出结论。具体概率的算法如下:
[0087]a)根据文本内容扫描出其跟编程语言有关的特征符号及出现次数;
[0088]b)然后根据每一种可能的编程语言分别执行:
[0089].遍历待分析文件里每个特征符号,将其跟样本数据库中该编程语言中特征符号的总数对比,得到该特征符号在该编程语言中出现一次的概率,然后将所有的概率相加,得出所有特征符号在该编程语言中出现的概率;
[0090]?将样本数据库基于该编程语言的被分析的源代码文件的个数除以总源代码文件的个数,得出样本数据库中该种`编程语言出现的概率;
[0091]?将所有特征符号在该编程语言中出现的概率和样本数据库中该编程语言出现的概率相乘,得出最终属于该编程语言的概率;
[0092]?选择概率最大的编程语言,结合文件名、扩展名及magic number确定待分析文件的文件具体类型。
[0093]如图4所示为本发明一种待分析文件的文件具体类型的判断装置的结构模块图,包括:
[0094]扫描模块401,扫描待分析文件中与编程语言有关的特征符号及每个特征符号在所述待分析文件中的出现次数;
[0095]分析语言选择模块402,选择一种未分析的编程语言作为待分析编程语言;
[0096]分析模块403,获取样本数据库中每个特征符号在待分析编程语言中出现的概率,根据每个特征符号在所述待分析文件中的出现次数以及样本数据库中每个特征符号在待分析编程语言中出现的概率,计算待分析编程语言下特征符号出现总概率;
[0097]将样本数据库中待分析编程语言的源代码文件的个数除以样本数据库中源代码文件的总个数,计算结果作为样本数据库中待分析编程语言出现概率;
[0098]将所述待分析编程语言下特征符号出现总概率乘以样本数据库中待分析编程语言出现概率,计算结果作为特征符号下出现待分析编程语言概率;
[0099]如果还有其他未分析的编程语言,则执行分析语言选择模块402,得到其他未分析的编程语言的特征符号下出现待分析编程语言概率,否则执行编程语言确认模块404 ;[0100]编程语言确认模块404,从多个特征符号下出现待分析编程语言概率中选择最大值,将最大值对应的待分析编程语言,作为所述待分析文件的编程语言;
[0101]文件具体类型确认模块405,根据所述待分析文件的编程语言,确定所述待分析文件属于所述编程语言的文件具体类型。
[0102]在其中一个实施例中,所述待分析编程语言下特征符号出现总概率采用如下方式计算:
[0103]获取样本数据库中每个特征符号在待分析编程语言中出现的概率乘以对应特征符号在所述待分析文件中的出现次数,计算结果作为待分析编程语言下特征符号出现概率,将每个特征符号对应的所述待分析编程语言下特征符号出现概率相加,计算结果作为待分析编程语言下特征符号出现总概率。
[0104]在其中一个实施例中,还包括:
[0105]样本文件获取模块,获取多个已知编程语言的源代码样本文件保存在样本数据库中;
[0106]统计语言选择模块,选择一个未统计的编程语言作为待统计编程语言;
[0107]统计模块,扫描待统计编程语言的所有源代码样本文件中与编程语言有关的特征符号及每个特征符号在所述源代码样本文件中的出现次数,计算每个特征符号在待统计编程语言中的出现次数除以所有特征符号在待统计编程语言中的出现次数,计算结果作为特征符号在待统计编程语言中出现的概率并保存在样本数据库中,如果还有未统计的编程语言则执行统计语言选择模块,否则执行结束统计模块;
[0108]结束统计模块,结束对多个已知编程语言的源代码样本文件的统计。
[0109]在其中一个实施例中,结束统计模块具体包括:
[0110]将保存在样本数据库中所有源代码样本文件计算一个摘要作为统计摘要,并保存在样本数据库中,结束对多个已知编程语言的源代码样本文件的统计。
[0111]在其中一个实施例中,还包括:将保存在样本数据库中所有源代码样本文件计算一个摘要作为校验摘要,如果所述校验摘要与所述统计摘要一致,则执行分析语言选择模块,否则执行统计样本文件获取模块至结束统计模块后,执行分析语言选择模块。
[0112]在其中一个实施例中,还包括:
[0113]文本文件判断模块,判断待分析文件是否为文本文件,如果待分析文件为文本文件,则执行文本文件分类模块,否则待分析文件的文件具体类型为二进制文件;
[0114]文本文件分类模块,根据待分析文件的文件名、扩展名以及幻数,判断所述待分析文件的文件具体类型,如果待分析文件的文件具体类型所属编程语言的可能性多于一种,则执行扫描模块至文件具体类型确认模块,确定所述待分析文件的文件具体类型。
[0115]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种待分析文件的文件具体类型的判断方法,其特征在于,包括: 步骤(11),扫描待分析文件中与编程语言有关的特征符号及每个特征符号在所述待分析文件中的出现次数; 步骤(12),选择一种未分析的编程语言作为待分析编程语言; 步骤(13),获取样本数据库中每个特征符号在待分析编程语言中出现的概率,根据每个特征符号在所述待分析文件中的出现次数以及样本数据库中每个特征符号在待分析编程语言中出现的概率,计算待分析编程语言下特征符号出现总概率; 将样本数据库中待分析编程语言的源代码文件的个数除以样本数据库中源代码文件的总个数,计算结果作为样本数据库中待分析编程语言出现概率; 将所述待分析编程语言下特征符号出现总概率乘以样本数据库中待分析编程语言出现概率,计算结果作为特征符号下出现待分析编程语言概率; 如果还有其他未分析的编程语言,则执行步骤(12),得到其他未分析的编程语言的特征符号下出现待分析编程语言概率,否则执行步骤(14); 步骤(14),从多个特征符号下出现待分析编程语言概率中选择最大值,将最大值对应的待分析编程语言,作为所述待分析文件的编程语言; 步骤(15),根据所述待 分析文件的编程语言,确定所述待分析文件属于所述编程语言的文件具体类型。
2.根据权利要求1所述的待分析文件的文件具体类型的判断方法,其特征在于,所述待分析编程语言下特征符号出现总概率采用如下方式计算: 获取样本数据库中每个特征符号在待分析编程语言中出现的概率乘以对应特征符号在所述待分析文件中的出现次数,计算结果作为待分析编程语言下特征符号出现概率,将每个特征符号对应的所述待分析编程语言下特征符号出现概率相加,计算结果作为待分析编程语言下特征符号出现总概率。
3.根据权利要求1所述的待分析文件的文件具体类型的判断方法,其特征在于,还包括: 步骤(21),获取多个已知编程语言的源代码样本文件保存在样本数据库中; 步骤(22),选择一个未统计的编程语言作为待统计编程语言; 步骤(23),扫描待统计编程语言的所有源代码样本文件中与编程语言有关的特征符号及每个特征符号在所述源代码样本文件中的出现次数,计算每个特征符号在待统计编程语言中的出现次数除以所有特征符号在待统计编程语言中的出现次数,计算结果作为特征符号在待统计编程语言中出现的概率并保存在样本数据库中,如果还有未统计的编程语言则执行步骤(22),否则执行步骤(24); 步骤(24),结束对多个已知编程语言的源代码样本文件的统计。
4.根据权利要求3所述的待分析文件的文件具体类型的判断方法,其特征在于,步骤(24)具体包括: 将保存在样本数据库中所有源代码样本文件计算一个摘要作为统计摘要,并保存在样本数据库中,结束对多个已知编程语言的源代码样本文件的统计。
5.根据权利要求4所述的待分析文件的文件具体类型的判断方法,其特征在于,还包括:将保存在样本数据库中所有源代码样本文件计算一个摘要作为校验摘要,如果所述校验摘要与所述统计摘要一致,则执行步骤(12),否则执行统计步骤(21)至步骤(24)后,执行步骤(12)。
6.根据权利要求1所述的待分析文件的文件具体类型的判断方法,其特征在于,还包括: 判断待分析文件是否为文本文件,如果待分析文件为文本文件,则根据待分析文件的文件名、扩展名以及幻数匹配查找所述待分析文件的文件具体类型,如果待分析文件的文件具体类型所属编程语言的可能性多于一种,则执行步骤(11)至步骤(15),确定所述待分析文件的文件具体类型。
7.一种待分析文件的文件具体类型的判断装置,其特征在于,包括: 扫描模块,扫描待分析文件中与编程语言有关的特征符号及每个特征符号在所述待分析文件中的出现次数; 分析语言选择模块,选择一种未分析的编程语言作为待分析编程语言; 分析模块,获取样本数据库中每个特征符号在待分析编程语言中出现的概率,根据每个特征符号在所述待分析文件中的出现次数以及样本数据库中每个特征符号在待分析编程语言中出现的概率,计算待分析编程语言下特征符号出现总概率; 将样本数据库中待分析编程语言的源代码文件的个数除以样本数据库中源代码文件的总个数,计算结果作为样本数据库中待分析编程语言出现概率; 将所述待分析编程语言下特征符号出现总概率乘以样本数据库中待分析编程语言出现概率,计算结果作为特征符号下出现待分析编程语言概率; 如果还有其他未分析的编程语言,则`执行分析语言选择模块,得到其他未分析的编程语言的特征符号下出现待分析编程语言概率,否则执行编程语言确认模块; 编程语言确认模块,从多个特征符号下出现待分析编程语言概率中选择最大值,将最大值对应的待分析编程语言,作为所述待分析文件的编程语言; 文件具体类型确认模块,根据所述待分析文件的编程语言,确定所述待分析文件属于所述编程语言的文件具体类型。
8.根据权利要求7所述的待分析文件的文件具体类型的判断装置,其特征在于,所述待分析编程语言下特征符号出现总概率采用如下方式计算: 获取样本数据库中每个特征符号在待分析编程语言中出现的概率乘以对应特征符号在所述待分析文件中的出现次数,计算结果作为待分析编程语言下特征符号出现概率,将每个特征符号对应的所述待分析编程语言下特征符号出现概率相加,计算结果作为待分析编程语言下特征符号出现总概率。
9.根据权利要求7所述的待分析文件的文件具体类型的判断装置,其特征在于,还包括: 样本文件获取模块,获取多个已知编程语言的源代码样本文件保存在样本数据库中; 统计语言选择模块,选择一个未统计的编程语言作为待统计编程语言; 统计模块,扫描待统计编程语言的所有源代码样本文件中与编程语言有关的特征符号及每个特征符号在所述源代码样本文件中的出现次数,计算每个特征符号在待统计编程语言中的出现次数除以所有特征符号在待统计编程语言中的出现次数,计算结果作为特征符号在待统计编程语言中出现的概率并保存在样本数据库中,如果还有未统计的编程语言则执行统计语言选择模块,否则执行结束统计模块; 结束统计模块,结束对多个已知编程语言的源代码样本文件的统计。
10.根据权利要求9所述的待分析文件的文件具体类型的判断装置,其特征在于,结束统计模块具体包括: 将保存在样本数据库中所有源代码样本文件计算一个摘要作为统计摘要,并保存在样本数据库中,结束对多个已知编程语言的源代码样本文件的统计。
11.根据权利要求10所述的待分析文件的文件具体类型的判断装置,其特征在于,还包括:将保存在样本数据库中所有源代码样本文件计算一个摘要作为校验摘要,如果所述校验摘要与所述统计摘要一致,则执行分析语言选择模块,否则执行统计样本文件获取模块至结束统计模块后,执行分析语言选择模块。
12.根据权利要求7所述的待分析文件的文件具体类型的判断装置,其特征在于,还包括: 文本文件判断模块,判断待分析文件是否为文本文件,如果待分析文件为文本文件,则根据待分析文件的文件名、扩展名以及幻数匹配查找所述待分析文件的文件具体类型,如果待分析文件的文件具体类型所属编程语言的可能性多于一种,则执行扫描模块至文件具体类型确认模块,确定所述待`分析文件的文件具体类型。
【文档编号】G06F17/30GK103778210SQ201410019393
【公开日】2014年5月7日 申请日期:2014年1月15日 优先权日:2014年1月15日
【发明者】甘露 申请人:北京京东尚科信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1