车联网学习笔记1

报文审计

CRC

/

SecOC机制

/

报文识别

扩展帧和标准帧

18daxxxx 是扩展帧标识符
前两个字节是UDS标识符,后两个字节是子功能码
18DB
18DA
7DF 是标准帧标识符
7DF
7FF

18DBFFF1 寻址

1
7DF#02 11 01 AA AA AA AA

7DF:CAN消息标识符
02:服务ID
11:功能ID
01:数据ID(功能参数)
xx…: 数据报文

03 7F xx(功能id)是否定响应,比如发送02 11 01 AA AA AA AA AA,按照前面说的响应+40,肯定响应则是02 51 01 AA AA AA AA AA,否定响应的话就不会这样,而是03 7F 11 12 AA AA AA AA,其中11是请求的功能ID,12是响应码

响应码说明

0x12(子功能不支持)
0x13(报文长度错误或格式非法)
0x22(条件不满足,处于变编程状态)

Can通信

目前接触过的can通信软件:pcan view、zcan pro

发送报文11 01响应的是51 01,发送10 01响应的是50 01
观察报文的收发发现,服务端响应的报文里,功能ID会比发送的多40,比如发送27 01 ,响应则是67 01 ,发送22 f1,响应则是62 f1,了解这个规则有利于查找对应的响应报文

使用UDS诊断时先发送10 03切换模式(00为保留 01位默认模式 02为编程模式 03为扩展模式)

先发送18DBFFF1确认通信地址,比如发送18DBFFF1,回复的是18DAF1EE,其中18DB回复对应的标识符18DA,回复的EE是通信ID,所以后续要跟EE进行通信,最终通信地址就是18DAEEF1

主板

串口通信

调试口一般是RX TX GND,其中GND是地线,RX是接收,TX是发送,引脚线两端要对好,一般板子都会标明,如果没有标明,则用万用表测试。

1
2
3
通断档:黑表笔接到板子的电路或者金属上,红表笔依次触碰测试,如果响了就表示是地线
电压档:黑表笔接到板子的电路或者金属上,红表笔依次触碰测试,如果电压为0表示是地线
测试RX:万用表显示1.4左右的话就是有数据

板子一般是12v,万用表调到20就够用了

目前复测过的漏洞(真实车零部件):

1
2
3
4
5
6
7
8
9
10
11
CAN_FD软硬件强制复位:通过发送复位报文让设备重启

CAN_FD DOS:通过一直发送高优先级报文导致拒绝服务

CAN抗重放测试:没有实车时,审计报文,查看会不会存在重放漏洞,有实车时,重放报文查看车的重放效果

UDS诊断DID数据篡改测试:通过2E篡改RX报文,22请求查看篡改后的报文

27服务测试: 了解了uds安全访问诊断流程,先是1、客户端发送27 01请求种子,然后2、服务端返回67 01 [种子], 3、客户端使用收到的种子以及一些事先约定的算法,生成一个对称密钥(会话密钥)使用27 02 + 密钥发送,4、服务端收到客户端发送的密钥后,使用预共享的密钥生成算法(通常是与客户端相同的算法),计算出相同的对称密钥,如果密钥是对的,响应67 02 + 密钥,ECU自动解锁,接下来就积极跟客户端通信,如果不对会返回否定响应

安全刷写测试: 上位机是本地校验,通过反编译调试绕过本地校验进行固件刷写

ECU刷写

截至目前见过刷写原理(通过查看OTA升级日志)其实就是上位机通过发送2E来写入数据

诊断服务参考:

UDS的安全访问服务(0x27)与CAPL实现自动处理
https://blog.csdn.net/u013391094/article/details/130911357

安全访问(ISO14229系列之27服务)
https://blog.csdn.net/weixin_44536482/article/details/93340252


声明:
本文章用于学习交流,严禁用于非法操作,出现后果一切自行承担,阅读此文章表示你已同意本声明。

Disclaimer:
This article is for study and communication. It is strictly forbidden to use it for illegal operations. All consequences shall be borne by yourself. Reading this article means that you have agreed to this statement.