CN116720196A - 一种代码同源性检测方法及系统 - Google Patents
一种代码同源性检测方法及系统 Download PDFInfo
- Publication number
- CN116720196A CN116720196A CN202310969293.3A CN202310969293A CN116720196A CN 116720196 A CN116720196 A CN 116720196A CN 202310969293 A CN202310969293 A CN 202310969293A CN 116720196 A CN116720196 A CN 116720196A
- Authority
- CN
- China
- Prior art keywords
- code
- information
- scene
- feature
- sentences
- 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.)
- Granted
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 48
- 238000004088 simulation Methods 0.000 claims abstract description 110
- 238000012545 processing Methods 0.000 claims abstract description 103
- 238000006243 chemical reaction Methods 0.000 claims abstract description 15
- 238000000605 extraction Methods 0.000 claims abstract description 13
- 230000011218 segmentation Effects 0.000 claims abstract description 9
- 239000002245 particle Substances 0.000 claims description 45
- 238000004422 calculation algorithm Methods 0.000 claims description 25
- 238000004364 calculation method Methods 0.000 claims description 18
- 238000012549 training Methods 0.000 claims description 18
- 238000000034 method Methods 0.000 claims description 16
- 238000005457 optimization Methods 0.000 claims description 14
- 238000003064 k means clustering Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 claims description 3
- 238000004458 analytical method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012300 Sequence Analysis Methods 0.000 description 2
- 238000012098 association analyses Methods 0.000 description 2
- 238000010219 correlation analysis Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种代码同源性检测方法及系统,涉及软件安全技术领域,包括获取待检测的代码信息和开源代码数据库内的代码信息;将所述待检测的代码信息进行分段处理和场景特征语句提取,基于提取得到的特征语句和开源代码数据库内的代码信息生成每个场景的特征语句对应的场景模拟代码;将场景的特征语句对应的代码段落信息和场景模拟代码进行特征码转换处理,得到待检测的代码信息的特征码信息和开源代码数据库内的代码信息对应的特征码信息;并发送至同源性检测模型进行同源性检测,得到检测结果。本发明通过将源代码进行模拟,然后将模拟代码和不同场景的待检测代码进行同源性检测,提高检测精度和效率。
Description
技术领域
本发明涉及软件安全技术领域,具体而言,涉及一种代码同源性检测方法及系统。
背景技术
随着互联网技术的快速发展,软件行业也在不断地创新和进步。在软件开发过程中,开源软件的使用越来越普遍,然而,开源软件的广泛使用也带来了安全挑战。一些开源软件存在安全漏洞,会对组织的信息安全造成威胁,并且在检测开源软件的过程中需要对代码的语法结构进行深度分析,随着代码量的提升,其检测的时间复杂度和空间复杂度都会非常高,并且不同的场景的开源代码的使用情况也不同,因此需要一种能够在不同使用场景下快速识别代码文件是否引入源代码的方法及系统。
发明内容
本发明的目的在于提供一种代码同源性检测方法及系统,以改善上述问题。为了实现上述目的,本发明采取的技术方案如下:
一方面,本申请提供了一种代码同源性检测方法,包括:
获取第一信息和第二信息,所述第一信息包括待检测的代码信息,所述第二信息包括开源代码数据库内的代码信息;
将所述第一信息进行分段处理和场景特征语句提取,得到第一信息内的所有场景的特征语句和所述场景的特征语句对应的代码段落信息;
将所有场景的所述特征语句和第二信息发送至场景代码模拟生成模块进行处理,得到每个场景的特征语句对应的场景模拟代码;
将所述场景的特征语句对应的代码段落信息和所述场景模拟代码进行特征码转换处理,得到第三信息,所述第三信息包括第一信息的特征码信息和所述第二信息对应的特征码信息;
将所述第三信息发送至同源性检测模型进行同源性检测,得到所述第一信息和所述第二信息的同源性检测结果。
另一方面,本申请还提供了一种代码同源性检测系统,其特征在于,包括:
获取单元,用于获取第一信息和第二信息,所述第一信息包括待检测的代码信息,所述第二信息包括开源代码数据库内的代码信息;
第一处理单元,用于将所述第一信息进行分段处理和场景特征语句提取,得到第一信息内的所有场景的特征语句和所述场景的特征语句对应的代码段落信息;
第二处理单元,用于将所有场景的所述特征语句和第二信息发送至场景代码模拟生成模块进行处理,得到每个场景的特征语句对应的场景模拟代码;
第三处理单元,用于将所述场景的特征语句对应的代码段落信息和所述场景模拟代码进行特征码转换处理,得到第三信息,所述第三信息包括第一信息的特征码信息和所述第二信息对应的特征码信息;
第四处理单元,用于将所述第三信息发送至同源性检测模型进行同源性检测,得到所述第一信息和所述第二信息的同源性检测结果。
本发明的有益效果为:
本发明通过对待检测的代码信息进行特征提取,然后对不同场景的代码进行分段,达到快速确定不同场景的代码的信息,然后基于预设的抽象语法树和第二信息进行训练,自动生成模拟对应场景的模拟代码,然后将模拟代码和所述待检测的代码信息进行同源性检测,其中,不同场景的模拟代码与不同场景的待检测代码进行对比检测,达到能够全面进行检查的效果,本发明还将所述待检测代码转换为特征码,避免了仅使用散列函数导致的“雪崩效应”,使即便略有不同的代码也可将其转化为相同的代码,并且其中通过分段处理,可以多个场景同时进行模拟和检测,最后通过关联分析确定待检测的特征码和模拟代码的特征码之间的关系,提高检测效率和精确度。
本发明的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例中所述的代码同源性检测方法流程示意图;
图2为本发明实施例中所述的代码同源性检测系统结构示意图。
图中标记:701、获取单元;702、第一处理单元;703、第二处理单元;704、第三处理单元;705、第四处理单元;7021、第一处理子单元;7022、第二处理子单元;7023、第三处理子单元;7031、第四处理子单元;7032、第一训练子单元;7033、第二训练子单元;7034、第五处理子单元;70341、第一计算子单元;70342、第二计算子单元;70343、第三计算子单元;70344、第六处理子单元;7041、第四计算子单元;7042、第七处理子单元;7043、第五计算子单元;7051、第八处理子单元;7052、第六计算子单元;7053、第七计算子单元;7054、第九处理子单元;7055、第十处理子单元。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
实施例1:
本实施例提供了一种代码同源性检测方法。
参见图1,图中示出了本方法包括步骤S1、步骤S2、步骤S3、步骤S4和步骤S5。
步骤S1、获取第一信息和第二信息,所述第一信息包括待检测的代码信息,所述第二信息包括开源代码数据库内的代码信息;
可以理解的是本步骤通过将数据库内的待检测的代码和预设的开源代码信息进行调用,为之后的同源性检测做准备,避免调用到其他代码的同事提高检测效率。
步骤S2、将所述第一信息进行分段处理和场景特征语句提取,得到第一信息内的所有场景的特征语句和所述场景的特征语句对应的代码段落信息;
可以理解的是本步骤通过对第一信息进行场景特征提取,为之后的场景代码对比做准备,防止出现多个场景的代码同时与单独一个场景的代码进行对比,进而导致误判或者检测精度不高的情况出现,本步骤中,步骤S2包括步骤S21、步骤S22和步骤S23。
步骤S21、将所述待检测的代码信息进行注释提取、代码转换和标点符号处理,得到预处理后的待检测的代码信息;
可以理解的是本步骤通过对待检测的代码信息进行预处理,将所述代码中的无关信息进行删除或者提取,减少判断时的计算量,提高检测效率。
步骤S22、将所述预处理后的待检测的代码信息和提取到的注释信息发送至Bert模型中进行预训练,得到待检测的代码信息中的所有场景的特征语句;
可以理解的是本步骤通过Bert模型对代码信息和注释信息进行预训练,快速的确定注释信息中的包括场景语句的注释语句,并对应查询到待检测代码中场景语句对应的代码。
步骤S23、将所有的场景特征语句发送至K-means聚类模型进行聚类,并基于聚类结果将所述待检测的代码信息进行分段,其中,按照不同属性的场景特征语句将所述待检测的代码信息进行段落划分,得到所述场景的特征语句对应的代码段落信息。
可以理解的是本步骤通过K-means聚类算法对所有的场景特征语句进行聚类,其中聚类得到的每个聚类簇对应一个范围,进而通过该范围对所有的场景特征语句对应的代码进行分段,确定每种场景对应的代码段落,保障不同段落对应不同场景,进而去与不同的模拟代码进行对应检测。
步骤S3、将所有场景的所述特征语句和第二信息发送至场景代码模拟生成模块进行处理,得到每个场景的特征语句对应的场景模拟代码;
可以理解的是本步骤通过场景代码模拟生成模块自动生成每个场景的特征语句对应的场景模拟代码,为之后的同源性分析提供更合适的对比代码,提高同源性分析的精确度,减少分析难度,提高分析效率,本步骤汇总,步骤S3包括步骤S31、步骤S32、步骤S33和步骤S34。
步骤S31、将预设的历史场景的特征语句对应的代码进行解析,得到的历史场景的特征语句对应的代码的抽象语法树;
可以理解的是本步骤中将每个段落的抽象语法树进行解析得到,其中包括多种抽象语法树,进而可以得到多种同一场景的模拟代码,进而在之后采用粒子群优化算法选取匹配度最高的模拟代码。
步骤S32、将所述抽象语法树、预设的历史场景的特征语句、所述抽象语法树和第二信息发送至seq2seq模型进行训练,得到训练后的场景代码模拟生成模型;
可以理解的是本步骤的目标是训练一个能够根据场景特征语句生成相应代码的模型,训练数据包括抽象语法树、预设的历史场景的特征语句和第二信息,其中,抽象语法树是一种表示代码结构的树形结构,它可以帮助模型理解代码的组织方式。预设的历史场景的特征语句和预设的源代码则用来描述代码的功能或目的,将这三种信息作为模型的输入,然后将输出与预设的模拟代码进行对比,基于对比结果判断是否训练完成。
步骤S33、将所有的所述抽象语法树、所述第一信息内的所有场景的特征语句和第二信息发送至训练后的场景代码模拟生成模型进行处理,得到至少两种场景模拟代码;
可以理解的是本步骤通过训练后的场景代码模拟生成模型生成模拟代码,进而保证每个场景的特征语句对应有场景模拟代码,在对比时能够提高对比的精确度。
步骤S34、将所有的场景模拟代码发送至训练后的场景模拟代码选取模型进行处理,得到每个场景的特征语句对应的场景模拟代码。
可以理解的是本步骤得到同一场景对应的多个模拟代码后需要选取一个最合适的场景模拟代码,本步骤通过匹配度计算确定每个场景对应的场景模拟代码,本步骤中,步骤S34包括步骤S341、步骤S342、步骤S343和步骤S344。
步骤S341、将所有的场景模拟代码和所述第一信息内的所有场景的特征语句进行匹配度计算,得到每种场景模拟代码与所有场景的特征语句的匹配度值;
可以理解的是本部中的匹配度计算的公式如下所示:
其中,A为所有的场景模拟代码和所述第一信息内的所有场景的特征语句的匹配度值,表示场景模拟代码中第i个代码的个数,/>表示特征语句中第i个特征词的个数,n表示特征词的总数。
步骤S342、将所有的所述匹配度值作为粒子群参数,并通过粒子群优化算法计算粒子适应度值;
可以理解的是本步骤中的适应度值计算公式如下:
其中,为第a个匹配度值,/>为第a个匹配度值的预测值,N为所有匹配度值的总数,匹配度值的预测值为基于神经网络训练预测得到的匹配度值或者基于预设的预测的值。
步骤S343、根据粒子群中粒子的适应度大小,得到粒子的个体最优位置和全局最优位置,并基于粒子群优化算法动态跟踪个体最优位置和全局最优位置来进行不断更新所有粒子的速度和位置,直至所述粒子群优化算法达到最大迭代次数,得到最大的匹配度值对应的场景模拟代码;
可以理解的是本步骤中的个体最优位置的更新准则为按照适应度值的大小选取更大适应度值的个体位置作为个体最优位置,全局最优位置的更新准则为按照适应度值的大小选取更大适应度值的全局位置作为全局最优位置。
可以理解的是本步骤通过如下两个公式来更新自己的位置:
其中,为更新后的速度,/>为当前的速度,/>和/>为学习因子,通常取2,/>为粒子当前位置,a为粒子总数,/>为取0到1之间的随机数,/>为到目前为止本粒子发现的最佳位置,/>为到目前位置所有粒子发现的最佳位置,/>为惯性因子。
其中,为粒子更新后的位置,/>为粒子在更新前的位置,/>为粒子更新前的位置。
可以理解的本步骤通过粒子群优化算法对每个匹配度值进行筛选,选取最大的匹配度值,进而根据最大匹配度值对应的特征语句来确定最适合的场景模拟代码。
步骤S344、将所述最大的匹配度值对应的场景模拟代码作为每个场景的特征语句对应的场景模拟代码。
步骤S4、将所述场景的特征语句对应的代码段落信息和所述场景模拟代码进行特征码转换处理,得到第三信息,所述第三信息包括第一信息的特征码信息和所述第二信息对应的特征码信息;
可以理解的是本组通过特征码转换将所有的场景模拟代码进行转化,得到每个场景代码中的特征码,进而通过特征码来快速精确的判断代码的同源性,本步骤中,步骤S4包括步骤S41、步骤S42和步骤S43。
步骤S41、基于TF-IDF算法对所述场景的特征语句对应的代码段落信息和所述场景模拟代码进行计算,得到每个代码段落中所有单词的TF-IDF值和所述场景模拟代码中所有单词的TF-IDF值;
步骤S42、分别选取每个代码段落中TF-IDF值最大的100个单词和所述场景模拟代码中TF-IDF值最大的100个单词作为特征词;
步骤S43、基于SHA-256算法计算所述特征词的特征散列值,得到每个特征词对应的特征码信息。
可以理解的是本步骤通过TF-IDF算法提取所述场景的特征语句对应的代码段落信息和所述场景模拟代码中的特征向量,其中TF-IDF的作用是根据词频和逆文档频率,并将所述词频和所述逆文档频率进行相乘,得到TF-IDF值,然后使用散列函数SHA-256算法计算特征向量的特征散列值,作为唯一特征值,进而得到每个特征词对应的特征码信息。
步骤S5、将所述第三信息发送至同源性检测模型进行同源性检测,得到所述第一信息和所述第二信息的同源性检测结果。
可以理解的是本步骤通过关联分析的方式分析两者之间的联系,并基于两者的联系程度分析两者的同源性,本步骤中,步骤S5包括步骤S51、步骤S52、步骤S53、步骤S54和步骤S55。
步骤S51、将每个代码段落对应的特征码信息和所述场景模拟代码对应的特征码信息进行序列分析处理,得到两个序列的数据,其中将每个代码段落对应的特征码信息作为母序列,将场景模拟代码对应的特征码信息作为子序列;
步骤S52、将所述两个序列的数据均进行无纲量化处理和均值计算,确定每个序列的均值数据;
可以理解的是,在本步骤中采用灰色关联分析的方法对两个序列的数据进行无量纲化处理和灰色关联分析,其中通过均值转换法消除不同数据之间的量纲差异,均值转换法如下列公式所述:
其中:为无量纲化处理后的参数,/>为每个代码段落对应的特征码信息的样本,/>为所有代码段落对应的特征码信息的样本均值;/>为场景模拟代码对应的特征码信息的样本标准差。
步骤S53、基于所述两个序列的数据和所有的序列的均值数据进行关联计算,确定每个所述子序列与母序列之间的关联度值;
可以理解的是,在本步骤中,关联计算的公式如下所述;
其中:为所述无量纲化处理后的每个代码段落对应的特征码信息和场景模拟代码对应的特征码信息的关联系数;f为无量纲化处理后的每个代码段落对应的特征码信息;k为代码段落数量;/>为每个代码段落对应的特征码信息的位置信息;/>为场景模拟代码对应的特征码信息的位置信息;/>为分辨系数,取0-1。
步骤S54、基于每个所述子序列与母序列之间的关联度值,确定每个代码段落对应的特征码信息和所述场景模拟代码对应的特征码信息的关联度值;
步骤S55、将所述关联度值与预设的阈值进行对比,若所述关联度值大于预设的阈值,则判断所述第一信息和所述第二信息的存在同源关系。
实施例2:
如图2所示,本实施例提供了一种代码同源性检测系统,所述系统包括获取单元701、第一处理单元702、第二处理单元703、第三处理单元704和第四处理单元705。
获取单元701,用于获取第一信息和第二信息,所述第一信息包括待检测的代码信息,所述第二信息包括开源代码数据库内的代码信息;
第一处理单元702,用于将所述第一信息进行分段处理和场景特征语句提取,得到第一信息内的所有场景的特征语句和所述场景的特征语句对应的代码段落信息;
其中,所述第一处理单元702包括第一处理子单元7021、第二处理子单元7022和第三处理子单元7023。
第一处理子单元7021,用于将所述待检测的代码信息进行注释提取、代码转换和标点符号处理,得到预处理后的待检测的代码信息;
第二处理子单元7022,用于将所述预处理后的待检测的代码信息和提取到的注释信息发送至Bert模型中进行预训练,得到待检测的代码信息中的所有场景的特征语句;
第三处理子单元7023,用于将所有的场景特征语句发送至K-means聚类模型进行聚类,并基于聚类结果将所述待检测的代码信息进行分段,其中,按照不同属性的场景特征语句将所述待检测的代码信息进行段落划分,得到所述场景的特征语句对应的代码段落信息。
第二处理单元703,用于将所有场景的所述特征语句和第二信息发送至场景代码模拟生成模块进行处理,得到每个场景的特征语句对应的场景模拟代码;
其中,第二处理单元703包括第四处理子单元7031、第一训练子单元7032、第二训练子单元7033和第五处理子单元7034。
第四处理子单元7031,用于将预设的历史场景的特征语句对应的代码进行解析,得到的历史场景的特征语句对应的代码的抽象语法树;
第一训练子单元7032,用于将所述抽象语法树、预设的历史场景的特征语句、所述抽象语法树和第二信息发送至seq2seq模型进行训练,得到训练后的场景代码模拟生成模型;
第二训练子单元7033,用于将所有的所述抽象语法树、所述第一信息内的所有场景的特征语句和第二信息发送至训练后的场景代码模拟生成模型进行处理,得到至少两种场景模拟代码;
第五处理子单元7034,用于将所有的场景模拟代码发送至训练后的场景模拟代码选取模型进行处理,得到每个场景的特征语句对应的场景模拟代码。
其中,所述第五处理子单元包括第一计算子单元70341、第二计算子单元70342、第三计算子单元70343和第六处理子单元70344。
第一计算子单元70341,用于将所有的场景模拟代码和所述第一信息内的所有场景的特征语句进行匹配度计算,得到每种场景模拟代码与所有场景的特征语句的匹配度值;
第二计算子单元70342,用于将所有的所述匹配度值作为粒子群参数,并通过粒子群优化算法计算粒子适应度值;
第三计算子单元70343,用于根据粒子群中粒子的适应度大小,得到粒子的个体最优位置和全局最优位置,并基于粒子群优化算法动态跟踪个体最优位置和全局最优位置来进行不断更新所有粒子的速度和位置,直至所述粒子群优化算法达到最大迭代次数,得到最大的匹配度值对应的场景模拟代码;
第六处理子单元70344,用于将所述最大的匹配度值对应的场景模拟代码作为每个场景的特征语句对应的场景模拟代码。
第三处理单元704,用于将所述场景的特征语句对应的代码段落信息和所述场景模拟代码进行特征码转换处理,得到第三信息,所述第三信息包括第一信息的特征码信息和所述第二信息对应的特征码信息;
其中,所述第三处理单元704包括第四计算子单元7041、第七处理子单元7042和第五计算子单元7043。
第四计算子单元7041,用于基于TF-IDF算法对所述场景的特征语句对应的代码段落信息和所述场景模拟代码进行计算,得到每个代码段落中所有单词的TF-IDF值和所述场景模拟代码中所有单词的TF-IDF值;
第七处理子单元7042,用于分别选取每个代码段落中TF-IDF值最大的100个单词和所述场景模拟代码中TF-IDF值最大的100个单词作为特征词;
第五计算子单元7043,用于基于SHA-256算法计算所述特征词的特征散列值,得到每个特征词对应的特征码信息。
第四处理单元705,用于将所述第三信息发送至同源性检测模型进行同源性检测,得到所述第一信息和所述第二信息的同源性检测结果。
其中,所述第四处理单元705包括第八处理子单元7051、第六计算子单元7052、第七计算子单元7053、第九处理子单元7054和第十处理子单元7055。
第八处理子单元7051,用于将每个代码段落对应的特征码信息和所述场景模拟代码对应的特征码信息进行序列分析处理,得到两个序列的数据,其中将每个代码段落对应的特征码信息作为母序列,将场景模拟代码对应的特征码信息作为子序列;
第六计算子单元7052,用于将所述两个序列的数据均进行无纲量化处理和均值计算,确定每个序列的均值数据;
第七计算子单元7053,用于基于所述两个序列的数据和所有的序列的均值数据进行关联计算,确定每个所述子序列与母序列之间的关联度值;
第九处理子单元7054,用于基于每个所述子序列与母序列之间的关联度值,确定每个代码段落对应的特征码信息和所述场景模拟代码对应的特征码信息的关联度值;
第十处理子单元7055,用于将所述关联度值与预设的阈值进行对比,若所述关联度值大于预设的阈值,则判断所述第一信息和所述第二信息的存在同源关系。
需要说明的是,关于上述实施例中的系统,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种代码同源性检测方法,其特征在于,包括:
获取第一信息和第二信息,所述第一信息包括待检测的代码信息,所述第二信息包括开源代码数据库内的代码信息;
将所述第一信息进行分段处理和场景特征语句提取,得到第一信息内的所有场景的特征语句和所述场景的特征语句对应的代码段落信息;
将所有场景的所述特征语句和第二信息发送至场景代码模拟生成模块进行处理,得到每个场景的特征语句对应的场景模拟代码;
将所述场景的特征语句对应的代码段落信息和所述场景模拟代码进行特征码转换处理,得到第三信息,所述第三信息包括第一信息的特征码信息和所述第二信息对应的特征码信息;
将所述第三信息发送至同源性检测模型进行同源性检测,得到所述第一信息和所述第二信息的同源性检测结果。
2.根据权利要求1所述的代码同源性检测方法,其特征在于,将所述第一信息进行分段处理和场景特征语句提取,包括:
将所述待检测的代码信息进行注释提取、代码转换和标点符号处理,得到预处理后的待检测的代码信息;
将所述预处理后的待检测的代码信息和提取到的注释信息发送至Bert模型中进行预训练,得到待检测的代码信息中的所有场景的特征语句;
将所有的场景特征语句发送至K-means聚类模型进行聚类,并基于聚类结果将所述待检测的代码信息进行分段,其中,按照不同属性的场景特征语句将所述待检测的代码信息进行段落划分,得到所述场景的特征语句对应的代码段落信息。
3.根据权利要求1所述的代码同源性检测方法,其特征在于,将所有场景的所述特征语句和第二信息发送至场景代码模拟生成模块进行处理,包括:
将预设的历史场景的特征语句对应的代码进行解析,得到的历史场景的特征语句对应的代码的抽象语法树;
将所述抽象语法树、预设的历史场景的特征语句、所述抽象语法树和第二信息发送至seq2seq模型进行训练,得到训练后的场景代码模拟生成模型;
将所有的所述抽象语法树、所述第一信息内的所有场景的特征语句和第二信息发送至训练后的场景代码模拟生成模型进行处理,得到至少两种场景模拟代码;
将所有的场景模拟代码发送至训练后的场景模拟代码选取模型进行处理,得到每个场景的特征语句对应的场景模拟代码。
4.根据权利要求3所述的代码同源性检测方法,其特征在于,将所有的场景模拟代码发送至训练后的场景模拟代码选取模型进行处理,包括:
将所有的场景模拟代码和所述第一信息内的所有场景的特征语句进行匹配度计算,得到每种场景模拟代码与所有场景的特征语句的匹配度值;
将所有的所述匹配度值作为粒子群参数,并通过粒子群优化算法计算粒子适应度值;
根据粒子群中粒子的适应度大小,得到粒子的个体最优位置和全局最优位置,并基于粒子群优化算法动态跟踪个体最优位置和全局最优位置来进行不断更新所有粒子的速度和位置,直至所述粒子群优化算法达到最大迭代次数,得到最大的匹配度值对应的场景模拟代码;
将所述最大的匹配度值对应的场景模拟代码作为每个场景的特征语句对应的场景模拟代码。
5.根据权利要求1所述的代码同源性检测方法,其特征在于,将所述场景的特征语句对应的代码段落信息和所述场景模拟代码进行特征码转换处理,包括:
基于TF-IDF算法对所述场景的特征语句对应的代码段落信息和所述场景模拟代码进行计算,得到每个代码段落中所有单词的TF-IDF值和所述场景模拟代码中所有单词的TF-IDF值;
分别选取每个代码段落中TF-IDF值最大的100个单词和所述场景模拟代码中TF-IDF值最大的100个单词作为特征词;
基于SHA-256算法计算所述特征词的特征散列值,得到每个特征词对应的特征码信息。
6.一种代码同源性检测系统,其特征在于,包括:
获取单元,用于获取第一信息和第二信息,所述第一信息包括待检测的代码信息,所述第二信息包括开源代码数据库内的代码信息;
第一处理单元,用于将所述第一信息进行分段处理和场景特征语句提取,得到第一信息内的所有场景的特征语句和所述场景的特征语句对应的代码段落信息;
第二处理单元,用于将所有场景的所述特征语句和第二信息发送至场景代码模拟生成模块进行处理,得到每个场景的特征语句对应的场景模拟代码;
第三处理单元,用于将所述场景的特征语句对应的代码段落信息和所述场景模拟代码进行特征码转换处理,得到第三信息,所述第三信息包括第一信息的特征码信息和所述第二信息对应的特征码信息;
第四处理单元,用于将所述第三信息发送至同源性检测模型进行同源性检测,得到所述第一信息和所述第二信息的同源性检测结果。
7.根据权利要求6所述的代码同源性检测系统,其特征在于,所述第一处理单元,包括:
第一处理子单元,用于将所述待检测的代码信息进行注释提取、代码转换和标点符号处理,得到预处理后的待检测的代码信息;
第二处理子单元,用于将所述预处理后的待检测的代码信息和提取到的注释信息发送至Bert模型中进行预训练,得到待检测的代码信息中的所有场景的特征语句;
第三处理子单元,用于将所有的场景特征语句发送至K-means聚类模型进行聚类,并基于聚类结果将所述待检测的代码信息进行分段,其中,按照不同属性的场景特征语句将所述待检测的代码信息进行段落划分,得到所述场景的特征语句对应的代码段落信息。
8.根据权利要求6所述的代码同源性检测系统,其特征在于,所述第二处理单元,包括:
第四处理子单元,用于将预设的历史场景的特征语句对应的代码进行解析,得到的历史场景的特征语句对应的代码的抽象语法树;
第一训练子单元,用于将所述抽象语法树、预设的历史场景的特征语句、所述抽象语法树和第二信息发送至seq2seq模型进行训练,得到训练后的场景代码模拟生成模型;
第二训练子单元,用于将所有的所述抽象语法树、所述第一信息内的所有场景的特征语句和第二信息发送至训练后的场景代码模拟生成模型进行处理,得到至少两种场景模拟代码;
第五处理子单元,用于将所有的场景模拟代码发送至训练后的场景模拟代码选取模型进行处理,得到每个场景的特征语句对应的场景模拟代码。
9.根据权利要求8所述的代码同源性检测系统,其特征在于,所述第五处理子单元,包括:
第一计算子单元,用于将所有的场景模拟代码和所述第一信息内的所有场景的特征语句进行匹配度计算,得到每种场景模拟代码与所有场景的特征语句的匹配度值;
第二计算子单元,用于将所有的所述匹配度值作为粒子群参数,并通过粒子群优化算法计算粒子适应度值;
第三计算子单元,用于根据粒子群中粒子的适应度大小,得到粒子的个体最优位置和全局最优位置,并基于粒子群优化算法动态跟踪个体最优位置和全局最优位置来进行不断更新所有粒子的速度和位置,直至所述粒子群优化算法达到最大迭代次数,得到最大的匹配度值对应的场景模拟代码;
第六处理子单元,用于将所述最大的匹配度值对应的场景模拟代码作为每个场景的特征语句对应的场景模拟代码。
10.根据权利要求6所述的代码同源性检测系统,其特征在于,所述第三处理单元,包括:
第四计算子单元,用于基于TF-IDF算法对所述场景的特征语句对应的代码段落信息和所述场景模拟代码进行计算,得到每个代码段落中所有单词的TF-IDF值和所述场景模拟代码中所有单词的TF-IDF值;
第七处理子单元,用于分别选取每个代码段落中TF-IDF值最大的100个单词和所述场景模拟代码中TF-IDF值最大的100个单词作为特征词;
第五计算子单元,用于基于SHA-256算法计算所述特征词的特征散列值,得到每个特征词对应的特征码信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310969293.3A CN116720196B (zh) | 2023-08-03 | 2023-08-03 | 一种代码同源性检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310969293.3A CN116720196B (zh) | 2023-08-03 | 2023-08-03 | 一种代码同源性检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116720196A true CN116720196A (zh) | 2023-09-08 |
CN116720196B CN116720196B (zh) | 2023-11-07 |
Family
ID=87875444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310969293.3A Active CN116720196B (zh) | 2023-08-03 | 2023-08-03 | 一种代码同源性检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116720196B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014153777A (ja) * | 2013-02-05 | 2014-08-25 | Tokyo Kogei Univ | ソースコード検査装置 |
CN108763928A (zh) * | 2018-05-03 | 2018-11-06 | 北京邮电大学 | 一种开源软件漏洞分析方法、装置和存储介质 |
CN112115362A (zh) * | 2020-09-21 | 2020-12-22 | 中山大学 | 一种基于相似代码识别的编程信息推荐方法及装置 |
CN115017506A (zh) * | 2022-06-14 | 2022-09-06 | 南京天规信息技术有限公司 | 一种人工智能同源可疑代码安全性分析系统 |
CN116361815A (zh) * | 2023-06-01 | 2023-06-30 | 北京比瓴科技有限公司 | 基于机器学习的代码敏感信息及硬编码检测方法及装置 |
-
2023
- 2023-08-03 CN CN202310969293.3A patent/CN116720196B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014153777A (ja) * | 2013-02-05 | 2014-08-25 | Tokyo Kogei Univ | ソースコード検査装置 |
CN108763928A (zh) * | 2018-05-03 | 2018-11-06 | 北京邮电大学 | 一种开源软件漏洞分析方法、装置和存储介质 |
CN112115362A (zh) * | 2020-09-21 | 2020-12-22 | 中山大学 | 一种基于相似代码识别的编程信息推荐方法及装置 |
CN115017506A (zh) * | 2022-06-14 | 2022-09-06 | 南京天规信息技术有限公司 | 一种人工智能同源可疑代码安全性分析系统 |
CN116361815A (zh) * | 2023-06-01 | 2023-06-30 | 北京比瓴科技有限公司 | 基于机器学习的代码敏感信息及硬编码检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116720196B (zh) | 2023-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108984530B (zh) | 一种网络敏感内容的检测方法及检测系统 | |
CN110097085B (zh) | 歌词文本生成方法、训练方法、装置、服务器及存储介质 | |
CN109005145B (zh) | 一种基于自动特征抽取的恶意url检测系统及其方法 | |
US20150095017A1 (en) | System and method for learning word embeddings using neural language models | |
CN112215013B (zh) | 一种基于深度学习的克隆代码语义检测方法 | |
CN110895559B (zh) | 模型训练、文本处理方法、装置以及设备 | |
CN106777957B (zh) | 不平衡数据集上生物医学多参事件抽取的新方法 | |
CN113298151A (zh) | 一种基于多级特征融合的遥感图像语义描述方法 | |
CN112036168B (zh) | 事件主体识别模型优化方法、装置、设备及可读存储介质 | |
CN109376061A (zh) | 一种信息处理方法及系统 | |
CN113590810B (zh) | 摘要生成模型训练方法、摘要生成方法、装置及电子设备 | |
CN111523317B (zh) | 语音质检方法、装置、电子设备及介质 | |
CN111611395B (zh) | 一种实体关系的识别方法及装置 | |
JP2018022496A (ja) | 自然言語処理装置に用いられるトレーニングデータを作成する方法と機器 | |
CN116561322B (zh) | 网络信息的关系抽取方法、关系抽取装置及介质 | |
CN111159332A (zh) | 一种基于bert的文本多意图识别方法 | |
CN111209373A (zh) | 基于自然语义的敏感文本识别方法和装置 | |
CN116107834A (zh) | 日志异常检测方法、装置、设备及存储介质 | |
CN115759071A (zh) | 基于大数据的政务敏感信息识别系统和方法 | |
CN116842515A (zh) | 一种源代码分类模型鲁棒性增强方法、系统及处理器 | |
CN117235137B (zh) | 一种基于向量数据库的职业信息查询方法及装置 | |
CN116720196B (zh) | 一种代码同源性检测方法及系统 | |
CN112733144B (zh) | 一种基于深度学习技术的恶意程序智能检测方法 | |
CN115618355A (zh) | 注入攻击结果判定方法、装置、设备及存储介质 | |
CN110472243B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |