「车联网安全」OBD(汽车诊断插头)与CAN报文
字数 1571 2025-08-22 12:23:13

车联网安全:OBD与CAN报文详解

1. OBD概述

1.1 什么是OBD

OBD(On-Board Diagnostics)是汽车诊断接口系统,用于监测和报告车辆运行状况。主要分为两个版本:

  • OBD-I:早期诊断系统(1980-1990年代),非标准化实现,各制造商方案不同
  • OBD-II:1996年后成为标准,统一了诊断接口和故障码格式,兼容所有制造商

1.2 OBD-II接口特性

  • 位置:通常位于驾驶室下部(仪表板附近或脚踏板下)
  • 功能:
    • 读取车辆实时数据
    • 诊断发动机和车辆系统问题
    • 检索故障码(DTC)
    • 执行特定测试

2. OBD-II接口针脚定义

针脚 对应关系
1 开电门12V(关电门0V)
4/5 长地线
6 CAN高通讯线
7 诊断K线(与变速箱/电脑板通讯,约11V)
14 CAN低通讯线
15 L线(连接汽车电脑板,约6V)
16 30长电源(常电)
3 舒适CAN高
11 舒适CAN低

3. OBD安全风险

  1. 物理访问风险:接口位置易接触,便于攻击者连接
  2. 身份校验缺失:多数OBD端口无认证机制
  3. 安全控制不足
    • 缺乏加密措施
    • 无访问控制
    • 无入侵检测系统

4. OBD诊断仪使用

4.1 基本使用步骤

  1. 定位OBD-II接口
  2. 插入诊断仪(确保完全插入)
  3. 启动车辆引擎(部分功能需要)
  4. 选择功能:
    • 读取实时数据(转速、车速、温度等)
    • 检索故障码
    • 执行测试
  5. 安全断开连接

4.2 高级使用(访问ECU)

  1. 连接CAN工具(如CANoe)到OBD接口
    • CANH→6针脚
    • CANL→14针脚
  2. 发送"请求帧"
  3. 接收ECU"响应帧"
  4. 使用DBC文件解码报文

5. CAN总线技术详解

5.1 物理层特性

  • 信号表示
    • CAN高:2.5V~3.5V
    • CAN低:1.5V~2.5V
  • 逻辑表示
    • CAN_diff=0(高2.5V/低2.5V)→逻辑1(隐性)
    • 显性状态表示逻辑0
  • 抗干扰:双绞线设计,差分信号抵消共模干扰
  • 终端电阻:两端120Ω防止信号反射

5.2 报文结构

标准帧格式

  1. SOF(Start of Frame):帧开始标志
  2. 标识符(Identifier):消息ID和优先级
  3. TRT(Transmission Request):传输请求
  4. IDE(Identifier Extension):标识符扩展指示
  5. RO(Read-Only):只读标志
  6. DLC(Data Length Code):数据长度(0-8字节)
  7. 数据域(Data Field):实际数据
  8. CRC(Cyclic Redundancy Check):循环冗余校验
  9. CRC分隔符
  10. ACK Field:确认字段
  11. EOF(End of Frame):帧结束

扩展帧格式

  1. SOF:帧开始
  2. 基本标识符
  3. SRR(Substitute Remote Request)
  4. IDE:标识符扩展标志
  5. 扩展标识符
  6. RTR(Remote Transmission Request)
  7. R1/R0:保留位(必须为0)
  8. DLC:数据长度
  9. 数据域
  10. CRC
  11. CRC分隔符
  12. ACK Field
  13. EOF

5.3 关键技术机制

  1. 冲突仲裁

    • "线与"规则:显性位(0)覆盖隐性位(1)
    • 低ID优先级高
  2. 位填充

    • 连续5个相同位后插入相反位
    • 5个1→填充0,5个0→填充1
    • 收发器自动处理填充/去除
  3. 报文类型

    • 数据帧:携带实际数据
    • 远程帧:请求数据
    • 错误帧:报告错误
    • 超载帧:流量控制

6. 报文示例解析

报文名称: EMS_Control
报文ID: 100
发送周期: 10ms
报文长度: 8byte

信号定义:
- EMS_RPM:
  * 起始位置: 0
  * 起始位: 7
  * 长度: 8bit
  * 系数: 30
  * 偏置: 0
  * 范围: 0-7650
  
- EMS_FAIL_F:
  * 起始位置: 1
  * 起始位: 0
  * 长度: 1bit
  * Coding: 
    0b: normal
    1b: abnormal

7. 参考资料

  1. CAN总线原理视频
  2. OBD针脚含义解析
  3. OBD针脚定义详解
车联网安全:OBD与CAN报文详解 1. OBD概述 1.1 什么是OBD OBD(On-Board Diagnostics)是汽车诊断接口系统,用于监测和报告车辆运行状况。主要分为两个版本: OBD-I :早期诊断系统(1980-1990年代),非标准化实现,各制造商方案不同 OBD-II :1996年后成为标准,统一了诊断接口和故障码格式,兼容所有制造商 1.2 OBD-II接口特性 位置:通常位于驾驶室下部(仪表板附近或脚踏板下) 功能: 读取车辆实时数据 诊断发动机和车辆系统问题 检索故障码(DTC) 执行特定测试 2. OBD-II接口针脚定义 | 针脚 | 对应关系 | |------|----------| | 1 | 开电门12V(关电门0V) | | 4/5 | 长地线 | | 6 | CAN高通讯线 | | 7 | 诊断K线(与变速箱/电脑板通讯,约11V) | | 14 | CAN低通讯线 | | 15 | L线(连接汽车电脑板,约6V) | | 16 | 30长电源(常电) | | 3 | 舒适CAN高 | | 11 | 舒适CAN低 | 3. OBD安全风险 物理访问风险 :接口位置易接触,便于攻击者连接 身份校验缺失 :多数OBD端口无认证机制 安全控制不足 : 缺乏加密措施 无访问控制 无入侵检测系统 4. OBD诊断仪使用 4.1 基本使用步骤 定位OBD-II接口 插入诊断仪(确保完全插入) 启动车辆引擎(部分功能需要) 选择功能: 读取实时数据(转速、车速、温度等) 检索故障码 执行测试 安全断开连接 4.2 高级使用(访问ECU) 连接CAN工具(如CANoe)到OBD接口 CANH→6针脚 CANL→14针脚 发送"请求帧" 接收ECU"响应帧" 使用DBC文件解码报文 5. CAN总线技术详解 5.1 物理层特性 信号表示 : CAN高:2.5V~3.5V CAN低:1.5V~2.5V 逻辑表示 : CAN_ diff=0(高2.5V/低2.5V)→逻辑1(隐性) 显性状态表示逻辑0 抗干扰 :双绞线设计,差分信号抵消共模干扰 终端电阻 :两端120Ω防止信号反射 5.2 报文结构 标准帧格式 SOF(Start of Frame):帧开始标志 标识符(Identifier):消息ID和优先级 TRT(Transmission Request):传输请求 IDE(Identifier Extension):标识符扩展指示 RO(Read-Only):只读标志 DLC(Data Length Code):数据长度(0-8字节) 数据域(Data Field):实际数据 CRC(Cyclic Redundancy Check):循环冗余校验 CRC分隔符 ACK Field:确认字段 EOF(End of Frame):帧结束 扩展帧格式 SOF:帧开始 基本标识符 SRR(Substitute Remote Request) IDE:标识符扩展标志 扩展标识符 RTR(Remote Transmission Request) R1/R0:保留位(必须为0) DLC:数据长度 数据域 CRC CRC分隔符 ACK Field EOF 5.3 关键技术机制 冲突仲裁 : "线与"规则:显性位(0)覆盖隐性位(1) 低ID优先级高 位填充 : 连续5个相同位后插入相反位 5个1→填充0,5个0→填充1 收发器自动处理填充/去除 报文类型 : 数据帧:携带实际数据 远程帧:请求数据 错误帧:报告错误 超载帧:流量控制 6. 报文示例解析 7. 参考资料 CAN总线原理视频 OBD针脚含义解析 OBD针脚定义详解