车联网UDS诊断:0x22,0x2E,0x11,0x2F,0x31,0x28请求数据分析实战.
车联网UDS诊断:0x22,0x2E,0x11,0x2F,0x31,0x28请求数据分析实战.
UDS(统一诊断服务)是汽车电子控制单元的标准诊断协议,相当于车辆与诊断仪之间的“通用语言”,用于读取故障码、清除故障、刷写软件(OTA更新)等。正因其功能强大,它也成为车联网安全的核心风险点,黑客一旦绕过其“安全访问”机制恶意利用UDS,就可实现远程控制车辆、植入恶意软件等严重攻击,因此保护UDS是保障汽车网络安全的重中之重。
目录:
常见请求数据分析方法-总体概况:
(1)22服务:按标识符读取数据.
(2)2E服务: 按标识符写入数据.
(3)11服务: ECU重置.
(4)2F服务:按标识符的输入输出控制.
(5)31服务:例程控制.
(6)28服务:通讯控制.
常见请求数据分析方法-总体概况:
一般诊断都是对:各ECU需对22,2E,11,2F,31,28,等服务进行测试,看看是否做了27服务的安全访问.
响应结果:22读取服务是积极响应的。其他都是需要消极响应(一般都是33或者31)
消极响应码(否定响应码)背一下:

(1)22服务:按标识符读取数据.
一般都是:发送诊断指令22+DID,响应结果积极响应.
什么是DID:数据标识符的缩写。在 UDS 诊断协议中,它用来唯一标识一个你想要读取或写入的特定数据项(例如:VIN码、ECU零件号、软件版本号等)【你可以把 DID 想象成一个存储单元的“地址”,这个地址里存放着你需要的数据】
| 22+DID(十六进制) | 常见名称 | 标准格式长度(固定) | 描述 |
| 22 F1 90 | ECU 名称 | 3 | 一个用于标识 ECU 类型或功能的字符串。例如,“发动机控制模块”、“BCM”、“网关”等。这是识别 ECU 身份的重要信息。 |

(2)2E服务: 按标识符写入数据.
一般都是:发送诊断指令2E+DID,响应结果消极响应【33】。需要解除27安全访问服务后才能积极响应.(发送一般是下面这些.)
2E+DID(十六进制) | 常见名称 | 标准格式最少长度 | 描述 |
2E F1 90 00 | ECU 标识符 | 4 | ECU名称标识符清零 |
2E F1 91 00 | 应用软件版本号 | 4 | 清除应用软件版本 |
2E F1 92 00 | 标定数据版本号 | 4 | 清除标定数据版本 |
2E F1 93 00 | 引导程序版本号 | 4 | 清除指纹 |
2E F1 94 00 | 当前激活的软件集 | 4 | 重置激活状态 |
2E F1 95 00 | 软件/标定数据指纹 | 4 | 将校验和/哈希值清零 |
2E+DID(十六进制) | 常见名称 | 标准格式最少长度 | 描述 |
2E F1 90 FF FF FF FF FF | ECU 标识符 | 4 | ECU名称标识符清零 |
2E F1 91 FF FF FF FF FF | 应用软件版本号 | 4 | 强制将存储应用软件版本的物理区域擦除 |
2E F1 92 FF FF FF FF FF | 标定数据版本号 | 4 | 强制将存储标定数据版本的物理区域擦除 |
2E F1 93 FF FF FF FF FF | 引导程序版本号 | 4 | 强制将存储Bootloader版本的物理区域擦除。风险极高 |
2E F1 94 FF FF FF FF FF | 当前激活的软件集 | 4 | 将激活状态存储区擦除 |
2E F1 95 FF FF FF FF FF | 软件/标定数据指纹 | 4 | 强制将存储校验和/哈希值的区域 |

(3)11服务: ECU重置.
一般都是:发送诊断指令11 01,硬重置,消极响应,NRC:33,需要通过27安全访问服务后才可执行;
| 指令 | 常见名称 | 标准格式长度(固定) | 描述 |
| 11 01 | 硬复位 | 2 | 模拟ECU电源完全断开再重新上电的过程。这是最彻底、最强大的复位方式。 |
| 11 02 | 钥匙开关复位 | 2 | 模拟车辆钥匙开关从“OFF”到“ON”的循环 |
11 03 | 软复位 | 2 | 仅复位ECU的应用程序,而不关闭基础驱动和通信。类似于电脑的“重启”而非“关机”。 |
11 04 | 启动快速断电 | 2 | 此类型较为特殊。它不是立即执行复位,而是允许ECU在后续电源被切断时,可以执行一个快速、安全的关闭流程。 |
11 05 | 禁用快速断电 | 2 | 11 04的逆操作。让ECU退出“准备快速断电”的状态。 |

(4)2F服务:按标识符的输入输出控制.
概况:2F服务:它相当于诊断仪的“万能遥控器”功能。(比如:你用万能遥控器直接控制电视机的音响音量开关,让声音静音。)
| 方面 | 解释 |
|---|---|
| 目的 | 让诊断仪能够临时覆盖ECU的正常逻辑,直接测试或控制ECU的输入和输出,用于生产测试、故障诊断和功能验证。 |
| 与控制DTC的区别 |
|
| 风险 | 高风险操作。错误控制可能导致车辆功能异常(如行驶中误关燃油泵)。必须在扩展会话下并通过安全访问解锁后才可使用。 |
| 与0x22/0x2E服务的区别 |
|
一般都是:发送诊断指令2F FF 00,消极响应,NRC:33,需要通过27安全访问服务后才可执行;
| 2F+DID(十六进制) | 常见名称 | 标准格式长度 (至少4字节) | 描述 |
| 2F FF 00 | 归还控制权 | 3 | 当 0x2F服务的控制参数(第3个字节)为 00(表示“归还控制权”)时,该请求报文必须在此结束,后面不能再跟任何数据字节。 |
| 2F FF 01 03 01 | 如果意图是控制 FF 01这个对象 | 5 | 将其状态设置为 01,即“开启” |
| 2F FF 01 03 00 | 如果意图是控制 FF 01这个对象 | 5 | (将其状态设置为 00,即“关闭”) |

(5)31服务:例程控制.
概况:31服务:诊断仪命令ECU执行一个预先封装好的、复杂的“诊断程序”或“功能脚本”
一个简单的比喻:
ECU:就像一个拥有多种功能的智能机器人。
例程:就是机器人内部预装的、一个个功能固定的“程序包”(比如“自检程序包”、“校准程序包”、“复位程序包”)。••
例程控制服务(0x31):就是你手中的一个遥控器,上面有 “开始”、“停止”、“查询结果” 三个按钮。
例程控制的过程:你按下遥控器的“开始”按钮,并指定要运行“自检程序包”,机器人就会自动执行一套复杂的自检动作,最后告诉你结果。
一般都是:发送诊断指令31 01 00 01,消极响应,NRC:33,需要通过27安全访问服务后才可执行;
| 31+DID(十六进制) | 常见名称 | 标准格式长度 (至少4字节) | 描述 |
| 31 01 00 01 | 启动例程 | 4 | 这是一条启动例程的请求。它命令ECU开始执行其内部预定义的、编号为 0001的特定功能例程。该例程的具体功能(如内存擦除、自检、复位等)由汽车制造商定义,需查阅具体诊断规范方能确定。 |
| 31 02 00 01 | 停止例程 | 4 | 这是一条停止例程的请求。它命令ECU停止执行其内部编号为 0001的、正在运行的例程。该指令用于中断一个耗时较长或需要手动中止的诊断操作。 |
| 31 03 00 01 | 请求例程结果 | 4 | 这是一条请求例程执行结果的查询指令。它命令ECU返回其内部编号为 0001的例程的最终执行结果或当前状态信息。 |

(6)28服务:通讯控制.
概况:28服务:诊断仪对ECU下达的“禁言”或“解除禁言”命令,用于精确管理ECU在车辆网络(如CAN总线)上的通信权限。
一个简单的比喻:
车辆网络:像一个会议厅,各个ECU(如发动机、变速箱、ABS控制器)是参会者。
正常通信:每个参会者(ECU)都可以自由发言(发送消息)和听别人发言(接收消息)。
通信控制服务(0x28):就像是会议主席(诊断仪) 的权限,他可以命令某个参会者:
“你可以听Rx,但不能说Tx”(启用接收,禁用发送)
“你既不能说Tx,也不能听Rx”(禁用接收和发送)
“恢复正常,可以说Tx也可以听Rx”(启用接收和发送)
一般都是:28服务在P挡状态下,发送诊断指令28 01 01:启用Rx(接收功能)和禁用Tx(发送功能),积极响应;
| 指令 | 常见名称 | 标准格式长度 (至少3字节) | 描述 |
| 28 01 01 | 通信控制服务 | 3 | 这是一条通信控制指令。它命令ECU对指定通信通道上的所有消息,启用接收功能,但禁用发送功能。该指令将使ECU进入“只听不说”的静默状态,常用于网络管理和诊断测试。 |
一般都是:在车辆行驶速度大于20Km/h的状态下,发送诊断指令28 01 01,启用Rx和Tx,消极响应,NRC:22,请求的诊断服务的执行条件不满足;

