公开/公告号CN113127049A
专利类型发明专利
公开/公告日2021-07-16
原文格式PDF
申请/专利权人 安徽三实信息技术服务有限公司;
申请/专利号CN202110434996.7
申请日2021-04-22
分类号G06F8/71(20180101);G06F11/36(20060101);
代理机构34147 合肥律众知识产权代理有限公司;
代理人赵娟
地址 230000 安徽省合肥市高新区科学大道118号5F创业园A栋408室
入库时间 2023-06-19 11:52:33
技术领域
本发明涉及特征规则获取领域,具体涉及一种基于程序源码的程序组成及版本识别特征规则获取方法及装置。
背景技术
近些年开源热度持续增长,开源在为企业和个人赢得商业价值的同时也面临一系列的风险,开源许可证的兼容性问题、开源项目的合规问题、开源安全漏洞问题和开源知识产权的侵权等问题日趋凸显。2019年11月18日,美国专利组织Unified Patents公布的一项研究结果显示,在对2012年以来已经出现的约260个开源项目/平台的美国地区法院专利诉讼案件进行分析后,发现开源项目相关产品的专利诉讼有逐年增长的趋势。企业需要对开源项目中存在的风险进行识别和盘点,开源组成分析工具应运而生。且同商业软件相比,开源软件同样存在风险,用户使用开源组成分析工具可以梳理开源软件成分,找出开源组件对应的许可证合规情况和漏洞情况,从而降低因开源许可证使用不当所带来的违规行为,也可以降低因开源漏洞未发现和修复所带来的安全问题。
现有的识别特征规则获取方法及装置,在使用过从中,搜集效率较低,准确性不够高,给识别特征规则获取方法及装置的使用带来了一定的影响,因此,提出一种基于程序源码的程序组成及版本识别特征规则获取方法及装置。
发明内容
本发明所要解决的技术问题在于:如何解决现有的识别特征规则获取方法及装置,在使用过从中,搜集效率较低,准确性不够高,给识别特征规则获取方法及装置的使用带来了一定的影响的问题,提供了一种基于程序源码的程序组成及版本识别特征规则获取方法及装置。
本发明是通过以下技术方案解决上述技术问题的,本发明包括以下步骤:
σ1:采集下载互联网上常用第三方组件所有版本程序源码文件,并解压至对应版本文件夹中;
σ2:获取每种版本组件程序源码文件中的所有类型文件,并计算其md5值,形成“文件-md5”文件特征,并形成该组件程序对应版本的初始的组件程序特征集;
σ3:将步骤σ2获取的相同组件程序不同版本特征集之间,筛选出文件路径相同的且md5之不相同的特征集合;
S4:同一组件程序不同版本识别的特征文件将具备组件程序包含文件的唯一性,即该文件特征即可作为该组件程序源码的识别规则,在数据库中记录组件程序特征文件。
优选的,所述步骤σ2的过程中收集到的组件程序特征集需排除存部分通用配置文件;
所述通用配置文件:不同第三方组件程序都有可能会使用的,且文件夹或者文件名相同,无法定义文件归属哪一种程序组件的配置文件可视为通用文件,包括.gitignore、README.md、.idea。
优选的,所述步骤S4中的程序特征文件包含组件程序名称、URL路径、文件md5值以及对应版本,且不同版本之间具有一定的差异性,即md5值不相同。
优选的,所述步骤S1包含具体如下步骤:从互联网上各大开源程序发布平台采集并下载开源第三方组件程序所有版本的源码包,并进行解压,其中第三方组件程序名称与各版本源码包目录需要形成对应关系,一个文件夹包含一个组件程序某一版本源码。
优选的,所述步骤S2中,遍历解压后的第三方组件程序文件夹,以程序根目录为起点为根目录,找到其下所有文件形成每个文件的相对地址,并且计算每个文件的md5,形成该组件程序的特征集,存储至第一数据库。
优选的,所述步骤S3中,将每个版本组件程序特征集中的每个文件md5到组件程序其他版本特征集去寻找是否有相同路径的静态文件,若某文件在该组件程序的其它版本特征集中寻找到相同路径且md5值相同的文件,则该文件不作为组件程序版本特征文件,若某文件在该组件程序的其他版本特征集中寻找到相同路径且md5值不相同的,则表明该文件为该组件程序不同版本共有文件,具有版本识别性,保留作为特征文件。
优选的,基于所述步骤S3的对比与优化结果,每个特征集中每个文件都是对应组件程序不同版本下路径相同且md5值不同,具有版本识别性,作为组件程序版本识别的特征规则,用于组件程序识别,存储至第二数据库中。
一种基于程序源码多版本特征提取的组件程序组成及版本识别特征规则获取装置,包括源码下载模块、解压模块、特征集提取模块、特征优化模块与特征存储模块;
其中,源码下载模块用户从互联网下载组件程序所有版本源码程序源码;解压模块用于将下载的组件程序源码分别进行解压缩;
特征集提取模块用于将解压后的组件程序源码文件夹中提取所有文件相对位置,并计算文件md5值,每个组件程序形成特征集;
特征优化模块用于将不同版本组件程序特征集之间进行互相对比优化;特征存储模块用于将对比优化后的特征集进行存储。
本发明相比现有技术具有以下优点:该基于程序源码多版本特征提取的程序组成及版本识别特征规则获取方法及装置,同种组件程序不同版本源码所使用的文件很多类似,重复率较高,所以需要除组件程序不同版本间相同路径且md5值相同的文件即可寻找到版本识别唯一性文件,即可实现版本识别特征规则提取,同时本方法脱离传统的人工搜集识别特征规则,实现自动化搜集组件程序版本识别规则搜集,提升搜集效率,提升程序源码中第三方组件程序识别精准率。
附图说明
图1是本发明的流程图;
图2是本发明的寻找组件程序文件特征规则的过程图;
图3是本发明的数据状态图。
具体实施方式
下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
如图1~3所示,本实施例提供一种技术方案:一种基于程序源码的程序组成及版本识别特征规则获取方法,包括以下步骤:
S1:采集下载互联网上常用第三方组件所有版本程序源码文件,并解压至对应版本文件夹中;
S2:获取每种版本组件程序源码文件中的所有类型文件,并计算其md5值,形成“文件-md5”文件特征,并形成该组件程序对应版本的初始的组件程序特征集;
S3:将步骤S2获取的相同组件程序不同版本特征集之间,筛选出文件路径相同的且md5之不相同的特征集合;
S4:同一组件程序不同版本识别的特征文件将具备组件程序包含文件的唯一性,即该文件特征即可作为该组件程序源码的识别规则,在数据库中记录组件程序特征文件。
所述步骤S2的过程中收集到的组件程序特征集需排除存部分通用配置文件;
所述通用配置文件:不同第三方组件程序都有可能会使用的,且文件夹或者文件名相同,无法定义文件归属哪一种程序组件的配置文件可视为通用文件,包括.gitignore、README.md、.idea。
所述步骤S4中的程序特征文件包含组件程序名称、URL路径、文件md5值以及对应版本,且不同版本之间具有一定的差异性,即md5值不相同。
所述步骤σ1包含具体如下步骤:从互联网上各大开源程序发布平台采集并下载开源第三方组件程序所有版本的源码包,并进行解压,其中第三方组件程序名称与各版本源码包目录需要形成对应关系,一个文件夹包含一个组件程序某一版本源码。
所述步骤σ2中,遍历解压后的第三方组件程序文件夹,以程序根目录为起点为根目录,找到其下所有文件形成每个文件的相对地址,并且计算每个文件的md5,形成该组件程序的特征集,存储至第一数据库。
所述步骤S3中,将每个版本组件程序特征集中的每个文件md5到组件程序其他版本特征集去寻找是否有相同路径的静态文件,若某文件在该组件程序的其它版本特征集中寻找到相同路径且md5值相同的文件,则该文件不作为组件程序版本特征文件,若某文件在该组件程序的其他版本特征集中寻找到相同路径且md5值不相同的,则表明该文件为该组件程序不同版本共有文件,具有版本识别性,保留作为特征文件。
基于所述步骤σ3的对比与优化结果,每个特征集中每个文件都是对应组件程序不同版本下路径相同且md5值不同,具有版本识别性,作为组件程序版本识别的特征规则,用于组件程序识别,存储至第二数据库中。
一种基于程序源码多版本特征提取的组件程序组成及版本识别特征规则获取装置,包括源码下载模块、解压模块、特征集提取模块、特征优化模块与特征存储模块;
其中,源码下载模块用户从互联网下载组件程序所有版本源码程序源码;解压模块用于将下载的组件程序源码分别进行解压缩;
特征集提取模块用于将解压后的组件程序源码文件夹中提取所有文件相对位置,并计算文件md5值,每个组件程序形成特征集;
特征优化模块用于将不同版本组件程序特征集之间进行互相对比优化;特征存储模块用于将对比优化后的特征集进行存储。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
机译: 收集规则信息存储设备,收集规则信息存储方法,公开密钥证书获取设备,公开密钥证书获取方法,可用/不可用的判断设备,可用/不可用的判断方法,计算机程序,记录的程序和记录公开密钥证书获取方法,可用/不可用的判断装置,可用/不可用的判断方法,计算机程序以及其中记录的具有计算机程序的介质
机译: 便携式数据介质智能卡,一种程序优化方法,包括在诊断单元的帮助下获取与程序单元有关的统计数据,并将诊断单元作为程序单元的组成部分来获取数据。
机译: 状态转移规则获取装置,动作选择学习装置,动作选择装置,状态转移规则获取方法,动作选择方法和程序