CN113127049A - 一种基于程序源码的程序组成及版本识别特征规则获取方法及装置 - Google Patents
一种基于程序源码的程序组成及版本识别特征规则获取方法及装置 Download PDFInfo
- Publication number
- CN113127049A CN113127049A CN202110434996.7A CN202110434996A CN113127049A CN 113127049 A CN113127049 A CN 113127049A CN 202110434996 A CN202110434996 A CN 202110434996A CN 113127049 A CN113127049 A CN 113127049A
- Authority
- CN
- China
- Prior art keywords
- file
- program
- component program
- feature
- component
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000012216 screening Methods 0.000 claims abstract description 4
- 238000005457 optimization Methods 0.000 claims description 11
- 238000000605 extraction Methods 0.000 claims description 10
- 230000006837 decompression Effects 0.000 claims description 5
- 230000003068 static effect Effects 0.000 claims description 3
- 102100037651 AP-2 complex subunit sigma Human genes 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Abstract
本发明公开了一种基于程序源码的程序组成及版本识别特征规则获取方法及装置,包括以下步骤:S1:采集下载互联网上常用第三方组件所有版本程序源码文件,并解压至对应版本文件夹中;S2:获取每种版本组件程序源码文件中的所有类型文件,并计算其md5值,形成“文件‑md5”文件特征,并形成该组件程序对应版本的初始的组件程序特征集;S3:将步骤S2获取的相同组件程序不同版本特征集之间,筛选出文件路径相同的且md5之不相同的特征集合;S4:同一组件程序不同版本识别的特征文件将具备组件程序包含文件的唯一性。本发明实现自动化搜集组件程序版本识别规则搜集,提升搜集效率,提升程序源码中第三方组件程序识别精准率。
Description
技术领域
本发明涉及特征规则获取领域,具体涉及一种基于程序源码的程序组成及版本识别特征规则获取方法及装置。
背景技术
近些年开源热度持续增长,开源在为企业和个人赢得商业价值的同时也面临一系列的风险,开源许可证的兼容性问题、开源项目的合规问题、开源安全漏洞问题和开源知识产权的侵权等问题日趋凸显。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值,每个组件程序形成特征集;
特征优化模块用于将不同版本组件程序特征集之间进行互相对比优化;特征存储模块用于将对比优化后的特征集进行存储。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (8)
1.一种基于程序源码的程序组成及版本识别特征规则获取方法,其特征在于,包括以下步骤:
S1:采集下载互联网上常用第三方组件所有版本程序源码文件,并解压至对应版本文件夹中;
S2:获取每种版本组件程序源码文件中的所有类型文件,并计算其md5值,形成“文件-md5”文件特征,并形成该组件程序对应版本的初始的组件程序特征集;
S3:将步骤S2获取的相同组件程序不同版本特征集之间,筛选出文件路径相同的且md5之不相同的特征集合;
S4:同一组件程序不同版本识别的特征文件具备组件程序包含文件的唯一性,即该文件特征即作为该组件程序源码的识别规则,在数据库中记录组件程序特征文件。
2.根据权利要求1所述的一种基于程序源码的程序组成及版本识别特征规则获取方法,其特征在于:所述步骤S2的过程中收集到的组件程序特征集需排除存部分通用配置文件;
所述通用配置文件:不同第三方组件程序都有可能会使用的,且文件夹或者文件名相同,无法定义文件归属哪一种程序组件的配置文件可视为通用文件,包括.gitignore、README.md、.idea。
3.根据权利要求1所述的一种基于程序源码的程序组成及版本识别特征规则获取方法,其特征在于:所述步骤S4中的程序特征文件包含组件程序名称、URL路径、文件md5值以及对应版本,且不同版本之间具有一定的差异性,即md5值不相同。
4.根据权利要求1所述的一种基于程序源码的程序组成及版本识别特征规则获取方法,其特征在于:所述步骤S1包含具体如下步骤:从互联网上各大开源程序发布平台采集并下载开源第三方组件程序所有版本的源码包,并进行解压,其中第三方组件程序名称与各版本源码包目录形成对应关系,一个文件夹包含一个组件程序某一版本源码。
5.根据权利要求1所述的一种基于程序源码的程序组成及版本识别特征规则获取方法,其特征在于:所述步骤S2中,遍历解压后的第三方组件程序文件夹,以程序根目录为起点为根目录,找到其下所有文件形成每个文件的相对地址,并且计算每个文件的md5,形成该组件程序的特征集,存储至第一数据库。
6.根据权利要求1所述的一种基于程序源码的程序组成及版本识别特征规则获取方法,其特征在于:所述步骤S3中,将每个版本组件程序特征集中的每个文件md5到组件程序其他版本特征集去寻找是否有相同路径的静态文件,若某文件在该组件程序的其它版本特征集中寻找到相同路径且md5值相同的文件,则该文件不作为组件程序版本特征文件,若某文件在该组件程序的其他版本特征集中寻找到相同路径且md5值不相同的,则表明该文件为该组件程序不同版本共有文件,具有版本识别性,保留作为特征文件。
7.根据权利要求6所述的一种基于程序源码的程序组成及版本识别特征规则获取方法,其特征在于:基于所述步骤S3的对比与优化结果,每个特征集中每个文件都是对应组件程序不同版本下路径相同且md5值不同,具有版本识别性,作为组件程序版本识别的特征规则,用于组件程序识别,存储至第二数据库中。
8.一种基于程序源码多版本特征提取的组件程序组成及版本识别特征规则获取装置,其特征在于:包括源码下载模块、解压模块、特征集提取模块、特征优化模块与特征存储模块;
其中,源码下载模块用户从互联网下载组件程序所有版本源码程序源码;解压模块用于将下载的组件程序源码分别进行解压缩;
特征集提取模块用于将解压后的组件程序源码文件夹中提取所有文件相对位置,并计算文件md5值,每个组件程序形成特征集;
特征优化模块用于将不同版本组件程序特征集之间进行互相对比优化;特征存储模块用于将对比优化后的特征集进行存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110434996.7A CN113127049A (zh) | 2021-04-22 | 2021-04-22 | 一种基于程序源码的程序组成及版本识别特征规则获取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110434996.7A CN113127049A (zh) | 2021-04-22 | 2021-04-22 | 一种基于程序源码的程序组成及版本识别特征规则获取方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113127049A true CN113127049A (zh) | 2021-07-16 |
Family
ID=76779055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110434996.7A Pending CN113127049A (zh) | 2021-04-22 | 2021-04-22 | 一种基于程序源码的程序组成及版本识别特征规则获取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113127049A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391112A (zh) * | 2017-06-23 | 2017-11-24 | 江苏艾科半导体有限公司 | 一种文件版本检测方法及其专用装置 |
CN110348219A (zh) * | 2019-06-13 | 2019-10-18 | 晶晨半导体(上海)股份有限公司 | 版本比对方法、系统、计算机设备及可读存储介质 |
CN110489701A (zh) * | 2019-08-19 | 2019-11-22 | 安徽三实信息技术服务有限公司 | 提取cms识别特征的方法、装置及cms识别方法 |
CN112445997A (zh) * | 2020-12-15 | 2021-03-05 | 安徽三实信息技术服务有限公司 | 一种提取cms多版本识别特征规则的方法及装置 |
-
2021
- 2021-04-22 CN CN202110434996.7A patent/CN113127049A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391112A (zh) * | 2017-06-23 | 2017-11-24 | 江苏艾科半导体有限公司 | 一种文件版本检测方法及其专用装置 |
CN110348219A (zh) * | 2019-06-13 | 2019-10-18 | 晶晨半导体(上海)股份有限公司 | 版本比对方法、系统、计算机设备及可读存储介质 |
CN110489701A (zh) * | 2019-08-19 | 2019-11-22 | 安徽三实信息技术服务有限公司 | 提取cms识别特征的方法、装置及cms识别方法 |
CN112445997A (zh) * | 2020-12-15 | 2021-03-05 | 安徽三实信息技术服务有限公司 | 一种提取cms多版本识别特征规则的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Breitinger et al. | Approximate matching: definition and terminology | |
US9015214B2 (en) | Process of generating a list of files added, changed, or deleted of a file server | |
CN109063421B (zh) | 一种开源许可证合规性分析与冲突性检测方法 | |
US8359472B1 (en) | Document fingerprinting with asymmetric selection of anchor points | |
Walls et al. | Forensic Triage for Mobile Phones with {DEC0DE} | |
EP2693356B1 (en) | Detecting pirated applications | |
JP5064510B2 (ja) | デジタル文書を管理するコンピュータベースツール | |
CN104036187B (zh) | 计算机病毒类型确定方法及其系统 | |
CN110647562B (zh) | 一种数据查询方法和装置、电子设备、存储介质 | |
US20070088766A1 (en) | Method and system for capturing and storing multiple versions of data item definitions | |
CN111125298A (zh) | 重建ntfs文件目录树的方法、设备及存储介质 | |
US10409572B2 (en) | Compiled file normalization | |
CN106951743A (zh) | 一种软件代码侵权检测方法 | |
Breitinger et al. | An Efficient Similarity Digests Database Lookup--a Logarithmic Divide and Conquer Approach | |
US20020194018A1 (en) | Method for matching complimentary business interests | |
CN107590233B (zh) | 一种文件管理方法及装置 | |
CN110941831B (zh) | 基于分片技术的漏洞匹配方法 | |
CN107463578B (zh) | 应用下载量统计数据去重方法、装置和终端设备 | |
CN113127049A (zh) | 一种基于程序源码的程序组成及版本识别特征规则获取方法及装置 | |
CN105653540B (zh) | 文件属性信息的处理方法和装置 | |
CN109117202B (zh) | 一种设置审计型配置项的方法和系统 | |
US11250127B2 (en) | Binary software composition analysis | |
CN111309677A (zh) | 一种分布式文件系统的文件管理方法及装置 | |
CN112131215B (zh) | 自底向上的数据库信息获取方法及装置 | |
CN113127355A (zh) | 一种分析识别第三方组件程序及版本的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |