UDS Challenge WP

Simulation VIN

pre knew:

//物理地址和功能地址
引擎ECU 请求的物理地址为 0x7E0, 响应地址0x7E8
空调ECU 请求的物理地址为 0x720, 响应地址0x728
⻋⻔ECU 请求的物理地址为 0x760, 响应地址0x768
这些ECU的<功能地址>均为 0x7DF(企业中实际上ECU的功能地址都设置为7DF)
场景1(单聊 @XXX ECU)【物理地址】
请求:Tester --> 0x760报⽂ --> ⻋⻔ECU
响应:⻋⻔ECU --> 0x768报⽂ --> Tester
场景2(群聊 @所有⼈)【功能地址】
请求:Tester --> 0x7DF报⽂ --> 发给所有ECU
响应:引擎ECU --> 0x7E8报⽂ --> Tester
响应:空调ECU --> 0x728报⽂ --> Tester
响应:⻋⻔ECU --> 0x768报⽂ --> Tester

读取VIN码使用22服务(通过标识符读取数据), 0xF190 代表 VIN 码请求
22为SID,f190为DID
image.png

由于VIN码较长,需要多帧发送接收,所以需要使用流控帧(FC)和连续帧(CF)
通信过程:
image.png

payload:

cansend vcan0 7df#0322f19000000000 && sleep 0.01 && cansend vcan0 7e0#3000000000000000

先广播,可以看到0x7e8回复了,而它对应的接收地址是0x7e0,所以流控帧就发送到0x7e0,接收到以下内容:

vcan07DF[8]03 22 F1 90 00 00 00 00 --->发送的请求
vcan07E8[8]10 14 62 F1 90 66 6C 61 --->接收到的首帧(FF)
vcan059E[2]9E 10 
vcan07E0[8]30 00 00 00 00 00 00 00 --->发送的流控帧(FC)
vcan07E8[8]21 67 7B 76 31 6E 5F 42 --->接收的连续帧(CF)
vcan07E8[8]22 48 6D 61 63 68 33 7D --->接收的连续帧(CF)

vcan07E8[8]10 14 62 F1 90 66 6C 61 : 10表示这是多帧响应的第一帧, 14表示包括当前帧的总帧(也就是20帧), 62是22服务的肯定响应(肯定响应就是SID+0x40), f190是DID , 66 6C 61是VIN的一部分
vcan07E8[8]21 67 7B 76 31 6E 5F 42 : 21表示这是多帧响应的第二帧, 是VIN的第二部分
vcan07E8[8]22 48 6D 61 63 68 33 7D: 22表示这是多帧响应的第三帧,48 6D 61 63 68 33 7D是VIN的第三部分
VIN: 66 6C 61 67 7B 76 31 6E 5F 42 48 6D 61 63 68 33 7D --ASCII--> flag{v1n_BHmach3}

Startup message

pre knew:

11诊断服务: 主要用于Client向Server(ECU)请求重启行为
部分子服务:
image.png

payload:

cansend vcan0 7df#0211010000000000

监听:

vcan07DF[8]02 11 01 00 00 00 00 00 
vcan07E8[8]02 51 01 00 00 00 00 00 
vcan07DF[8]07 67 30 47 72 65 33 6E

07代表数据部分的长度, 67 30 47 72 65 33 6E --ASCII--> g0Gre3n

Engin Trouble

pre knew

payload

posted @ 2024-07-19 17:30  山雀retr0  阅读(55)  评论(1)    收藏  举报