CN117453573A - 一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法及引擎 - Google Patents
一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法及引擎 Download PDFInfo
- Publication number
- CN117453573A CN117453573A CN202311779004.XA CN202311779004A CN117453573A CN 117453573 A CN117453573 A CN 117453573A CN 202311779004 A CN202311779004 A CN 202311779004A CN 117453573 A CN117453573 A CN 117453573A
- Authority
- CN
- China
- Prior art keywords
- protocol
- field
- mutation
- feature
- target
- 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
- 230000035772 mutation Effects 0.000 title claims abstract description 170
- 238000012360 testing method Methods 0.000 title claims abstract description 115
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000000605 extraction Methods 0.000 claims abstract description 14
- 230000006870 function Effects 0.000 claims description 41
- 238000006467 substitution reaction Methods 0.000 claims description 10
- 238000002347 injection Methods 0.000 claims description 7
- 239000007924 injection Substances 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 6
- 238000012163 sequencing technique Methods 0.000 claims description 5
- 238000012217 deletion Methods 0.000 claims description 4
- 230000037430 deletion Effects 0.000 claims description 4
- 238000003780 insertion Methods 0.000 claims description 4
- 230000037431 insertion Effects 0.000 claims description 4
- 238000010276 construction Methods 0.000 claims description 3
- 230000007812 deficiency Effects 0.000 claims description 3
- 238000013461 design Methods 0.000 abstract description 8
- 238000004422 calculation algorithm Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 5
- 238000013515 script Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 102100026278 Cysteine sulfinic acid decarboxylase Human genes 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000035515 penetration Effects 0.000 description 1
- 108010064775 protein C activator peptide Proteins 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
Classifications
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/213—Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Communication Control (AREA)
Abstract
本发明涉及一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法,基于目标协议下采集报文的协议解析,获得协议结果集,然后获得协议结果集所匹配目标协议特征规则库中的各目标协议特征,最后根据目标协议特征规则库中各协议特征与预设变异策略库中各变异策略之间的预设对应关系,获得各目标协议特征对应的各推荐变异策略,用于目标协议下变异策略的推荐;并设计相应包括协议深度分析模块、协议特征提取模块、变异策略推荐模块的引擎,设计精简了测试用例集,缩短了测试时间,能够满足绝大多数通用协议、工业互联网协议的模糊测试。
Description
技术领域
本发明涉及一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法及引擎,属于协议测试技术领域。
背景技术
随着业界对软件安全问题关注度的不断提升, 漏洞挖掘也逐渐成为相关领域重点研究的内容。模糊测试(fuzz testing)是一种介于完全的手工渗透测试与完全的自动化测试之间的安全性测试类型,它能够在一项产品投入市场使用之前对潜在的安全漏洞进行分析和挖掘。
网络协议的模糊测试用例生成方法通常采用基于变异或者基于生成的模糊测试。基于变异的模糊测试是通过预设的变异策略和变异方法对待测协议的报文样本进行变异来生成测试用例。这种方法的优点是测试用例生成的自动化程度高,提供的报文样本越丰富生成的测试用例也就越丰富。同时,缺点也很明显,该方法未分析待测协议规约,会造成对存在加密算法或校验算法的协议生成的测试用例有很强的盲目性,导致测试效率低下。基于生成的模糊测试是通过对待测协议规约进行分析,分析出字段含义、字段值类型、协议约束条件(加密算法、校验算法、序号等),按照协议规约编写协议测试脚本,添加约束条件和变异方法,生成测试用例。这种方法的优点是生成的测试用例有很强的针对性,测试用例覆盖广且深,测试效率高。然而,该方法也有明显的缺陷,需要人工深度分析协议规约,手工编写测试脚本,尤其是编写协议报文结构复杂、内容多的测试脚本更是费时耗力,而且还容易出错,报文结构混乱不堪,从而影响到整体测试进度。
上述两种方法生成的测试用例集往往比较庞大,测试用例数目几十万量级,对同一批次的被测设备进行测试,每次测试都需要执行完全部的测试用例集才能发现潜在漏洞。明显地,这种测试方式会导致发现漏洞的时间无限期滞后,从而也会影响到整体测试进度。
现有的模糊测试系统大多数是基于生成和基于变异的,比如某知名厂商的基于变异的模糊测试系统,测试用例的生成是基于变异协议报文样本数据,生成的测试用例集就比较庞大,测试用例数目几十万量级,且无效测试用例太多,导致测试效率低下。又比如某知名厂商的基于生成的模糊测试系统,测试用例的生成是基于手工编写测试脚本生成测试用例,而对协议规约分析不够,测试用例覆盖不全,且手工编写耗时费力,也会导致测试效率低下。
发明内容
本发明所要解决的技术问题是提供一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法,精简测试用例集、缩短测试时间,能够满足绝大多数通用协议、工业互联网协议的模糊测试。
本发明为了解决上述技术问题采用以下技术方案:本发明设计了一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法,执行如下步骤,实现目标协议下用于测试用例生成的变异策略的推荐;
步骤A. 针对单终端关于目标协议下的预设数量采集报文,执行协议解析,获得协议结果集;
步骤B. 基于目标协议特征规则库,获得协议结果集中各协议字段所匹配目标协议特征规则库中的各协议特征,作为各目标协议特征;
步骤C. 基于预设变异策略库,根据目标协议特征规则库中各协议特征与预设变异策略库中各变异策略之间的预设对应关系,获得各目标协议特征对应的各变异策略,作为各推荐变异策略,用于目标协议下变异策略的推荐。
作为本发明的一种优选技术方案:所述步骤A包括如下步骤A1至步骤A2:
步骤A1. 应用开源协议解析框架,针对单终端关于目标协议下的预设数量采集报文执行协议解析,并将解析结果存储至协议树,再通过递归遍历协议树节点的方式,获得协议树各节点上的协议解析字段,组成协议结果集,然后进入步骤A2;
步骤A2. 针对协议结果集中的各协议解析字段依次执行排序、去重、补缺,更新协议结果集。
作为本发明的一种优选技术方案:所述步骤A2包括如下步骤A2-1至步骤A2-3:
步骤A2-1. 按协议解析字段的起始位置从小到大,针对协议结果集中的各协议解析字段进行有序排列,更新协议结果集,然后进入步骤A2-2;
步骤A2-2. 顺序依次遍历协议结果集中各个协议解析字段,比较相邻两个协议解析字段的起始位置,若前一个协议解析字段的起始位置和后一个协议解析字段的起始位置相等,则该两个协议解析字段彼此重复,并进一步判断前一个协议解析字段的长度是否大于后一个协议解析字段的长度,是则把前一个协议解析字段从协议结果集中删除,否则把后一个协议解析字段从协议结果集中删除;若前一个协议解析字段的起始位置和后一个协议解析字段的起始位置不相等,则不做任何处理;直到协议结果集中不存在彼此重复的协议解析字段,实现协议结果集的更新,然后进入步骤A2-3;
步骤A2-3. 顺序依次遍历协议结果集中各个协议解析字段,比较前一个协议解析字段的结束位置和后一个协议解析字段的起始位置,若前一个协议解析字段的结束位置小于后一个协议解析字段的起始位置,则基于步骤A1中协议解析操作下各个未解析字段的起始位置、长度,选择相应未解析字段添加至该两个协议解析字段之间,使得该前一个协议解析字段的结束位置等于该相应未解析字段的起始位置,该相应未解析字段的结束位置等于该后一个协议解析字段的起始位置;若前一个协议解析字段的结束位置大于后一个协议解析字段的起始位置,则表示前一个协议解析字段中包含后一个协议解析字段的字节内容,从前一个协议解析字段中删除该包含的字节内容,使得该前一个协议解析字段的结束位置等于该后一个协议解析字段的起始位置;进而实现协议结果集的更新。
作为本发明的一种优选技术方案:所述步骤B中,基于由目标协议下各协议特征、以及各协议特征分别所对应预设各属性规则构成的目标协议特征规则库,根据协议结果集中各协议字段分别所对应预设各属性值,获得协议结果集中各协议字段分别所匹配目标协议特征规则库中的各协议特征,作为各目标协议特征。
作为本发明的一种优选技术方案:所述步骤B中,基于由目标协议下各协议特征、以及各协议特征分别所对应预设各属性规则构成的目标协议特征规则库,根据协议结果集中各协议字段分别所对应预设各属性值,分别针对协议结果集中的各个协议字段,执行如下步骤B1至步骤B3;
步骤B1. 初始化目标协议特征规则库中各协议特征分别所对应的计数器为0;
步骤B2. 分别针对目标协议下的各协议特征,执行协议字段所对应预设各属性值与协议特征所对应预设各属性规则之间的匹配,彼此间每匹配成功一项,则该协议特征所对应计数器加1更新;进而获得各协议特征分别对应计数器的更新;
步骤B3. 选择最大计数器对应的协议特征,即作为该协议特征所对应的目标协议特征。
作为本发明的一种优选技术方案:所述协议字段所对应预设各属性值包括字段名称、十六进制串字段值、字段描述信息、字段初始类型、字段内容、报文结构内容、报文结构描述信息;目标协议下的各协议特征包括字段类型特征、关键字段特征、字段约束条件特征、字段结构特征。
作为本发明的一种优选技术方案:若步骤C首次执行,则初始化预设变异策略库中各变异策略分别对应的权重为1,步骤C执行所获各推荐变异策略的推荐顺序彼此相同;若步骤C非首次执行,则步骤C执行所获各推荐变异策略的推荐排序,按分别对应权重由大至小的顺序进行排序;
执行完步骤C之后,进入步骤D如下:
步骤D. 基于步骤C执行所获目标协议下的各推荐变异策略,获得各推荐变异策略所对应变异函数分别作用目标协议下报文的测试用例、并执行,若执行结果有效,则相对应推荐变异策略的权重进行加1更新,若执行结果无效,则相对应推荐变异策略的权重不更新,进而更新预设变异策略库中各变异策略分别对应的权重。
作为本发明的一种优选技术方案:所述预设变异策略库中各变异策略包括错误注入、结构变异、组合变异,其中,错误注入所对应变异函数包括替换、插入、置空、字节序翻转操作,结构变异所对应变异函数包括删除字段、交换字段、重复字段、构造结构操作,组合变异所对应变异函数包括针对关键字段中的两个或两个以上字段的变异值进行组合变异。
与上述相对应,本发明还要解决的技术问题是提供一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法的引擎,精简测试用例集、缩短测试时间,能够满足绝大多数通用协议、工业互联网协议的模糊测试。
本发明为了解决上述技术问题采用以下技术方案:本发明设计了一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法的引擎,包括协议深度分析模块、协议特征提取模块、变异策略推荐模块,其中,协议深度分析模块用于执行步骤A,协议特征提取模块用于执行步骤B、变异策略推荐模块用于执行步骤C。
作为本发明的一种优选技术方案:还包括测试用例生成模块,测试用例生成模块用于执行基于步骤C执行所获目标协议下的各推荐变异策略,获得各推荐变异策略所对应变异函数分别作用目标协议下报文的测试用例、并执行,若执行结果有效,则相对应推荐变异策略的权重进行加1更新,若执行结果无效,则相对应推荐变异策略的权重不更新,进而更新预设变异策略库中各变异策略分别对应的权重。
本发明所述一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法及引擎,采用以上技术方案与现有技术相比,具有以下技术效果:
本发明所设计一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法,基于目标协议下采集报文的协议解析,获得协议结果集,然后获得协议结果集所匹配目标协议特征规则库中的各目标协议特征,最后根据目标协议特征规则库中各协议特征与预设变异策略库中各变异策略之间的预设对应关系,获得各目标协议特征对应的各推荐变异策略,用于目标协议下变异策略的推荐;并设计相应包括协议深度分析模块、协议特征提取模块、变异策略推荐模块的引擎,设计精简了测试用例集,缩短了测试时间,能够满足绝大多数通用协议、工业互联网协议的模糊测试;
本发明设计基于协议特征匹配和变异策略选择的模糊测试用例生成方法的引擎中,基于开源协议解析框架的报文深度分析模块,能够满足对绝大多数通用协议、工业互联网协议进行解析,对协议解析结果进行去重、排序、补齐处理,可以扩大协议解析范围,方便协议测试套件的快速扩展,节约协议解析的人工成本,提升协议解析效率和准确率;
本发明设计基于协议特征匹配和变异策略选择的模糊测试用例生成方法的引擎中,协议特征提取模块采用选择匹配命中次数最多的特征库协议特征作为目标协议特征,提取到协议字段类型、关键字段、字段结构、约束条件,能够更有效地指导变异策略的推荐;
本发明设计基于协议特征匹配和变异策略选择的模糊测试用例生成方法的引擎中,对输入的目标协议特征进行推荐变异策略的推荐,采用动态权重调整的算法,在变异策略执行过程中,根据执行结果动态调整变异策略的权重,并反馈给变异策略推荐模块,以便优先执行权重大的变异策略,优化测试用例集的生成,同时推荐到的变异策略将关键字段或字段结构优先组合,将字段或字段结构和变异函数进行针对性的绑定,可以精简测试用例集,缩短测试时间和发现漏洞的时间。
附图说明
图1是本发明设计基于协议特征匹配和变异策略选择的模糊测试用例生成方法的引擎的示意图;
图2是本发明设计基于协议特征匹配和变异策略选择的模糊测试用例生成方法中步骤A的流程图;
图3是本发明设计基于协议特征匹配和变异策略选择的模糊测试用例生成方法中步骤B的流程图;
图4是本发明设计基于协议特征匹配和变异策略选择的模糊测试用例生成方法中步骤C的流程图;
图5是测试用例生成模块的功能逻辑示意图。
实施方式
下面结合说明书附图对本发明的具体实施方式作进一步详细的说明。
本发明设计一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法及引擎,其中,如图1所示,引擎包括协议深度分析模块、协议特征提取模块、变异策略推荐模块、测试用例生成模块,实际应用中当中,初始化预设变异策略库中各变异策略分别对应的权重为1,具体设计执行如下步骤A至步骤D,实现目标协议下用于测试用例生成的变异策略的推荐。
步骤A. 协议深度分析模块针对单终端关于目标协议下的预设数量采集报文,执行协议解析,获得协议结果集。
实际应用当中,如图2所示,上述步骤A具体执行如下步骤A1至步骤A2。
步骤A1. 开源协议解析框架wireshark能够解析绝大多数通用协议、工业互联网协议,因此协议深度分析模块可以在其功能基础上进行二次开发,通过导入PCAP抓包文件,即采集报文,应用开源协议解析框架,针对单终端关于目标协议下的预设数量采集报文执行协议解析,并将解析结果存储至协议树,并在开源协议解析框架代码的print_packet()接口函数中,通过递归遍历协议树节点的方式,获得协议树各节点上的协议解析字段,组成协议结果集,然后进入步骤A2。
这里各节点上的协议解析字段分别包括节点属性(父节点或者子节点)、协议字段名称、字段值、字段类型、字段起始位置、字段长度、字段约束条件,在递归遍历协议树的过程中,通过定制化分析协议树数据链路层的mac地址输出该报文的传输方向,通过定制化分析协议树网络层的协议类型以及传输层的端口号输出该报文的传输类型和端口(TCP:5000、UDP:6000、SCTP:7000)。
协议结果集中存在字段起始位置乱序、字段起始位置重复、缺少未知字段等问题,影响后续对解析结果集的使用,因此要对结果集中的协议字段进行再处理,即执行如下步骤A2。
步骤A2. 针对协议结果集中的各协议解析字段依次执行排序、去重、补缺,更新协议结果集,具体执行包括如下步骤A2-1至步骤A2-3。
步骤A2-1. 顺序依次遍历协议结果集中的各个协议解析字段,比较相邻两个协议解析字段的起始位置,若前一个协议解析字段的起始位置大于后一个协议解析字段的起始位置,则将该两协议解析字段进行位置交换,否则不处理,直至协议结果集中各个协议解析字段按其起始位置从小到大有序排列,更新协议结果集,然后进入步骤A2-2。具体按如下代码执行。
// proto_fields_vec协议解析结果集
// it 结果集的指示器,表示结果集中的当前字段结构
// pre_it 比较的前一个字段结构
// next_it 比较的后一个字段结构
for it proto_fields_vec.begin to proto_fields_vec.end do
pre_it <- it
next_it <- it->next
//按字段起始位置从小到大排序
if pre_it->pos > next_it->pos
then
swap(pre_it, next_it)
end if
it++
end for
步骤A2-2. 顺序依次遍历协议结果集中各个协议解析字段,比较相邻两个协议解析字段的起始位置,若前一个协议解析字段的起始位置和后一个协议解析字段的起始位置相等,则该两个协议解析字段彼此重复,并进一步判断前一个协议解析字段的长度是否大于后一个协议解析字段的长度,是则把前一个协议解析字段从协议结果集中删除,否则把后一个协议解析字段从协议结果集中删除;若前一个协议解析字段的起始位置和后一个协议解析字段的起始位置不相等,则不做任何处理;直到协议结果集中不存在彼此重复的协议解析字段,实现协议结果集的更新,然后进入步骤A2-3。具体按如下代码执行。
// proto_fields_vec协议解析结果集
// it 结果集的指示器,表示结果集中的当前字段结构
// pre_it 比较的前一个字段结构
// next_it 比较的后一个字段结构
for it proto_fields_vec.begin to proto_fields_vec.end do
pre_it <- it
next_it <- it->next
//字段起始位置相等,则字段重复
if pre_it->pos = next_it->pos
then
//前面字段的长度大于后面字段的长度,删除前面的字段
if pre_it->length > next_it->length
then
proto_fields_vec.erase(pre_it);
else
proto_fields_vec.erase(next_it);
end if
end if
it++
end for
步骤A2-3. 顺序依次遍历协议结果集中各个协议解析字段,比较前一个协议解析字段的结束位置和后一个协议解析字段的起始位置,若前一个协议解析字段的结束位置小于后一个协议解析字段的起始位置,则基于步骤A1中协议解析操作下各个未解析字段的起始位置、长度,选择相应未解析字段添加至该两个协议解析字段之间,使得该前一个协议解析字段的结束位置等于该相应未解析字段的起始位置,该相应未解析字段的结束位置等于该后一个协议解析字段的起始位置;若前一个协议解析字段的结束位置大于后一个协议解析字段的起始位置,则表示前一个协议解析字段中包含后一个协议解析字段的字节内容,从前一个协议解析字段中删除该包含的字节内容,使得该前一个协议解析字段的结束位置等于该后一个协议解析字段的起始位置;进而实现协议结果集的更新。具体按如下代码执行。
// proto_fields_vec协议解析结果集
// it 结果集的指示器,表示结果集中的当前字段结构
// pre_it 比较的前一个字段结构
// next_it 比较的后一个字段结构
for it proto_fields_vec.begin to proto_fields_vec.end do
pre_it <- it
next_it <- it->next
//缺少未解析的字段
if (pre_it->pos + pre_it->length) < next_it->pos
then
//创建新的字节
new_proto_field <- new FieldNode()
new_proto_field->pos <- (pre_it->pos + pre_it->length)
size <- (next_it->pos - pre_it->pos - pre_it->length)
new_proto_field->length <- size
new_proto_field->content <- 从pre_it->pos + pre_it->length开始取size长度的内存数据
proto_fields_vec.insert(next_it, new_proto_field)
//字段字节重复
else if pre_it->pos + pre_it->length > next_it->pos
then
size = pre_it->pos + pre_it->length - next_it)->pos
pre_it->length = size
pre_it->content <- 从pre_it->pos开始取size长度的内存数据
end if
it++
end for
实施例协议结果集中协议解析字段的结构如下代码所示。
struct FieldNode
{
int ID;//字段ID
int pos;//字段起始位置
int length;//字段长度
string name;//字段名称
string show_info;//字段描述
string constraint;//约束条件
enum FieldType field_type;//字段类型
vector<unsigned char> content;//字段值
vector<struct FieldNode> child_fields;//结构包含子字段
};
其中,ID,字段ID,来源于协议树节点的FieldInfo中的字段ID,开源协议解析框架对每个协议字段ID都会产生一个十进制数字。
Pos,字段起始位置,来源于协议树节点的FieldInfo中的字段起始位置,开源协议解析框架在解析协议字段的过程中会记录每个字段在整个报文字节序中的起始位置。
Length,字段长度,来源于协议树节点的FieldInfo中的字段长度,开源协议解析框架在解析协议字段的过程中会记录每个字段的字节数。
Name,字段名称,来源于协议树节点的FieldInfo中的字段名称,在协议解析开始前会定义协议所有字段名称。
Show_info,字段描述,来源于协议树节点的FieldInfo中的字段描述,开源协议解析框架在解析协议字段的过程中会记录每个字段的一些特征信息,比如长度、校验和、校验算法、加密算法等。
Field_type,字段类型,来源于开源协议解析框架协议树节点的FieldInfo中的字段类型,开源协议解析框架在解析协议字段的过程中会记录每个字段的字段类型,比如整型、字符串等。
Content,字段值,来源于开源协议解析框架协议树节点的FieldInfo中的字段内存数据,开源协议解析框架在解析协议字段的过程中会记录每个字段的内存数据。
Child_fields,结构包含子字段,在递归遍历协议树节点的过程中,如果协议树节点包含子节点,则创建包含子字段的集合Child_fields,将子节点字段收集在Child_fields中。
Constraint,约束条件,字段的约束条件包括计算长度recount()、计算校验和checksum()、计算CRC get_crc()、字符串加解密decode()/encode()、计算时间戳get_timestamp()等。
步骤B. 如图3所示,基于由目标协议下各协议特征、以及各协议特征分别所对应预设各属性规则构成的目标协议特征规则库,根据协议结果集中各协议字段分别所对应预设各属性值,分别针对协议结果集中的各个协议字段,按如下代码:
//feature_vec 协议特征库的集合
//rule_vec 协议特征库的条目里的规则的集合
//it当前协议特征库的条目
//it1 当前协议特征库的条目里的规则
//select_count 当前协议特征库的条目里的规则命中次数
//遍历特征库里的每一个条目
for it from feature_vec.begin to feature_vec.end do
//遍历特征库里的每一个条目里的每一条规则
for it1 from rule_vec.begin to rule_vec.end do
//规则命中
if(selected(it1) == TURE)
{
it->select_count++
}
it1++
//结束遍历特征库里的每一个条目里的每一条规则
end for
it++
//结束遍历特征库里的每一个条目
end for
//选择规则命中次数最多的条目
SelectMaxCountEntry(feature_vec)
执行如下步骤B1至步骤B3,获得协议结果集中各协议字段分别所匹配目标协议特征规则库中的各协议特征,作为各目标协议特征。
步骤B1. 初始化目标协议特征规则库中各协议特征分别所对应的计数器为0。
步骤B2. 分别针对目标协议下的各协议特征,执行协议字段所对应预设各属性值与协议特征所对应预设各属性规则之间的匹配,彼此间每匹配成功一项,则该协议特征所对应计数器加1更新;进而获得各协议特征分别对应计数器的更新。
步骤B3. 选择最大计数器对应的协议特征,即作为该协议特征所对应的目标协议特征。
这里,协议字段所对应预设各属性值包括字段名称、十六进制串字段值、字段描述信息、字段初始类型、字段内容、报文结构内容、报文结构描述信息;目标协议下的各协议特征包括字段类型特征、关键字段特征、字段约束条件特征、字段结构特征。
字段类型特征提取是通过输入的字段名称、字段值的十六进制串、字段描述信息、字段初始类型、字段内容与特征库的规则条目进行匹配,返回匹配结果集,然后从命中结果集中选择命中次数最多的规则条目,输出该条目对应的特征值,就是最终提取到的字段类型,字段类型特征(文件名)如下代码所示。
"File": [
"/^name:script_file_name/s",
"/^hexstring:[0-9a-fA-F]{20}$/s",
"/^show:/usr/local/script.cfg$/s",
"/^type:FT_STRING/s",
"/^string:\/(\\w+\/?)+(\\w+)([.]{0,1})(\\w+)$/s",
]
关键字段特征提取是通过输入的字段名称、字段值的十六进制串、字段描述信息、字段内容与特征库的规则条目进行匹配,返回匹配结果集,然后从命中结果集中选择命中次数最多的规则条目,输出该条目对应的特征值,就是最终提取到的关键字段(长度字段、功能码字段、类型字段),关键字段特征(长度字段)如下代码所示。
"Length":[
"/^name:length/s",
"/^type:FT_UINT16/s",
"/^type:FT_INT16/s",
"/^hexstring:[0-9a-fA-F]{4}$/s",
"/^show:Length: -?\\d+$/s",
]
字段结构特征提取是通过输入的字段名称、字段描述信息与特征库的规则条目进行匹配,返回匹配结果集,然后从命中结果集中选择命中次数最多的规则条目,输出该条目对应的特征值,就是最终提取到的字段结构(TLV结构、报文固定结构等),字段结构特征(报文固定结构)如下代码所示。
"Struct" :[
"/^show:Modbus$/s",
"/^name:modbus$/s",
]
字段约束条件特征提取是通过输入的字段名称、字段值的十六进制串、字段描述信息、与特征库的规则条目进行匹配,返回匹配结果集,然后从命中结果集中选择命中次数最多的规则条目,输出该条目对应的特征值,就是最终提取到的字段约束条件。字段约束条件特征(CRC16)如下代码所示。
"CRC16":[
"/^name:crc/s",
"/^type:FT_UINT16/s",
"/^type:FT_INT16/s",
"/^hexstring:[0-9a-fA-F]{4}$/s",
"/^show:CRC-16: -?\\d+$/s",
]
字段的约束条件包括计算长度recount()、计算校验和checksum()、计算CRCget_crc()、字符串加解密decode()/encode()、计算时间戳get_timestamp()等。
约束条件的确定是根据协议树节点字段描述的特征信息show规则来确定:
约束条件计算长度recount(),字段约束条件通过匹配show或者字段名称中存在“length”、“len”、“count”等关键字和一些数字特征,同时根据数值,从该字段开始往后遍历该数值大小的字节数,并且该数值范围内的字节都是结果集中的连续字段,就确定当前数值字段为长度字段,约束条件确定为计算长度,约束范围为该数值范围内的连续字段。
约束条件计算校验和checksum(),字段约束条件通过匹配show中存在“checksum”等关键字,就可确定为校验和字段。常见的存在校验和的协议有IPv4、IPv6、TCP、UDP等,对应的约束条件为IPv4_checksum()、IPv6_checksum()、TCP_checksum()、UDP_checksum()。
约束条件计算CRC get_crc(),字段约束条件通过匹配show中存在“crc”等关键字,就可确定为CRC字段,CRC字段一般在报文数据帧或一段结构化数据的结束位置,CRC字段的长度可以从协议解析结果集中取到,通常为一字节、两字节、四字节,分别对应CRC8、CRC16、CRC32。常见的CRC8算法有 CRC8、CRC8ITU、CRC8MAXIM、CRC8ROHC,CRC16算法有CRC16DNP、CRC16IBM、CRC16MAXIM、CRC16USB、CRC16MODBUS、CRC16CCITT、CRC16CCITTFALSE、CRC16X25、CRC16XMODEM、CRC16RSSP,CRC32算法有 CRC32、CRC32MPEG、CRC32C、CRC32CTriStation,CRC算法的确定首先明确它是几字节的CRC,然后将报文数据帧或一段结构化数据输入到常见的CRC算法计算函数中,经过计算的CRC与协议CRC字段值一致,就可确定CRC算法。
约束条件字符串加解密decode()/encode(),字段约束条件检测Show_info中存在“encode”、“decode”、“encrypt”、“decrypt”等关键字,就可确定为加解密字段。同时加解密算法通过匹配show中的关键字,比如“aes”、“md5”、“SM4”、“sha1”等。
约束条件计算时间戳get_timestamp(),字段约束条件通过匹配show中存在“timestamp”、“time”、“second”等关键字,就可确定为时间戳字段。时间戳的常用单位为秒、毫秒、纳秒。时间戳单位的确定,首先分别以秒、毫秒、纳秒获取当前的时间戳,与该字段的数值进行比较,是同一个数量级范围的,就可确定时间戳的单位。
步骤C. 如图4所示,变异策略推荐模块基于预设变异策略库,根据目标协议特征规则库中各协议特征与预设变异策略库中各变异策略之间的预设对应关系,获得各目标协议特征对应的各变异策略,作为各推荐变异策略,用于目标协议下变异策略的推荐,且各推荐变异策略的推荐排序,按分别对应权重由大至小的顺序进行排序,进而保障模糊测试引擎能够优先执行有效的测试用例。
步骤D. 如图4所示,测试用例生成模块基于各推荐变异策略,获得各推荐变异策略所对应变异函数分别作用目标协议下报文的测试用例、并执行,若执行结果有效,则相对应推荐变异策略的权重进行加1更新,若执行结果无效,则相对应推荐变异策略的权重不更新,进而更新预设变异策略库中各变异策略分别对应的权重,这里实际应用中具体算法如下代码所示。
//mutate_strategy_vec 变异策略库的集合
//it 当前变异策略库的条目
//feature_type 输入的协议特征
//weight 当前变异策略库的条目的权重
//Result 推荐到的变异策略结果解
//遍历变异策略库里的每一个条目
for it from mutate_strategy_vec.begin to mutate_strategy_vec.end do
//首次执行将所有的变异策略权重都初始化为1
if(first)
{
it->weight = 1
}
//推荐到变异策略
if(Recommend(feature_type) == it->field_type)
{
//将推荐到的变异策略放到结果集
Result.PushBack(it)
}
it++
//结束遍历变异策略库里的每一个条目
end for
//按照权重大小顺序执行变异策略
ExecMutateStrategyByWeight(Result)
//遍历变异策略库里的每一个条目
for it from mutate_strategy_vec.begin to mutate_strategy_vec.end do
//判断变异策略执行有效,权重加1
if(IsValid(it) == TRUE)
{
it->weight++
}
it++
//结束遍历变异策略库里的每一个条目
end for
这里,预设变异策略库中各变异策略包括错误注入、结构变异、组合变异,其中,错误注入所对应变异函数包括替换、插入、置空、字节序翻转操作,结构变异所对应变异函数包括删除字段、交换字段、重复字段、构造结构操作,组合变异所对应变异函数包括针对关键字段中的两个或两个以上字段的变异值进行组合变异。
部分错误注入的变异策略规则,变异策略推荐引擎通过field_type获取到协议特征,将对所有具备该特征的字段执行mutate对应的变异函数,其中parameter为变异函数执行所需的参数,fault_type为变异函数执行所需的错误值类型。部分变异函数解释如下代码所示。
"FaultInjectiton": [
{
"mutate": "inject_after()",//在字段分割符后面插入错误值
"parameter": "'00','09','1C','1D','1E','1F','20','21','22','23','24','25','26','2B','2C','2D','2E','2F','3A','3B','3F','40',7C',7E'",
"field_type": "Unsigned8,String,Enum",
"fault_type": "Character"
},
{
"mutate": "inject_before()",//在字段分割符前面插入错误值
"parameter": "'00','09','1C','1D','1E','1F','20','21','22','23','24','25','26','2B','2C','2D','2E','2F','3A','3B','3F','40',7C',7E'",
"field_type": "Unsigned8,String,Enum",
"fault_type": "Character"
},
{
"mutate": "inject_before_and_after()",//在字段分割符前面和后面都插入错误值
"parameter": "'00','09','1C','1D','1E','1F','20','21','22','23','24','25','26','2B','2C','2D','2E','2F','3A','3B','3F','40',7C',7E'",
"field_type": "Unsigned8,String,Enum",
"fault_type": "Character"
},
{
"mutate": "switch_endian()",//字段字节序反转
"parameter": null,
"field_type": "Unsigned8,String,Enum",
"fault_type": "Character"
},
{
"mutate": "duplicate()",//复制字段
"parameter": "10",
"field_type": "Unsigned8,Unsigned16,Enum",
"fault_type": "Unsigned16"
}
]
部分结构变异的变异策略规则,变异策略推荐引擎通过field_type获取到协议特征,将对所有具备该特征的结构字段执行mutate对应的变异函数,部分变异函数解释如下代码所示。
"StructureMutation": [
{
"mutate": "delete()",//删除结构中的字段
"parameter": null,
"field_type": "Struct",
"fault_type": null
},
{
"mutate": "repeat()",//重复结构中的字段
"parameter": null,
"field_type": "Struct",
"fault_type": null
},
{
"mutate": "nested_struct()",//构造一个结构
"parameter": null,
"field_type": "Struct",
"fault_type": null
},
{
"mutate": "swap()",//交换结构中的字段位置
"parameter": null.
"field_type": "Struct",
"fault_type": null
}
]
组合变异的变异策略规则,变异策略推荐引擎通过field_type获取到协议特征,将对所有具备该特征的字段执行mutate对应的变异函数,其中parameter为变异函数执行所需的参数,fault_type为变异函数执行所需的错误值类型,将每个集合里变异策略对应的mutate变异函数生成的变异值进行两两组合。部分变异函数解释如代码所示。
"CombinationMutation": [
[
{
"mutate": "replace()", //变异函数替换
"parameter": "", //参数:无
"field_type": "Length", //匹配的字段类型:长度字段
"fault_type": "Unsigned16" //错误值类型,Unsigned16
},
{
"mutate": "replace()", //变异函数替换
"parameter": "", //参数 :无
"field_type": "Enum", //匹配的字段类型:枚举字段
"feature_type": "Enum" //错误值类型:枚举类型
}
],
[
{
"mutate": "replace()", //变异函数替换
"parameter": "", //参数 :无
"field_type": "Length", //匹配的字段类型:长度字段
"fault_type": "Unsigned16" //错误值类型,Unsigned16
},
{
"mutate": "replace()", //变异函数替换
"parameter": "", //参数 :无
"field_type": "Struct", //匹配的字段类型:结构字段
"feature_type": "Struct" //错误值类型:结构类型
}
],
[
{
"mutate": "replace()", //变异函数替换
"parameter": "", //参数 :无
"field_type": "Enum", //匹配的字段类型:枚举类型
"feature_type": "Enum" //错误值类型:枚举类型
},
{
"mutate": "replace()", //变异函数替换
"parameter": "", //参数 :无
"field_type": "Struct", //匹配的字段类型:结构字段
"feature_type": "Struct" //错误值类型:结构类型
}
]
]
如图5所示,测试用例生成模块实现了变异函数的具体功能,通过执行变异策略指定的变异函数来生成测试用例,变异函数包括针对错误注入的替换、插入、置空、字节序翻转等操作,针对结构变异的删除字段、交换字段、重复字段、构造结构等操作和针对关键字段中的两个或两个以上字段的变异值进行组合变异。
上述设计基于协议特征匹配和变异策略选择的模糊测试用例生成方法,基于目标协议下采集报文的协议解析,获得协议结果集,然后获得协议结果集所匹配目标协议特征规则库中的各目标协议特征,最后根据目标协议特征规则库中各协议特征与预设变异策略库中各变异策略之间的预设对应关系,获得各目标协议特征对应的各推荐变异策略,用于目标协议下变异策略的推荐;并设计相应包括协议深度分析模块、协议特征提取模块、变异策略推荐模块的引擎,设计精简了测试用例集,缩短了测试时间,能够满足绝大多数通用协议、工业互联网协议的模糊测试。
设计引擎中,基于开源协议解析框架的报文深度分析模块,能够满足对绝大多数通用协议、工业互联网协议进行解析,对协议解析结果进行去重、排序、补齐处理,可以扩大协议解析范围,方便协议测试套件的快速扩展,节约协议解析的人工成本,提升协议解析效率和准确率;协议特征提取模块采用选择匹配命中次数最多的特征库协议特征作为目标协议特征,提取到协议字段类型、关键字段、字段结构、约束条件,能够更有效地指导变异策略的推荐;对输入的目标协议特征进行推荐变异策略的推荐,采用动态权重调整的算法,在变异策略执行过程中,根据执行结果动态调整变异策略的权重,并反馈给变异策略推荐模块,以便优先执行权重大的变异策略,优化测试用例集的生成,同时推荐到的变异策略将关键字段或字段结构优先组合,将字段或字段结构和变异函数进行针对性的绑定,可以精简测试用例集,缩短测试时间和发现漏洞的时间。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
Claims (10)
1.一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法,其特征在于:执行如下步骤,实现目标协议下用于测试用例生成的变异策略的推荐;
步骤A. 针对单终端关于目标协议下的预设数量采集报文,执行协议解析,获得协议结果集;
步骤B. 基于目标协议特征规则库,获得协议结果集中各协议字段所匹配目标协议特征规则库中的各协议特征,作为各目标协议特征;
步骤C. 基于预设变异策略库,根据目标协议特征规则库中各协议特征与预设变异策略库中各变异策略之间的预设对应关系,获得各目标协议特征对应的各变异策略,作为各推荐变异策略,用于目标协议下变异策略的推荐。
2.根据权利要求1所述一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法,其特征在于:所述步骤A包括如下步骤A1至步骤A2:
步骤A1. 应用开源协议解析框架,针对单终端关于目标协议下的预设数量采集报文执行协议解析,并将解析结果存储至协议树,再通过递归遍历协议树节点的方式,获得协议树各节点上的协议解析字段,组成协议结果集,然后进入步骤A2;
步骤A2. 针对协议结果集中的各协议解析字段依次执行排序、去重、补缺,更新协议结果集。
3.根据权利要求2所述一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法,其特征在于:所述步骤A2包括如下步骤A2-1至步骤A2-3:
步骤A2-1. 按协议解析字段的起始位置从小到大,针对协议结果集中的各协议解析字段进行有序排列,更新协议结果集,然后进入步骤A2-2;
步骤A2-2. 顺序依次遍历协议结果集中各个协议解析字段,比较相邻两个协议解析字段的起始位置,若前一个协议解析字段的起始位置和后一个协议解析字段的起始位置相等,则该两个协议解析字段彼此重复,并进一步判断前一个协议解析字段的长度是否大于后一个协议解析字段的长度,是则把前一个协议解析字段从协议结果集中删除,否则把后一个协议解析字段从协议结果集中删除;若前一个协议解析字段的起始位置和后一个协议解析字段的起始位置不相等,则不做任何处理;直到协议结果集中不存在彼此重复的协议解析字段,实现协议结果集的更新,然后进入步骤A2-3;
步骤A2-3. 顺序依次遍历协议结果集中各个协议解析字段,比较前一个协议解析字段的结束位置和后一个协议解析字段的起始位置,若前一个协议解析字段的结束位置小于后一个协议解析字段的起始位置,则基于步骤A1中协议解析操作下各个未解析字段的起始位置、长度,选择相应未解析字段添加至该两个协议解析字段之间,使得该前一个协议解析字段的结束位置等于该相应未解析字段的起始位置,该相应未解析字段的结束位置等于该后一个协议解析字段的起始位置;若前一个协议解析字段的结束位置大于后一个协议解析字段的起始位置,则表示前一个协议解析字段中包含后一个协议解析字段的字节内容,从前一个协议解析字段中删除该包含的字节内容,使得该前一个协议解析字段的结束位置等于该后一个协议解析字段的起始位置;进而实现协议结果集的更新。
4.根据权利要求1所述一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法,其特征在于:所述步骤B中,基于由目标协议下各协议特征、以及各协议特征分别所对应预设各属性规则构成的目标协议特征规则库,根据协议结果集中各协议字段分别所对应预设各属性值,获得协议结果集中各协议字段分别所匹配目标协议特征规则库中的各协议特征,作为各目标协议特征。
5.根据权利要求4所述一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法,其特征在于:所述步骤B中,基于由目标协议下各协议特征、以及各协议特征分别所对应预设各属性规则构成的目标协议特征规则库,根据协议结果集中各协议字段分别所对应预设各属性值,分别针对协议结果集中的各个协议字段,执行如下步骤B1至步骤B3;
步骤B1. 初始化目标协议特征规则库中各协议特征分别所对应的计数器为0;
步骤B2. 分别针对目标协议下的各协议特征,执行协议字段所对应预设各属性值与协议特征所对应预设各属性规则之间的匹配,彼此间每匹配成功一项,则该协议特征所对应计数器加1更新;进而获得各协议特征分别对应计数器的更新;
步骤B3. 选择最大计数器对应的协议特征,即作为该协议特征所对应的目标协议特征。
6.根据权利要求5所述一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法,其特征在于:所述协议字段所对应预设各属性值包括字段名称、十六进制串字段值、字段描述信息、字段初始类型、字段内容、报文结构内容、报文结构描述信息;目标协议下的各协议特征包括字段类型特征、关键字段特征、字段约束条件特征、字段结构特征。
7.根据权利要求1所述一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法,其特征在于:若步骤C首次执行,则初始化预设变异策略库中各变异策略分别对应的权重为1,步骤C执行所获各推荐变异策略的推荐顺序彼此相同;若步骤C非首次执行,则步骤C执行所获各推荐变异策略的推荐排序,按分别对应权重由大至小的顺序进行排序;
执行完步骤C之后,进入步骤D如下:
步骤D. 基于步骤C执行所获目标协议下的各推荐变异策略,获得各推荐变异策略所对应变异函数分别作用目标协议下报文的测试用例、并执行,若执行结果有效,则相对应推荐变异策略的权重进行加1更新,若执行结果无效,则相对应推荐变异策略的权重不更新,进而更新预设变异策略库中各变异策略分别对应的权重。
8.根据权利要求7所述一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法,其特征在于:所述预设变异策略库中各变异策略包括错误注入、结构变异、组合变异,其中,错误注入所对应变异函数包括替换、插入、置空、字节序翻转操作,结构变异所对应变异函数包括删除字段、交换字段、重复字段、构造结构操作,组合变异所对应变异函数包括针对关键字段中的两个或两个以上字段的变异值进行组合变异。
9.实现权利要求1至8中任意一项所述一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法的引擎,其特征在于:包括协议深度分析模块、协议特征提取模块、变异策略推荐模块,其中,协议深度分析模块用于执行步骤A,协议特征提取模块用于执行步骤B、变异策略推荐模块用于执行步骤C。
10.根据权利要求9所述一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法的引擎,其特征在于:还包括测试用例生成模块,测试用例生成模块用于执行基于步骤C执行所获目标协议下的各推荐变异策略,获得各推荐变异策略所对应变异函数分别作用目标协议下报文的测试用例、并执行,若执行结果有效,则相对应推荐变异策略的权重进行加1更新,若执行结果无效,则相对应推荐变异策略的权重不更新,进而更新预设变异策略库中各变异策略分别对应的权重。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311779004.XA CN117453573B (zh) | 2023-12-22 | 2023-12-22 | 一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法及引擎 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311779004.XA CN117453573B (zh) | 2023-12-22 | 2023-12-22 | 一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法及引擎 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117453573A true CN117453573A (zh) | 2024-01-26 |
CN117453573B CN117453573B (zh) | 2024-04-02 |
Family
ID=89580246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311779004.XA Active CN117453573B (zh) | 2023-12-22 | 2023-12-22 | 一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法及引擎 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117453573B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597734A (zh) * | 2019-09-23 | 2019-12-20 | 电子科技大学 | 一种适用于工控私有协议的模糊测试用例生成方法 |
CN112055003A (zh) * | 2020-08-26 | 2020-12-08 | 上海电力大学 | 一种基于字节长度分类的私有协议模糊测试用例生成方法 |
CN116366512A (zh) * | 2023-04-14 | 2023-06-30 | 南方电网科学研究院有限责任公司 | 测试用例生成方法、装置及计算机可读存储介质 |
CN117061384A (zh) * | 2023-08-16 | 2023-11-14 | 绿盟科技集团股份有限公司 | 一种模糊测试方法、装置、设备及介质 |
-
2023
- 2023-12-22 CN CN202311779004.XA patent/CN117453573B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597734A (zh) * | 2019-09-23 | 2019-12-20 | 电子科技大学 | 一种适用于工控私有协议的模糊测试用例生成方法 |
CN112055003A (zh) * | 2020-08-26 | 2020-12-08 | 上海电力大学 | 一种基于字节长度分类的私有协议模糊测试用例生成方法 |
CN116366512A (zh) * | 2023-04-14 | 2023-06-30 | 南方电网科学研究院有限责任公司 | 测试用例生成方法、装置及计算机可读存储介质 |
CN117061384A (zh) * | 2023-08-16 | 2023-11-14 | 绿盟科技集团股份有限公司 | 一种模糊测试方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117453573B (zh) | 2024-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20090204591A1 (en) | Method and arrangement for test case creation | |
CN107908541B (zh) | 接口测试方法、装置、计算机设备及存储介质 | |
US20060077895A1 (en) | Protocol emulator | |
Hsu et al. | A model-based approach to security flaw detection of network protocol implementations | |
CN111897846B (zh) | 缓存数据校验方法、装置、设备及存储介质 | |
US7409592B2 (en) | System for facilitating coverage feedback testcase generation reproducibility | |
CN112685612B (zh) | 一种特征码查找和匹配方法、设备及存储介质 | |
Crescenzi et al. | Trade-offs in distributed interactive proofs | |
US20210318947A1 (en) | Methods and apparatuses for generating smart contract test case | |
JP6533484B2 (ja) | テストデータ生成プログラム及びテストデータ生成方法 | |
Al-Shaer et al. | Automated pseudo-live testing of firewall configuration enforcement | |
US7975273B2 (en) | Fuzzing system and method of distributed computing environment (DCE) remote procedure call (RPC) | |
CN117453573B (zh) | 一种基于协议特征匹配和变异策略选择的模糊测试用例生成方法及引擎 | |
Blanc et al. | Benchmarking of lightweight cryptographic algorithms for wireless IoT networks | |
EP1780946A1 (en) | Consensus testing of electronic system | |
CN111625448B (zh) | 协议包生成方法、装置、设备及存储介质 | |
Liu et al. | Analysis of RIPEMD-160: new collision attacks and finding characteristics with MILP | |
Pan et al. | Model‐Based Grey‐Box Fuzzing of Network Protocols | |
CN110059485A (zh) | Ios应用的私有api检测方法、终端及存储介质 | |
US20160126976A1 (en) | Methods, systems, and computer readable media for optimized message decoding | |
CN113760753B (zh) | 基于灰盒模糊技术的quic协议测试方法 | |
Belhadi et al. | White-box and black-box fuzzing for GraphQL APIs | |
Janssen et al. | Fingerprinting TLS implementations using model learning | |
McQuistin et al. | Investigating Automatic Code Generation for Network Packet Parsing | |
van de Weerd | Analysis of a Comparison Tool for Searchable Encryption Techniques for Order Queries |
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 |