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

一种车辆CAN总线渗透测试方法及系统与流程

2022-07-15 23:44:16 来源:中国专利 TAG:

一种车辆can总线渗透测试方法及系统
技术领域
1.本发明涉及车辆信息安全技术领域,具体涉及一种车辆can总线渗透测试方法及系统。


背景技术:

2.can总线协议是当前汽车内控制器应用最广的一种通讯协议,大部分汽车控制信号是通过can总线协议进行传输,所以对can总线协议传输的控制信号进行渗透测试,能及时发现车辆控制器或整车功能逻辑设计缺陷,提高汽车控制器或整车功能的健壮性。
3.传统can总线通讯协议渗透测试采用的方法有以下两种:
4.(1)操作车辆功能,同时监控车辆can总线信号变化,筛查并确认控制信号定义;该方法只能测试车辆部分可以操作的功能,且效率极低;
5.(2)使用外接设备发送伪装报文,伪装报文数据场每个字节按照0x00到0xff进行遍历,然后采用二分法测试控制信号定义;该方法可以测试车辆所有控制信号,且效率较方法(1)有提升,但也存在如下缺陷:

伪装报文和车辆真实报文可能会出现同时发送,导致出现总线错误;

这种遍历所有值的测试方法,可能导致一些功能在短时间(例如几十毫秒)内反复激活、关闭,损坏车辆电器;

测试效率较低,如果按照完全遍历所有可能性,一个can总线报文需要测试时间较长,以8个字节,10ms周期报文为例,测试时间为2558*10ms,实际测试过程中也经过简化,例如不考虑控制信号跨字节情况,一个报文的测试时间可降低到20秒,但因为需要反复使用二分法确定信号定义,实际一个报文测试时间也要几十分钟;

测试有效性较低,因为测试信号只发送一次,可能出现接收不到而无响应问题。


技术实现要素:

6.本发明的目的在于提出一种车辆can总线渗透测试方法及系统,以至少解决传统can总线通讯协议渗透测试所存在的容易出现被测报文(真实报文)与伪装报文同时发送出现的总线错误帧的技术问题。
7.为实现上述目的,本发明第一方面提出一种车辆can总线渗透测试方法,包括:
8.步骤s1、获取被测试报文,获取所述被测试报文中数据场的多个字节的数据;
9.步骤s2、根据所述多个字节获取当前待测试字节;
10.步骤s3、根据多个预设测试值获取当前测试值,并根据所述当前测试值和所述当前待测试字节生成当前伪装报文;
11.步骤s4、发送所述被测试报文,并延时预设时间后或根据预设发送周期发送所述当前伪装报文以对所述当前待测试字节进行渗透测试;
12.步骤s5、在发送所述当前伪装报文之后,根据车辆实时运行状态确定车辆功能是否有响应,并当车辆功能有响应时,记录所述当前待测试字节和所述当前测试值。
13.可选地,所述根据所述当前测试值和所述当前待测试字节生成当前伪装报文,包括:
14.将所述当前测试值替换所述被测报文中的所述当前待测试字节中的字节数据,获得当前伪装报文。
15.可选地,所述方法还包括:
16.预先设置多个控制信号,所述控制信号包括一个位长度信号、两个位长度信号、三个位长度信号和四个位长度信号;
17.将所述一个位长度信号置入一个字节中任意一个位中,获得多个测试值;将所述两个位长度信号置入一个字节中任意两个相邻的位中,获得多个测试值;将所述三个位长度信号置入一个字节中任意三个相邻的位中,获得多个测试值;以及,将所述四个位长度信号置入一个字节中任意四个相邻的位中,获得多个测试值;
18.将以上获得的所有测试值进行筛减,剔除重复的测试值后获得所述多个预设测试值。
19.可选地,所述一个位长度信号包括0、1;所述两个位长度信号包括01、10、11;所述三个位长度信号包括001、010、011、100、101、110、111;所述四个位长度信号包括0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1111。
20.可选地,所述步骤s5还包括:
21.判断所述多个预设测试值是否均已完成对所述当前待测试字节的渗透测试;其中,若均已完成对所述当前待测试字节的渗透测试,则进一步判断所述多个字节是否均完成渗透测试,若是,则结束渗透测试流程,若否,则进行下一个字节的渗透测试;其中,若存在至少一个预设测试值未完成对所述当前待测试字节的渗透测试,则进行下一个预设测试值对所述当前待测试字节的渗透测试。
22.可选地,其中,所述进行下一个字节的渗透测试,包括:
23.在所述多个字节中选择任一个未进行渗透测试的字节作为当前待测试字节,并根据该当前待测试字节继续执行所述步骤s3~s5;
24.其中,所述进行下一个预设测试值对所述当前待测试字节的渗透测试,包括:
25.在所述多个预设测试值中选择任一个未对所述当前待测试字节进行渗透测试的预设测试值作为当前测试值,并根据该当前测试值继续执行所述步骤s3~s5。
26.本发明第二方面提出一种车辆can总线渗透测试系统,包括:
27.被测报文获取单元,用于获取被测试报文,获取所述被测试报文中数据场的多个字节的数据;
28.当前待测试字节获取单元,用于根据所述多个字节获取当前待测试字节;
29.伪装报文生成单元,用于根据多个预设测试值获取当前测试值,并根据所述当前测试值和所述当前待测试字节生成当前伪装报文;
30.渗透测试单元,用于发送所述被测试报文,并延时预设时间后或根据预设发送周期发送所述当前伪装报文以对所述当前待测试字节进行渗透测试;以及
31.测试结果分析单元,用于在发送所述当前伪装报文之后,根据车辆实时运行状态确定车辆功能是否有响应,并当车辆功能有响应时,记录所述当前待测试字节和所述当前测试值。
32.可选地,所述伪装报文生成单元,具体用于:
33.将所述当前测试值替换所述被测报文中的所述当前待测试字节中的字节数据,获
得当前伪装报文。
34.可选地,所述系统预先设置多个控制信号,所述控制信号包括一个位长度信号、两个位长度信号、三个位长度信号和四个位长度信号;所述多个预设测试值具体为根据所述多个控制信号获得;
35.其中:将所述一个位长度信号置入一个字节中任意一个位中,获得多个测试值;将所述两个位长度信号置入一个字节中任意两个相邻的位中,获得多个测试值;将所述三个位长度信号置入一个字节中任意三个相邻的位中,获得多个测试值;以及,将所述四个位长度信号置入一个字节中任意四个相邻的位中,获得多个测试值;将以上获得的所有测试值进行筛减,剔除重复的测试值后获得所述多个预设测试值。
36.可选地,所述测试结果分析单元具体还用于:
37.判断所述多个预设测试值是否均已完成对所述当前待测试字节的渗透测试;其中,若均已完成对所述当前待测试字节的渗透测试,则进一步判断所述多个字节是否均完成渗透测试,若是,则结束渗透测试流程,若否,则进行下一个字节的渗透测试;其中,若存在至少一个预设测试值未完成对所述当前待测试字节的渗透测试,则进行下一个预设测试值对所述当前待测试字节的渗透测试。
38.本发明的实施例提出一种车辆can总线渗透测试方法及系统至少具有以下有益效果:
39.本发明的实施例方法及系统可以对车辆的can总线控制信号进行渗透测试,从而评估车辆控制器在遭受非法控制时造成的车辆的哪些功能受控以及可能的安全风险,具体地,本发明的实施例方法及系统采用主动发送伪装报文的方式来测试can总线网络的控制信号;并且,所述伪装报文采用跟随被测试报文(真实报文)发送的发送策略,避免导致与真实报文同时发送产生的总线错误;所述伪装报文采用被测试报文发送后,延时预设时间发送,可以在大部分情况下使接收控制器忽略实车的真实指令,而执行伪装指令,使测试更有效。
40.本发明的其它特征和优点将在随后的说明书中阐述。
附图说明
41.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
42.图1为本发明一实施例中一种车辆can总线渗透测试方法流程图。
43.图2为本发明一实施例中一种车辆can总线渗透测试系统结构示意图。
具体实施方式
44.以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。另外,为了更好的说明本发明,在下文的具体实施例中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在一些实例中,对于本领域技术人员熟知的手段未作详细描述,以便于凸显本发明的主旨。
45.参阅图1,本发明一实施例提出一种车辆can总线渗透测试方法,本实施例方法包括如下步骤s1~s5:
46.步骤s1、获取被测试报文,获取所述被测试报文中数据场的多个字节的数据;
47.具体而言,所述被测试报文为can总线报文,该报文的数据场包括多个字节;
48.步骤s2、根据所述多个字节获取当前待测试字节;
49.具体而言,在进行渗透测试时,需要对所述多个字节依次进行测试;
50.步骤s3、根据多个预设测试值获取当前测试值,并延时预设时间后或根据预设发送周期发送所述当前伪装报文以对所述当前待测试字节进行渗透测试;
51.本实施例中提出两种伪装报文的发送方式,即延时预设时间后发送(跟随发送),或根据预设发送周期发送,所述延时预设时间例如是1ms;所述根据预设发送周期为报文can总线报文的一种常规报文发送方式;
52.具体而言,本实施例方法中预先设置了多个预设测试值,并利用所述多个预设测试值对所述多个字节依次进行测试;
53.具体地,本实施例中将所述当前测试值替换所述被测报文中的所述当前待测试字节中的字节数据,获得当前伪装报文;
54.需说明的是,所述当前伪装报文与所述被测报文之间的区别,仅在于被测的当前待测试字节的内容不同,报文数据场中其他字节的数据相同,有利于提高渗透测试的可靠性;
55.示例性地,在本实施例方法包括:
56.步骤s31、预先设置多个控制信号,所述控制信号包括一个位长度信号、两个位长度信号、三个位长度信号和四个位长度信号;
57.具体而言,本实施例中设置控制信号最大长度不超过四个位(bit),控制信号封装到伪装报文中时,不跨字节放置;
58.步骤s32、将所述一个位长度信号置入一个字节中任意一个位中,获得多个测试值;将所述两个位长度信号置入一个字节中任意两个相邻的位中,获得多个测试值;将所述三个位长度信号置入一个字节中任意三个相邻的位中,获得多个测试值;以及,将所述四个位长度信号置入一个字节中任意四个相邻的位中,获得多个测试值;
59.优选地,所述一个位长度信号包括0、1;
60.所述两个位长度信号包括01、10、11;
61.所述三个位长度信号包括001、010、011、100、101、110、111;
62.所述四个位长度信号包括0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1111;
63.本实施例中对控制信号进行了有效假设,在兼顾测试效率的同时,能够覆盖90%以上控制信号定义;
64.基于以上信号值,所述步骤s32具体包括:
65.对于一个位长度信号测试值(每个bit):0或1
66.每个位都进行0和1两个值进行测试,如下表1所示:
67.表1
68.bit(0)bit(1)bit(2)bit(3)bit(4)bit(5)bit(6)bit(7)
0/10/10/10/10/10/10/10/1
69.那么本实施例中的测试值可以按照0和1依次右移1个位得到如下测试值:
70.信号0:0;
71.信号1:1*20、1*21、1*22、1*23、1*24、1*25、1*26、1*27;
72.对于两个位长度信号测试值(二进制):00、01、10、11;
73.同样可以对00和01、10,11依次右移1个位得到如下测试值:
74.信号01:1*20、1*21、1*22、1*23、1*24、1*25、1*26、1*27、;
75.信号10:2*20、2*21、2*22、2*23、2*24、2*25、2*26;
76.信号11:3*20、3*21、3*22、3*23、3*24、3*25、3*26;
77.对于三个位长度信号测试值(二进制):000、001、010、011、100、101、110、111;
78.同样算法可以得到测试值如下:
79.信号001:1*20、1*21、1*22、1*23、1*24、1*25、1*26、1*27;
80.信号010:2*20、2*21、2*22、2*23、2*24、2*25、2*26;
81.信号011:3*20、3*21、3*22、3*23、3*24、3*25、3*26;
82.信号100:4*20、4*21、4*22、4*23、4*24、4*25;
83.信号101:5*20、5*21、5*22、5*23、5*24、5*25;
84.信号110:6*20、6*21、6*22、6*23、6*24、6*25;
85.信号111:7*20、7*21、7*22、7*23、7*24、7*25;
86.对于四个位长度信号测试值(二进制):0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110、1111,按照同样方法得到每个字节的测试值为:
87.信号0001:1*20、1*21、1*22、1*23、1*24、1*25、1*26、1*27;
88.信号0010:2*20、2*21、2*22、2*23、2*24、2*25、2*26;
89.信号0011:3*20、3*21、3*22、3*23、3*24、3*25、3*26;
90.信号0100:4*20、4*21、4*22、4*23、4*24、4*25;
91.信号0101:5*20、5*21、5*22、5*23、5*24、5*25;
92.信号0110:6*20、6*21、6*22、6*23、6*24、6*25;
93.信号0111:7*20、7*21、7*22、7*23、7*24、7*25;
94.信号1000:8*20、8*21、8*22、8*23、8*24;
95.信号1001:9*20、9*21、9*22、9*23、9*24;
96.信号1010:10*20、10*21、10*22、10*23、10*24;
97.信号1011:11*20、11*21、11*22、11*23、11*24;
98.信号1100:12*20、12*21、12*22、12*23、12*24;
99.信号1101:13*20、13*21、13*22、13*23、13*24;
100.信号1110:14*20、14*21、6*22、6*23、6*24;
101.信号1111:15*20、15*21、15*22、15*23、15*24;
102.步骤s33、将以上获得的所有测试值进行筛减,剔除重复的测试值后获得所述多个预设测试值;
103.具体而言,对上述信号测试值进行筛减,剔除重复测试值得到渗透测试每个字节
需要的测试值(十六进制),即如下48个测试值(十六进制):
104.0x00、0x01、0x02、0x03、0x04、0x05、0x06、0x07、0x08、0x09、0x0a、0x0b、0x0c、0x0d、0x0e、0x0f、0x10、0x12、0x14、0x16、0x18、0x1a、0x1c、0x1e、0x20、0x24、0x28、0x2c、0x30、0x34、0x38、0x3c、0x40、0x48、0x50、0x58、0x60、0x68、0x70、0x78、0x80、0x90、0xa0、0xb0、0xc0、0xd0、0xe0、0xf0;
105.需说明的是,经过步骤s33的筛减后,每个字节渗透测试的测试值由原来256个减少到48个,大大提高了测试效率,并减少了短时间重复开启关闭电器功能对车辆造成的损坏;
106.需说明的是,上述步骤s31~s33为本实施例方法实施之前进行,在实施本实施例方法时,即进行渗透测试时,并不需要再执行上述步骤s31~s33;
107.步骤s4、发送所述被测试报文,并延时预设时间后,发送所述当前伪装报文以对所述当前待测试字节进行渗透测试;
108.步骤s5、在发送所述当前伪装报文之后,根据车辆实时运行状态确定车辆功能是否有响应,并当车辆功能有响应时,记录所述当前待测试字节和所述当前测试值。
109.具体而言,测试过程中需要实时监测车辆的响应情况;
110.所述根据车辆功能响应结果记录测试结果包括:若车辆功能有响应,则记录所述当前测试值和所述当前待测试字节信息;若车辆功能无响应,则不记录所述当前测试值和所述当前待测试字节信息。
111.其中,所述步骤s5还包括:
112.其中,若均已完成对所述当前待测试字节的渗透测试,则进一步判断所述多个字节是否均完成渗透测试,若是,则结束渗透测试流程,若否,则进行下一个字节的渗透测试;
113.其中,若存在至少一个预设测试值未完成对所述当前待测试字节的渗透测试,则进行下一个预设测试值对所述当前待测试字节的渗透测试;
114.具体地,所述进行下一个字节的渗透测试,包括:
115.在所述多个字节中选择任一个未进行渗透测试的字节作为当前待测试字节,并根据该当前待测试字节继续执行所述步骤s3~s5。
116.具体地,所述进行下一个预设测试值对所述当前待测试字节的渗透测试,包括:
117.在所述多个预设测试值中选择任一个未对所述当前待测试字节进行渗透测试的预设测试值作为当前测试值,并根据该当前测试值继续执行所述步骤s3~s5。
118.作为一种例子,为提高渗透测试的可靠性,每个测试值可以重复测试3次。
119.需说明的是,本实施例方法的执行主体可以是任一种计算机设备。
120.例如,所述计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行根据上述实施例所述的车辆can总线渗透测试方法的步骤。
121.当然,所述计算机设备还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算机设备还可以包括其他用于实现设备功能的部件,在此不做赘述。
122.示例性的,所述计算机程序可以被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器中,并由所述处理器执行,以完成本发明实施例。所述一个或多个单
元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述计算机设备中的执行过程。
123.所述处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机设备的控制中心,利用各种接口和线路连接整个所述计算机设备的各个部分。所述存储器可用于存储所述计算机程序和/或单元,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或单元,以及调用存储在存储器内的数据,实现所述计算机设备的各种功能。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
124.参阅图2,本发明另一实施例提出一种车辆can总线渗透测试系统,可以用于实现上述实施例所述车辆can总线渗透测试方法,所述系统包括:
125.被测报文获取单元1,用于获取被测试报文,获取所述被测试报文中数据场的多个字节的数据;
126.当前待测试字节获取单元2,用于根据所述多个字节获取当前待测试字节;
127.伪装报文生成单元3,用于根据多个预设测试值获取当前测试值,并根据所述当前测试值和所述当前待测试字节生成当前伪装报文;
128.渗透测试单元4,用于发送所述被测试报文,并延时预设时间后或根据预设发送周期发送所述当前伪装报文以对所述当前待测试字节进行渗透测试;以及
129.测试结果分析单元5,用于在发送所述当前伪装报文之后,根据车辆实时运行状态确定车辆功能是否有响应,并当车辆功能有响应时,记录所述当前待测试字节和所述当前测试值。
130.可选地,所述伪装报文生成单元3,具体用于:
131.将所述当前测试值替换所述被测报文中的所述当前待测试字节中的字节数据,获得当前伪装报文。
132.可选地,所述系统预先设置多个控制信号,所述控制信号包括一个位长度信号、两个位长度信号、三个位长度信号和四个位长度信号;所述多个预设测试值具体为根据所述多个控制信号获得;
133.其中:将所述一个位长度信号置入一个字节中任意一个位中,获得多个测试值;将所述两个位长度信号置入一个字节中任意两个相邻的位中,获得多个测试值;将所述三个位长度信号置入一个字节中任意三个相邻的位中,获得多个测试值;以及,将所述四个位长度信号置入一个字节中任意四个相邻的位中,获得多个测试值;将以上获得的所有测试值进行筛减,剔除重复的测试值后获得所述多个预设测试值。
134.可选地,所述测试结果分析单元具体还用于:
135.判断所述多个预设测试值是否均已完成对所述当前待测试字节的渗透测试;其
中,若均已完成对所述当前待测试字节的渗透测试,则进一步判断所述多个字节是否均完成渗透测试,若是,则结束渗透测试流程,若否,则进行下一个字节的渗透测试;其中,若存在至少一个预设测试值未完成对所述当前待测试字节的渗透测试,则进行下一个预设测试值对所述当前待测试字节的渗透测试。
136.可选地,所述一个位长度信号包括0、1;所述两个位长度信号包括01、10、11;所述三个位长度信号包括001、010、011、100、101、110、111;所述四个位长度信号包括0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1111。
137.以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
138.需说明的是,上述实施例所述系统与上述实施例所述方法对应,因此,上述实施例所述系统未详述部分可以参阅上述实施例所述方法的内容得到,此处不再赘述。
139.综上,本发明的实施例方法及系统可以对车辆的can总线控制信号进行渗透测试,从而评估车辆控制器在遭受非法控制时造成的车辆的哪些功能受控以及可能的安全风险,具体地,本发明的实施例方法及系统采用主动发送伪装报文的方式来测试can总线网络的控制信号;并且,所述伪装报文采用跟随被测试报文(真实报文)发送的发送策略,避免导致与真实报文同时发送产生的总线错误;所述伪装报文采用被测试报文发送后,延时预设时间发送,可以在大部分情况下使接收控制器忽略实车的真实指令,而执行伪装指令,使测试更有效。
140.以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献