一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

三维CAD软件的源代码检测方法、装置和计算机设备与流程

2022-12-20 00:49:29 来源:中国专利 TAG:

三维cad软件的源代码检测方法、装置和计算机设备
技术领域
1.本技术涉及源代码检测技术领域,特别是涉及一种三维cad软件的源代码检测方法、装置、计算机设备、存储介质和计算机程序产品。


背景技术:

2.三维cad软件被广泛应用在机械制造、航空航天等领域,它是企业进行产品创新的有力工具。
3.现有技术中,直接对三维cad软件的代码进行人工查漏查重,效率低,精度不高。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种能够正确检测代码的开源率和漏洞数量的三维cad软件的源代码检测方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
5.第一方面,本技术提供了一种三维cad软件的源代码检测方法,所述方法包括:
6.获取开源代码库中多个开源源代码的特征值,所述多个开源源代码的特征值是对开源代码库中所述多个开源源代码进行特征提取得到的;
7.对待测cad软件的源代码进行特征提取,得到所述待测cad软件的源代码的特征值;
8.将各所述开源源代码的特征值与所述待测cad软件的源代码的特征值进行匹配,得到所述待测cad软件的源代码中的开源源代码;
9.根据所述待测cad软件的源代码中所述开源源代码的数量,确定所述待测 cad软件的源代码的开源率;
10.将所述待测cad软件的源代码与漏洞库中的漏洞参考代码进行匹配,确定所述待测cad软件的源代码的漏洞数量;
11.根据所述待测cad软件的源代码的开源率和漏洞数量确定所述待测cad 软件的安全级别。
12.在其中一个实施例中,所述对待测cad软件的源代码进行特征提取,得到所述待测cad软件的源代码的特征值,包括:
13.确定不同识别精度对应的代码层级;
14.提取所述待测cad软件的源代码在不同代码层级的代码特征;
15.对所述代码特征进行哈希处理,得到所述待测cad软件的源代码不同代码层级对应的特征值。
16.在其中一个实施例中,所述将各所述开源源代码的特征值与所述待测cad 软件的源代码的特征值进行匹配,得到所述待测cad软件的源代码中的开源源代码,包括:
17.获取目标识别精度;
18.获取所述目标识别精度对应的目标代码层级;
19.将所述待测cad软件的源代码在目标代码层级的特征值,与各所述开源源代码在目标代码层级的特征值进行匹配,得到所述待测cad软件的源代码中的开源源代码。
20.在其中一个实施例中,所述代码层级包括函数级、类级、文件级、包级和项目级;所述函数级、类级、文件级、包级和项目级对应的识别精度依次降低;
21.所述提取所述待测cad软件的源代码在不同代码层级的特征,包括:
22.对待测cad软件的源代码的项目的文本摘要进行特征提取,得到待测cad 软件的源代码在项目级的代码特征;
23.对待测cad软件的源代码的项目展开后的包级的文本摘要进行特征提取,得到待测cad软件的源代码在包级的代码特征;
24.对待测cad软件的源代码的包展开后的文件级的文本摘要进行提取,得到待测cad软件的源代码在文件级的代码特征;
25.对待测cad软件的源代码的文件展开后的类级的文本摘要进行提取,得到待测cad软件的源代码在类级的代码特征;
26.对待测cad软件的源代码的类展开后的函数级符号进行符号分析,得到待测cad软件的源代码在函数级的代码特征。
27.在其中一个实施例中,所述将所述待测cad软件的源代码在目标代码层级的特征值,与各所述开源源代码在目标代码层级的特征值进行匹配,得到所述待测cad软件的源代码中的开源源代码,包括:
28.将所述待测cad软件的源代码在目标代码层级的特征值进行分段,得到所述待测cad软件的源代码在目标代码层级的分段特征值;
29.将各所述开源源代码在目标代码层级的特征值进行分段,得到所述开源源代码在目标代码层级的分段特征值;
30.对所述待测cad软件的源代码在目标代码层级的分段特征值与所述开源源代码在目标代码层级的分段特征值进行相似度匹配,得到第一相似距离;
31.当第一相似距离小于第一预设阈值时,计算所述待测cad软件的源代码的目标代码层级的特征值,与各所述开源源代码的目标代码层级的特征值的第二相似距离;
32.若所述第二相似距离小于第二预设阈值,则将所述待测cad软件的源代码标记为开源源代码。
33.在其中一个实施例中,所述方法还包括:
34.从cad软件的目标开源网页中获取新的三维cad软件的开源源代码;
35.当根据所述新的开源源代码的信息确定已存历史版本的开源源代码时,检测所述新的开源源代码与所述历史版本的开源源代码的代码内容变化;
36.若所述代码内容变化时,从对应的开源网页中获取所述新的开源源代码的修改信息;
37.根据所述新的开源源代码和所述修改信息更新所述开源代码库。
38.在其中一个实施例中,所述方法还包括:
39.当根据所述开源源代码的特征值与所述待测cad软件的源代码的特征值匹配时,确定匹配的所述开源源代码的是否为历史版本的开源源代码;
40.若是,则将对应的新的开源源代码推送至用户终端。
41.第二方面,本技术提供了一种三维cad软件的源代码检测装置,所述装置包括:
42.获取模块,用于获取开源代码库中多个开源源代码的特征值,所述多个开源源代码的特征值是对开源代码库中所述多个开源源代码进行特征提取得到的;
43.提取模块,用于对待测cad软件的源代码进行特征提取,得到所述待测 cad软件的源代码的特征值;
44.匹配模块,用于将各所述开源源代码的特征值与所述待测cad软件的源代码的特征值进行匹配,得到所述待测cad软件的源代码中的开源源代码;
45.分析模块,用于根据所述待测cad软件的源代码中所述开源源代码的数量,确定所述待测cad软件的源代码的开源率;
46.处理模块,用于将所述待测cad软件的源代码与漏洞库中的漏洞参考代码进行匹配,确定所述待测cad软件的源代码的漏洞数量;
47.评估模块,用于根据所述待测cad软件的源代码的开源率和漏洞数量确定所述待测cad软件的安全级别。
48.第三方面,本技术提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法的步骤。
49.第四方面,本技术提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。
50.上述三维cad软件的源代码检测方法、装置、计算机设备、存储介质和计算机程序产品,获取开源代码库中多个开源源代码的特征值,对待测cad软件中源代码进行特征提取,得到待测cad软件的源代码特征值,将源代码特征化,便于后续代码之间进行相似匹配。将各开源源代码的特征值与待测cad软件的源代码的特征值进行匹配,得到待测cad软件的源代码中的开源源代码。根据待测cad软件的源代码中的开源源代码的数量,确定待测cad软件的源代码的开源率,以此确定cad软件中代码的混源程度,将待测cad软件的源代码与漏洞库中的漏洞参考代码进行匹配,确定待测cad软件的源代码的漏洞数量,根据待测cad软件的源代码的开源率和漏洞数量开源确定待测cad软件的安全级别,开源率越低,漏洞数量越少,代表待测cad软件的安全级别越高,通过将待测cad软件的源代码与开源源代码以及将待测cad软件的源代码与漏洞参考代码相匹配,可自动化检测待测cad软件的安全级别。
附图说明
51.图1为一个实施例中三维cad软件的源代码检测方法的应用环境图;
52.图2为一个实施例中三维cad软件的源代码检测方法的流程示意图;
53.图3为一个实施例中文件级待测cad软件的源代码的提取方法的示意图;
54.图4为一个实施例中不同层级待测cad软件的源代码的特征值提取方法的示意图;
55.图5为一个实施例中不同层级待测cad软件的源代码的代码特征提取方法的示意图;
56.图6为一个实施例中待测cad软件的源代码的分段特征的匹配流程示意图;
57.图7为一个实施例中面向三维cad软件的源代码安全性评测方法的流程示意图;
58.图8为一个实施例中三维cad软件的源代码检测装置的结构框图;
59.图9为一个实施例中计算机设备的内部结构图。
具体实施方式
60.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
61.本技术实施例提供的三维cad软件的源代码检测方法,可以应用于如图1 所示的应用环境中。包括:服务器101、开源网页服务器102和用户终端103。
62.其中,开源网页服务器102中存储开源代码库和漏洞库,其中,开源代码库中包含多个开源源代码和多个开源源代码所对应的特征值,漏洞库中包含多个漏洞参考代码。
63.用户终端103中存储有待测cad软件的源代码,服务器101从开源网页服务器102中获取多个开源源代码,并对多个开源源代码进行特征提取得到多个开源源代码的特征值,服务器101还从用户终端103获取待测cad软件的源代码并进行特征提取,得到待测cad软件的源代码的特征值。
64.服务器101再将将各开源源代码的特征值与待测cad软件的源代码的特征值进行匹配,得到待测cad软件的源代码中的开源源代码。服务器101根据待测cad软件的源代码中开源源代码的数量,确定待测cad软件的源代码的开源率。服务器101将待测cad软件的源代码与漏洞库中的漏洞参考代码进行匹配,确定待测cad软件的源代码的漏洞数量。服务器101根据待测cad软件的源代码的开源率和漏洞数量确定待测cad软件的安全级别。
65.其中,计算机设备101不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和物联网设备,物联网设备可为智能电视、智能车载设备等。用户终端103不限于是各种个人计算机、笔记本电脑、智能手机和平板电脑。服务器 102可以用独立服务器或是多个服务器组成的服务集群来实现。
66.在一个实施例中,如图2所示,提供了一种三维cad软件的源代码检测方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
67.s200,获取开源代码库中多个开源源代码的特征值,多个开源源代码的特征值是对开源代码库中多个开源源代码进行特征提取得到的。
68.其中,开源代码库依托爬虫模块构建而成,首先,为全面准确评估三维cad 软件的整体复用代码的情况,采取全面爬取github、gitlab等网站存放的开源源代码,根据检测精度的要求可设置爬取项目的关注度阈值,如在爬虫脚本中设置只爬取关注度大于4星的开源项目源代码。其次,为形成对三维cad软件有一定针对性的代码库,在爬虫脚本中添加设置“cad”关键字条件,持续爬取最新版本的开源源代码。最后,在定位了开源cad软件项目后,在爬取master 分支的最新版本代码后按预设cad关键字条件爬取开源cad软件所有的历史版本代码,形成针对三维cad软件带代码修正信息的开源代码库。
69.具体地,爬虫模块依托于爬虫脚本,爬虫脚本中为保持大规模、长时间的信息爬取工作需要持续添加新的代理ip,代码爬虫模块按预设的项目爬取条件,依托开源网站开发权限到开源托管网站持续获取相关代码数据,即在爬虫脚本中添加github、gitlab等开源托管网站开发者token,然后脚本按项目地址、代码名称等信息以及所设置的项目爬取条件爬取源代码,将源代码形成json文件通过mongdb数据库进行数据归档处理形成漏洞库。其
中,项目爬取条件可以为项目关注度,如项目关注度大于四星,爬虫脚本则在开源托管网站上爬取关注度大于四星的项目代码。
70.其中,开源源代码的特征值可以为代码的哈希值,通过对开源源代码进行特征提取得到,开源源代码一般为多行代码,可理解的是,各行代码对应有一个哈希值,多行代码也对应有一个哈希值。
71.具体地,对开源代码库中开源源代码进行特征提取可以是采用哈希算法获得各行开源源代码的哈希值或者对开源源代码进行特征提取获得不同层级的哈希值。需说明的是,哈希算法通常有以下几个特点:正像快速:原始数据可以快速计算出哈希值。冲突避免:很难找到不同的原始数据得到相同的哈希值,也即,保证了不同源代码匹配的唯一性。因此,可以将各个源代码之间的哈希值进行比对,从而判断各个源代码之间是否相同。
72.通过对开源代码库中多个开源源代码进行特征提取得到多个开源源代码的特征值,将源代码特征值化,便于后续过程源代码之间的相似匹配。
73.s202,对待测cad软件的源代码进行特征提取,得到待测cad软件的源代码的特征值。
74.其中,待测cad软件指经软件开发后的形成的具体的图像处理软件,待测 cad软件中包含多行待测cad软件的源代码。
75.需说明的是,随着三维cad软件在市场中的发展,在开源浪潮的影响下三维cad软件的开发模式发生了剧烈变化,开源源代码在软件开发过程中被广泛复用。另外,开源软件具有开放、共享、自由等特性,在软件开发中扮演着越来越重要的角色,也是软件供应链中重要组成部分,许多组织和三维cad软件产品开发中都直接或间接复用开源源代码和开源软件。
76.因此,待测cad软件的源代码中常存在一定数量的开源源代码。
77.具体地,对待测cad软件的源代码进特征提取指按照一定提取层级对待测 cad软件的源代码进行分层次提取,选取合适的提取层级将待测cad软件的源代码分成多个目标层级的源代码,并对目标层级的源代码依据哈希算法得到代码哈希值,将代码哈希值作为待测cad软件的源代码特征值。
78.其中,对目标层级的源代码依据哈希算法得到代码哈希值,包括:对目标层级的源代码采用文件和函数级冗余消除解决同一项目多版本间存在大量重复代码问题,然后采用消除空白字符、归一化标识符名称等多级正则化方法,最后经过控制流等符号分析以及哈希函数映射获取代码哈希值。
79.通过使用哈希算法对目标层级的源代码进行提取得到代码哈希值,降低了相似代码检测计算量,支撑实现软件成分分析。
80.s204,将各开源源代码的特征值与待测cad软件的源代码的特征值进行匹配,得到待测cad软件的源代码中的开源源代码。
81.其中,将各开源源代码的特征值与待测cad软件的源代码的特征值进行匹配前,需要根据用户的想要的识别精度来生成对应提取精细度的特征值。
82.具体地,若用户选择识别精度越高,各开源源代码和待测cad软件的源代码的提取层级就越小,对应的提取精度越高,提取的时间也就越长。
83.其中,将待测cad软件的源代码的特征值和各开源源代码的特征值与待测 cad软
件的源代码的特征值依次进行匹配。匹配的方式可以是相似度匹配,前述匹配结果表现为相似度距离,设置阈值,若待测cad软件的源代码的特征值与开源源代码的特征值的相似度距离在阈值范围内,则认为该待测cad软件的源代码为开源源代码。
84.具体地,如图3所示,待测cad软件的源代码和各开源源代码的提取层级为文件级,将待测cad软件的源代码依据文件级提取层级进行划分,得到多个文件级的待测cad软件的源代码,并对多个文件级的待测cad软件的源代码进行特征提取,得到多个文件级的待测cad软件的源代码的特征值。再将多个文件级的待测cad软件的源代码的特征值与事先处理得到的各开源代码的特征值进行相似度匹配,若匹配成功,则认为匹配成功的文件级的待测cad软件的源代码为开源源代码,得到待测cad软件的源代码中的开源源代码。
85.通过将将各开源源代码的特征值与待测cad软件的源代码的特征值进行匹配,将匹配成功后的待测cad软件的源代码作为开源源代码,得到待测cad 软件的源代码中的开源源代码。可自动化判断待测cad软件的源代码中有多少为混源部分。
86.s206,根据待测cad软件的源代码中开源源代码的数量,确定待测cad 软件的源代码的开源率。
87.其中,待测cad软件的源代码中开源源代码的数量可以为s204步骤中匹配成功的开源源代码的行数所对应的待测cad软件的源代码行数。
88.待测cad软件的源代码包含多行代码,包括自研代码行数、克隆代码行数 (匹配成功的开源源代码对应的待测cad软件的源代码行数)和小文件代码行数(指代码行数≤50行,并且代码容量≤1kb的文件)。
89.根据自研代码行数、克隆代码行数和小文件代码行数计算待测cad软件的源代码的开源率,自研代码行数在待测cad软件的源代码的总行数中所占比例越高,开源率越低。
90.s208,将待测cad软件的源代码与漏洞库中的漏洞参考代码进行匹配,确定待测cad软件的源代码的漏洞数量。
91.其中,在cve公共安全平台爬取所有年份的漏洞信息,记录下漏洞标识,漏洞标识为cve漏洞编号、cve官网链接、cvss2严重等级等形成json文件,然后基于漏洞标识进行网页搜索得到与漏洞标识对应的漏洞参考代码,并将漏洞参考代码具体网址记录在漏洞标识中,以便进行后续待测cad软件的源代码与漏洞参考代码匹配对齐过程。
92.其中,根据漏洞参考代码和漏洞参考代码对应的漏洞标识建立漏洞库。
93.具体地,将待测cad软件的源代码与漏洞参考代码进行特征提取,将特征提取后的特征值进行相似度匹配,成功匹配的次数即为漏洞数量。
94.通过事先建立好漏洞库可以支撑待测cad软件的源代码与漏洞库中的漏洞参考代码的匹配过程。
95.s210,根据待测cad软件的源代码的开源率和漏洞数量确定待测cad软件的安全级别。
96.其中,根据待测cad软件的克隆代码行数、代码总行数和小文件代码行数确定待测cad软件的源代码的开源率,开源率计算公式如下:
97.98.其中,克隆代码行数为匹配成功的开源源代码对应的待测cad软件的源代码行数,代码总行数为待测cad软件的源代码总行数,小文件代码行数为指代码行数≤50行,并且代码容量≤1kb的文件的行数。
99.根据待测cad软件的源代码的开源率和漏洞数量确定待测cad软件的安全级别,如下表所示:
100.表1源代码安全级别、开源率和漏洞数量的对应关系表
101.源代码的安全性级别开源率/漏洞数量极好<2%/0优<5%/≤1良<10%/≤2中<20%/≤3不合格<35%/≤4
102.其中,源代码的安全性级别为待测cad软件的源代码的安全级别,漏洞数量为平均每百万行待测cad软件的源代码与漏洞参考代码的成功匹配次数,开源率和漏洞数量关系为“和”的关系。例如,开源率为1%并且漏洞数量为0个,此时待测cad软件的源代码的安全级别为极好,又例如,开源率为3%并且漏洞数量为2个,此时待测cad软件的源代码的安全级别良。
103.上述三维cad软件的源代码检测方法中,获取开源代码库中多个开源源代码的特征值,对待测cad软件中源代码进行特征提取,得到待测cad软件的源代码特征值,将源代码特征化,便于后续代码之间进行相似匹配。将各开源源代码的特征值与待测cad软件的源代码的特征值进行匹配,得到待测cad 软件的源代码中的开源源代码。根据待测cad软件的源代码中的开源源代码的数量,确定待测cad软件的源代码的开源率,以此确定cad软件中代码的混源程度,将待测cad软件的源代码与漏洞库中的漏洞参考代码进行匹配,确定待测cad软件的源代码的漏洞数量,根据待测cad软件的源代码的开源率和漏洞数量开源确定待测cad软件的安全级别,开源率越低,漏洞数量越少,代表待测cad软件的安全级别越高,通过将待测cad软件的源代码与开源源代码以及将待测cad软件的源代码与漏洞参考代码相匹配,可自动化检测待测 cad软件的安全级别。
104.在一个实施例中,对待测cad软件的源代码进行特征提取,得到待测cad 软件的源代码的特征值,包括:确定不同识别精度对应的代码层级;提取待测 cad软件的源代码在不同代码层级的代码特征;对代码特征进行哈希处理,得到待测cad软件的源代码不同代码层级对应的特征值。
105.其中,识别精度为对待测cad软件的源代码进行特征提取的特征的深度,如识别精度越高,对待测cad软件的源代码进行特征提取的特征的深度越深。
106.代码层级为待测cad软件的源代码的不同层级,按照识别精度从低至高可分为项目级、包级、文件级、类级、函数级。其中,项目级识别精度低,特征提取速度快。
107.具体地,如图4所示,提取待测cad软件的源代码在不同代码层级的代码特征包括项目级代码特征、包级代码特征、文件级代码特征、类级代码特征、函数级代码特征,对各代码特征进行哈希处理分别得到包级待测cad软件的源代码的特征值、文件级待测cad软件的源代码的特征值、类级待测cad软件的源代码的特征值、函数级待测cad软件的源代码的特
征值。
108.其中,哈希处理可以是基于局部敏感哈希对各代码特征构建指纹特征,各代码特征所构建的指纹特征即为待测cad软件的源代码不同代码层级对应的特征值。
109.具体地,对各代码特征经过冗余消除、空白字符消除等处理后,经过哈希函数映射从而获取各代码特征对应的指纹特征。
110.本实施例中,通过使用多层软件代码特征的提取策略,确定不同识别精度对应的代码层级,提取待测cad软件的源代码在不同代码层级的代码特征,解决了因为三维cad软件代码量大、杂而造成的提取代码特征不准确的问题,进一步将不同代码层级的代码特征转化为待测cad软件的源代码不同代码层级对应的特征值,便于后续与其他源代码特征值进行特征比对的过程。
111.在一个实施例中,将各开源源代码的特征值与待测cad软件的源代码的特征值进行匹配,得到待测cad软件的源代码中的开源源代码,包括:获取目标识别精度;获取目标识别精度对应的目标代码层级;将待测cad软件的源代码在目标代码层级的特征值,与各开源源代码在目标代码层级的特征值进行匹配,得到待测cad软件的源代码中的开源源代码。
112.其中,目标识别精度为用户预先设定的识别精度,以目标识别精度为文件级为例进行说明,获取文件级识别精度对应的文件级代码层级,将文件级待测 cad软件的源代码在目标代码层级的特征值与文件级各开源源代码在目标代码层级的特征值进行匹配,得到待测cad软件的源代码中的开源源代码。
113.本实施例中,通过合理选择目标识别精度得到对应的代码层级进而得到目标层级下的待测cad软件的源代码中的开源源代码,可以根据用户的识别精度要求和花费时间多少,自行选择目标识别精度。
114.在一个实施例中,代码层级包括函数级、类级、文件级、包级和项目级;函数级、类级、文件级、包级和项目级对应的识别精度依次降低;提取待测cad 软件的源代码在不同代码层级的特征,包括:对待测cad软件的源代码的项目的文本摘要进行特征提取,得到待测cad软件的源代码在项目级的代码特征;对待测cad软件的源代码的项目展开后的包级的文本摘要进行特征提取,得到待测cad软件的源代码在包级的代码特征;对待测cad软件的源代码的包展开后的文件级的文本摘要进行提取,得到待测cad软件的源代码在文件级的代码特征;对待测cad软件的源代码的文件展开后的类级的文本摘要进行提取,得到待测cad软件的源代码在类级的代码特征;对待测cad软件的源代码的类展开后的函数级符号进行符号分析,得到待测cad软件的源代码在函数级的代码特征。
115.其中,如图5所示,若需提取待测cad软件的源代码在项目级代码层级的特征,则通过项目级的文本摘要提取多个项目级待测cad软件的源代码,多个项目级待测cad软件的源代码组成项目级的代码特征。
116.若需提取待测cad软件的源代码在包级代码层级的特征,则通过包级的文本摘要提取多个包级待测cad软件的源代码,多个包级待测cad软件的源代码组成包级的代码特征,包级的文本摘要由项目级的文本摘要展开得到。
117.若需提取待测cad软件的源代码在文件级代码层级的特征,则通过文件级的文本摘要提取多个文件级待测cad软件的源代码,多个文件级待测cad软件的源代码组成文件级的代码特征,文件级的文本摘要由包级的文本摘要展开得到。
118.若需提取待测cad软件的源代码在类级代码层级的特征,则通过类级的文本摘要提取多个类级待测cad软件的源代码,多个类级待测cad软件的源代码组成类级的代码特征,类级的文本摘要由文件级的文本摘要展开得到。
119.若需提取待测cad软件的源代码在函数级代码层级的特征,则通过类级文本摘要展开后的函数级符号进行符号分析,提取多个函数级待测cad软件的源代码,多个函数级待测cad软件的源代码组成待测cad软件的源代码在函数级的代码特。
120.本实施例中,若用户对于测试时间不敏感可以选择函数级的代码检测,其检测精度高但是耗时长,若用户需要在最短时间内完成检测,则可以选择项目级的代码检测,其检测精度低,但是耗时短。另外,用户可以自定义器所需要的代码层级,可以混合使用类级、文件级、函数级的特征进行代码检测,可根据用户对时间的敏感度和检测精度要求灵活选择代码检测类型。
121.在一个实施例中,将待测cad软件的源代码在目标代码层级的特征值,与各开源源代码在目标代码层级的特征值进行匹配,得到待测cad软件的源代码中的开源源代码,包括:将待测cad软件的源代码在目标代码层级的特征值进行分段,得到待测cad软件的源代码在目标代码层级的分段特征值;将各开源源代码在目标代码层级的特征值进行分段,得到开源源代码在目标代码层级的分段特征值;对待测cad软件的源代码在目标代码层级的分段特征值与开源源代码在目标代码层级的分段特征值进行相似度匹配;当相似距离小于第一预设阈值时,计算待测cad软件的源代码的目标代码层级的特征值,与各开源源代码的目标代码层级的特征值的第二相似距离;若第二相似距离小于第二预设阈值,则将待测cad软件的源代码标记为开源源代码。
122.其中,在得到待测cad软件的源代码在目标代码层级的特征值后进行分段指将特征值分为多段,如,将特征值分为四段,降低特征值匹配过程中的计算量。
123.具体地,如图6所示的待测cad软件的源代码的分段特征的匹配流程示意图,包括:
124.s600,对待测cad软件的源代码在目标代码层级的分段特征值与开源源代码在目标代码层级的分段特征值进行相似度匹配,得到第一相似距离。
125.s602,对第一相似距离是否小于第一预设阈值进行判断,若是,则进入s604,若否,则进行s606。
126.s604,若两分段特征值的第一相似距离小于第一预设阈值,代表待测cad 软件的源代码的分段特征值和开源源代码的特征值初步匹配成功,并执行s608。
127.其中,当待测cad软件的源代码的分段特征值和开源源代码的特征值初步匹配成功,进一步判断待测cad软件的源代码的目标代码层级的特征值,与各开源源代码的目标代码层级的特征值的第二相似距离。
128.s606,若第一相似距离大于第一预设阈值,则代表待测cad软件的源代码的分段特征值和开源源代码的特征值未匹配成功,流程结束。
129.s608,计算待测cad软件的源代码的目标代码层级的特征值,与各开源源代码的目标代码层级的特征值的第二相似距离,对第二相似距离是否小于第二预设阈值进行判断,若是,则进入s610,若否,则进行s612。
130.s610,若第二相似距离小于第二预设阈值,则将待测cad软件的源代码标记为开源源代码。
131.s612,若第二相似距离大于第二预设阈值,则代表待测cad软件的源代码的分段特征值和开源源代码的特征值未匹配成功,流程结束。
132.本实施例中,通过将特征值进行分段的方式,设置第一预设阈值和第二预设阈值对分段后的特征值匹配结果的相似距离进行判断,若两次匹配成功则将待测cad软件的源代码标记为开源源代码,若一次匹配失败则结束流程,不必每次都进行源代码的所有特征值之间的相似度计算,只需进行分段计算,减少了计算量。
133.在一个实施例中,从cad软件的目标开源网页中获取新的三维cad软件的开源源代码;当根据新的开源源代码的信息确定已存历史版本的开源源代码时,检测新的开源源代码与历史版本的开源源代码的代码内容变化;若代码内容变化时,从对应的开源网页中获取新的开源源代码的修改信息;根据新的开源源代码和修改信息更新开源代码库。
134.其中,采用脚本工具对cad软件的目标开源网页进行定期爬取,得到新版本的开源源代码,并将新的开源源代码与历史版本的开源源代码进行检测,若历史版本的开源源代码的代码内容发生改变,则生成代码更新迭代标识,更新迭代标识包含代码修改描述信息、代码修改者id、修改者等信息。
135.具体地,更新开源代码库的步骤包括:(1)爬取新的开源源代码的包级代码,(2)遍历历史版本的开源源代码的包级代码,(3)将步骤(1)和(2) 中有相同代码名称的新的开源源代码和历史的源代码进行检测,(4)若步骤(3) 中检测的新的开源源代码和历史的源代码有变化时,按照新的开源源代码和历史的源代码的文件名称和开源源代码对应的代码托管网站为检索条件,进行网页检索,得到新的开源源代码和历史的源代码的修改信息,(5)根据新的开源源代码和历史的源代码的修改信息生成代码更新迭代标识,并根据新的开源源代码和代码更新迭代标识更新开源代码库。
136.本实施例中,通过对cad软件的目标开源网页进行定期爬取,根据新的开源源代码和历史的源代码的修改信息生成代码更新迭代标识,根据新的开源源代码和更新迭代标识更新开源代码库,使开源代码库内的开源源代码准确,保证了源代码之间匹配结果的准确性。
137.在一个实施例中,当根据开源源代码的特征值与待测cad软件的源代码的特征值匹配时,确定匹配的开源源代码的是否为历史版本的开源源代码;若是,则将对应的新的开源源代码推送至用户终端。
138.其中,用户终端中存储有待测cad软件的源代码,若当根据开源源代码的特征值与待测cad软件的源代码的特征值匹配时,根据开源源代码是否发生修改,也即,开源源代码是否携带代码更新迭标识,确定匹配的开源源代码的是否为历史版本的开源源代码,若是,则将对应的新的开源源代码和更新迭代标识推送至用户终端。
139.本实施例中,通过确定匹配的开源源代码的是否为历史版本的开源源代码,若是,则将对应的新的开源源代码和更新迭代标识推送至用户终端,避免了因为用户使用历史版本的源代码而造成的缺陷风险的问题。
140.在一个实施例中,如图7所示,提供了一种面向三维cad软件的源代码安全性评测方法,包括:
141.s700,获取开源代码库中多个开源源代码的特征值,多个开源源代码的特征值是对开源代码库中多个开源源代码进行特征提取得到的。
142.s702,确定不同识别精度对应的代码层级,提取待测cad软件的源代码在不同代码层级的代码特征,对代码特征进行哈希处理,得到待测cad软件的源代码不同代码层级对应的特征值。
143.其中,提取待测cad软件的源代码在不同代码层级的代码特征,包括:对待测cad软件的源代码的项目的文本摘要进行特征提取,得到待测cad软件的源代码在项目级的代码特征。
144.对待测cad软件的源代码的项目展开后的包级的文本摘要进行特征提取,得到待测cad软件的源代码在包级的代码特征。
145.对待测cad软件的源代码的包展开后的文件级的文本摘要进行提取,得到待测cad软件的源代码在文件级的代码特征。
146.对待测cad软件的源代码的文件展开后的类级的文本摘要进行提取,得到待测cad软件的源代码在类级的代码特征。
147.对待测cad软件的源代码的类展开后的函数级符号进行符号分析,得到待测cad软件的源代码在函数级的代码特征。
148.s704,获取目标识别精度,获取目标识别精度对应的目标代码层级,将待测cad软件的源代码在目标代码层级的特征值,与各开源源代码在目标代码层级的特征值进行匹配,得到待测cad软件的源代码中的开源源代码。
149.其中,将待测cad软件的源代码在目标代码层级的特征值进行分段,得到待测cad软件的源代码在目标代码层级的分段特征值。
150.将各开源源代码在目标代码层级的特征值进行分段,得到开源源代码在目标代码层级的分段特征值。
151.对待测cad软件的源代码在目标代码层级的分段特征值与开源源代码在目标代码层级的分段特征值进行相似度匹配,得到第一相似距离。
152.当第一相似距离小于第一预设阈值时,计算待测cad软件的源代码的目标代码层级的特征值,与各开源源代码的目标代码层级的特征值的第二相似距离。
153.若第二相似距离小于第二预设阈值,则将待测cad软件的源代码标记为开源源代码。
154.s706,根据待测cad软件的源代码中开源源代码的数量,确定待测cad 软件的源代码的开源率。
155.s708,将待测cad软件的源代码与漏洞库中的漏洞参考代码进行匹配,确定待测cad软件的源代码的漏洞数量。
156.s710,根据待测cad软件的源代码的开源率和漏洞数量确定待测cad软件的安全级别。
157.本实施例中,获取开源代码库中多个开源源代码的特征值,对待测cad软件中源代码进行特征提取,得到待测cad软件的源代码特征值,将源代码特征化,便于后续代码之间进行相似匹配。将各开源源代码的特征值与待测cad软件的源代码的特征值进行匹配,得到待测cad软件的源代码中的开源源代码。根据待测cad软件的源代码中的开源源代码的数量,确定待测cad软件的源代码的开源率,以此确定cad软件中代码的混源程度,将待测cad软件的源代码与漏洞库中的漏洞参考代码进行匹配,确定待测cad软件的源代码的漏洞数
量,根据待测cad软件的源代码的开源率和漏洞数量开源确定待测cad软件的安全级别,开源率越低,漏洞数量越少,代表待测cad软件的安全级别越高,通过将待测cad软件的源代码与开源源代码以及将待测cad软件的源代码与漏洞参考代码相匹配,可自动化检测待测cad软件的安全级别。
158.应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
159.基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的三维cad软件的源代码检测方法的三维cad软件的源代码检测装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个三维cad软件的源代码检测装置实施例中的具体限定可以参见上文中对于三维cad软件的源代码检测方法的限定,在此不再赘述。
160.在一个实施例中,如图8所示,提供了一种三维cad软件的源代码检测装置,包括:获取模块800、提取模块801、匹配模块802、分析模块803、处理模块804和评估模块805,其中:
161.获取模块800,用于获取开源代码库中多个开源源代码的特征值;多个开源源代码的特征值是根据预设代码层级对开源代码库中多个开源源代码进行特征提取得到的。
162.提取模块801,用于根据预设代码层级对待测cad软件的源代码进行特征提取,得到待测cad软件的源代码的特征值。
163.匹配模块802,用于将各开源源代码的特征值与待测cad软件的源代码的特征值进行匹配,得到待测cad软件的源代码中的开源源代码。
164.分析模块803,用于根据待测cad软件的源代码中开源源代码的数量,确定三维cad软件的开源率。
165.处理模块804,用于将待测cad软件的源代码与漏洞库中的漏洞参考代码进行匹配,确定待测cad软件的源代码的漏洞数量。
166.评估模块805,用于根据三维cad软件的开源率和漏洞数量确定待测cad 软件的安全级别。
167.在一个实施例中,提取模块801,还用于确定不同识别精度对应的代码层级,提取待测cad软件的源代码在不同代码层级的代码特征,对代码特征进行哈希处理,得到待测cad软件的源代码不同代码层级对应的特征值。
168.在一个实施例中,提取模块801,还用于获取目标识别精度,获取目标识别精度对应的目标代码层级,将待测cad软件的源代码在目标代码层级的特征值,与各开源源代码在目标代码层级的特征值进行匹配,得到待测cad软件的源代码中的开源源代码。
169.在一个实施例中,提取模块801,还用于提取待测cad软件的源代码在不同代码层级的特征,包括:对待测cad软件的源代码的项目的文本摘要进行特征提取,得到待测cad软
件的源代码在项目级的代码特征,对待测cad软件的源代码的项目展开后的包级的文本摘要进行特征提取,得到待测cad软件的源代码在包级的代码特征,对待测cad软件的源代码的包展开后的文件级的文本摘要进行提取,得到待测cad软件的源代码在文件级的代码特征,对待测 cad软件的源代码的文件展开后的类级的文本摘要进行提取,得到待测cad 软件的源代码在类级的代码特征,对待测cad软件的源代码的类展开后的函数级符号进行符号分析,得到待测cad软件的源代码在函数级的代码特征。
170.在一个实施例中,提取模块801,还用于将待测cad软件的源代码在目标代码层级的特征值进行分段,得到待测cad软件的源代码在目标代码层级的分段特征值,将各开源源代码在目标代码层级的特征值进行分段,得到开源源代码在目标代码层级的分段特征值,对待测cad软件的源代码在目标代码层级的分段特征值与开源源代码在目标代码层级的分段特征值进行相似度匹配,当相似距离小于第一预设阈值时,计算待测cad软件的源代码的目标代码层级的特征值,与各开源源代码的目标代码层级的特征值的第二相似距离,若第二相似距离小于第二预设阈值,则将待测cad软件的源代码标记为开源源代码。
171.在一个实施例中,还包括更新模块,用于从cad软件的目标开源网页中获取新的三维cad软件的开源源代码,当根据新的开源源代码的信息确定已存历史版本的开源源代码时,检测新的开源源代码与历史版本的开源源代码的代码内容变化,若代码内容变化时,从对应的开源网页中获取新的开源源代码的修改信息,根据新的开源源代码和修改信息更新开源代码库。
172.在一个实施例中,更新模块,还用于当根据开源源代码的特征值与待测cad 软件的源代码的特征值匹配时,确定匹配的开源源代码的是否为历史版本的开源源代码,若是,则将对应的新的开源源代码推送至用户终端。
173.上述三维cad软件的源代码检测装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
174.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储待测cad软件的源代码数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种三维cad软件的源代码检测方法。
175.本领域技术人员可以理解,图9中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
176.在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
177.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计
算机程序被处理器执行时实现上述各方法实施例中的步骤。
178.在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
179.需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
180.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器 (ferroelectric random access memory,fram)、相变存储器(phase changememory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器 (random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random accessmemory,sram)或动态随机存取存储器(dynamic random access memory, dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
181.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
182.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献