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

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

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)请求重启行为
部分子服务:

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

浙公网安备 33010602011771号