汽车诊断服务(UDS——0x27服务解析)

目录

1、服务概述

2、工作原理

3、常用的应用场景

4、子功能

5、请求与响应格式

5、1服务请求

5、2服务肯定响应

5、3服务否定响应

6、延时机制

1、服务概述

  • 该服务对零部件中部分加密的服务进行解密工作
  • 安全访问的概念使用“种子”和“密钥”来实现
参数描述
种子4字节数据,由ECU发送给诊断测试工具,又是钥匙计算的基础。
钥匙钥匙参数是诊断测试工具对种子参数按照特定的算法计算出的结果,长度也为4字节,由诊断测试工具发送给ECU。钥匙接收后,ECU将接收到的钥匙与内部计算的钥匙相比较,相同则解密成功。

2、工作原理

本服务的典型使用示例如下:

  1. 客户端请求“种子”
  2. 服务器发送“种子”
  3. 客户端发送“密钥”
  4. 服务器作出响应,确认“密钥”有效,并自行解锁。

3、常用的应用场景

  • 操作控制类:包括输入输出控制、例程管理服务等功能。

  • 数据写入类:例如程序刷写;生产线上关键数据(如版本号或标定信息)的写入,需通过27级安全认证后方可执行。

  • 数据读取类:在访问重要数据时,同样需要通过安全认证流程。

4、子功能

  • 子功能参数为固定1字节
  • Bit7为抑制肯定响应消息指示位(0:需要肯定响应;1:禁止肯定响应)
  • Bit6——Bit0为子功能参数值
  • 不同安全级别的请求种子和发送密钥存在固定关系,相邻的一对奇偶数对应一种安全级别,数字大小并不代表其等级的高低。其中奇数代表请求种子,偶数代表发送密钥(例:0x01 和 0x02 分别代表一个安全级别的请求种子和发送密钥)
  • 任何时间都仅有一个安全等级是解锁的状态
  • 默认会话下不支持27服务
  • 从一个安全等级接收到另外一个等级的请求并且解锁成功后,之前的安全等级将被重新锁定,而由于切换安全等级致使先前解锁的状态被锁定后,其依赖于被锁定的等级的服务和功能也一并被关闭。
  • 如果被请求的安全等级当前是已经解锁的状态,那么在响应种子时,在放种子的位置都放上0,表示已经解锁了,你不要再请求了。并且实际上种子应该是一个随机数,一般全0和全F都不允许作为普通种子放到响应里

5、请求与响应格式

5、1服务请求
  • 请求种子服务数据格式:27 + [sub-function] 

注意:

请求种子子服务必须为奇数

securityAccessDataRecord为Client发送给到Server的标识信息,可选,一般不用

  • 发送密钥服务数据格式:27 + [sub-function] + [security-Key]

注意:

发送Key子服务必须为偶数

securityKey为Client向Server发送的具体Key值

从表40与表41的解释说明对比可看出两者sub-funtion必须存在一个确定的定量关系:即sub-funtion(Request Seed) + 1 = sub-function(Send Key)。
 

5、2服务肯定响应
  • 请求种子服务正响应数据格式:67 + [sub-function] 

注意:27诊断服务的正响应由以下三个部分组成,如下

参数描述
响应SID该参数固定为SID+0x40 = 0x67
sub-function该参数为request seed(如01)或者Send Key(02)的取值
securitySeed该参数仅针对subfunction为Request Seed时才会回复该参数,其他情况下,Server仅会回复前两个字节(响应 SID + sub-function),其取值范围只能为0x00-0x7F

5、3服务否定响应
  • 请求种子服务正响应数据格式:7F + 27 + [NRC]

    注意:如果解锁失败,则可通过收到的NRC判断失败的原因,27服务常用的NRC如下:

6、延时机制

  • 车辆制造商应选择是否支持延时计时器
  • 达到车辆制造商规定的错误访问尝试次数后,应激活延时计时器。
  • 在连续X次请求安全访问失败后,需等待Ys之后才能接受下一次的安全访问请求RequestSeed。(注:X和Y由车辆制造商自行定义)
  • 当测试工具发送一个无效的秘钥, ECU将返回 NRC 0x35 InvalidKey 。 此时,全访问错误计数器加1(注:该计数器需要存储并且初始值为0)。
  • 当安全访问错误计数器达到X(即收到X次 InvalidKey ), ECU将返回NRC 0x36且需要等待Y s才能接受下一次的安全访问请求 Request Seed。 期间任何安全访问请求 Request Seed 都会被ECU反馈NRC 0x37
  • Ys等待时间结束后,安全访问错误计数器将减1(只减1次),并允许尝试安全访问请求 RequestSeed,如果此次请求失败(由于发送了一个无效的秘钥),安全访问错误计数器将加1,并再次开启Ys等待时间。
  • 任何一次ECU被成功解锁(密钥有效),失败计数器都将被重置为零。
  • ECU上电/复位后默认处于闭锁状态,需要检测安全访问错误计数器,若计数器为X,则需要启动Ys的安全访问延时时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/94919.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/94919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

波兰密码破译机bomba:二战密码战的隐形功臣

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术! 从数学原理到机械奇迹,破解enigma的早期利器 ✨ 1. bomba概…

【RAGFlow代码详解-30】构建系统和 CI/CD

Docker 构建系统 RAGFlow 使用主 Dockerfile 1-214 中定义的复杂多阶段 Docker 构建过程,该过程创建应用程序的完整和精简变体。 多阶段构建架构Docker 构建过程 构建过程由 Dockerfile 2-214 中 定义的三个主要阶段组成:基础阶段 ( Dockerfi…

rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(十七)设置主题

设置主题set_visuals ctx.set_visuals(Visuals::dark()); 设置暗色主题ctx.set_visuals(Visuals::light()); 设置亮色主题 fn main() -> eframe::Result<()> {// 配置原生窗口参数let options eframe::NativeOptions::default();eframe::run_simple_native("主题…

Linux入门教程 第十五章 Linux 系统调优工具

文章目录一、系统调优概述与 CPU 负载查看1.使用 uptime 查看系统负载2.使用 top 按 CPU 使用率排序3.使用 ps 查看 CPU 使用最多的进程4.使用 mpstat 查看 CPU 详细状态一、查看内存运行状态1.使用 free 查看内存使用2.查看 /proc/meminfo 获取详细内存信息3.使用 top 按内存使…

【Docker基础】Docker-compose进阶配置:健康检查与服务就绪

目录 引言 1 Docker健康检查基础概念 1.1 什么是健康检查 1.2 健康检查的状态 2 healthcheck配置详解 2.1 基本语法 2.2 配置参数解释 2.3 健康检查命令的编写 2.4 健康检查的工作流程 3 服务依赖与健康检查 3.1 depends_on的基本用法 3.2 结合健康检查的依赖 3.3…

Redis大Key处理流程与注意事项

概述 Redis大Key问题是在生产环境中经常遇到的技术挑战&#xff0c;它可能导致内存占用过高、网络延迟增加、阻塞其他操作等严重问题。本文将深入探讨Redis大Key的识别、处理流程以及相关注意事项。 什么是Redis大Key 定义标准 String类型: 单个Key的Value超过10KBHash类型: 单…

领悟8种常见的设计模式

很多 Java 初学者觉得设计模式 “抽象难学”&#xff0c;其实是没抓住核心逻辑 —— 设计模式不是 “炫技代码”&#xff0c;而是前辈们总结的 “解决高频复杂问题的通用思路”&#xff0c;好吧&#xff0c;你可以过一遍了解这些大概是个什么东西不求我们能够完全理解&#xff…

复杂BI报表SQL

复杂SQL 一行多个人员&#xff0c;平均瓜分总产量。 -- 西宁硅料三期 with b as ( select(row_number() OVER(PARTITION BY t1.tool ORDER BY t1.tool ) - 1) AS help_topic_id from((select1 AS tool union allselect1 AS tool union allselect1 AS tool union allselect1 AS …

bin log 和 redo log有什么区别

问题bin log 和 redo log有什么区别我的回答首先&#xff0c;这两种日志的作用不同。redo log是InnoDB引擎特有的&#xff0c;主要用于崩溃恢复&#xff0c;保证事务的持久性。而bin log是MySQL服务层的日志&#xff0c;主要用于主从复制和数据恢复。从层次上看&#xff0c;red…

导入文件允许合并表格

本来呢&#xff0c;已经有几年没咋写博客了&#xff0c;但是好像网上没什么好的合并导入可以抄的&#xff0c;周末加班了一天弄出来了&#xff0c;想一想也不算造轮子&#xff0c;可以露一手出来&#xff0c;最近也挺喜欢写注释的&#xff0c;应该方便大家抄的public class Tra…

WebIDEPLOY 技术驱动樱桃溯源管理系统的价值重塑与落地实践—— 以樱桃溯源管理系统构建产业信任体系的路径探索

一、WebIDEPLOY 技术支撑下的樱桃溯源系统核心架构樱桃种植从开花到销售的全流程数据记录&#xff0c;需要兼顾专业性与易操作性&#xff0c;WebIDEPLOY 技术以 “零代码降低门槛、云原生优化成本” 的特性&#xff0c;成为连接数字工具与樱桃种植的关键纽带。系统核心架构围绕…

零知开源——基于STM32F407VET6实现ULN2003AN驱动28BYJ-48步进电机控制系统

✔零知IDE 是一个真正属于国人自己的开源软件平台&#xff0c;在开发效率上超越了Arduino平台并且更加容易上手&#xff0c;大大降低了开发难度。零知开源在软件方面提供了完整的学习教程和丰富示例代码&#xff0c;让不懂程序的工程师也能非常轻而易举的搭建电路来创作产品&am…

如何多个手机设备的实现不同公网IP

为了避免多个手机设备使用相同的公网IP地址导致平台检测关联&#xff0c;可以通过以下方法实现不同公网IP的分配和管理. 一、移动网络&#xff08;SIM 卡&#xff09;方案 1.移动数据与Wi-Fi切换&#xff1a;通过切换移动数据和不同Wi-Fi网络&#xff08;如家庭Wi-Fi、公共Wi-F…

沙箱操作指南

这是一份通用且详细的沙箱操作指南。沙箱(Sandbox)是一种安全隔离环境,常用于测试未经验证的代码、软件、文件或访问可疑网址,而不会对真实系统造成危害。 本指南将分为以下几个部分: 沙箱是什么? 为什么需要使用沙箱? 如何使用沙箱?(三种主要类型) 最佳实践与注意事…

【数字IC后端】引导时钟树CTS的生成方向之anchor driver

如何控制数字IC后端CTS的生成方向&#xff1f;我们可以引入anchor driver来实现引导。景芯12nm车规APR实战中&#xff0c;我们可以看到&#xff0c;绝大部分的sink都受控于xxxx_tessent_occ_clk_cpu_inst/tessent_persistent_cell_clock_out_mux/C10_ctmi_1这个mux&#xff0c;…

「Java EE开发指南」如何使用MyEclipse启用自动JSP验证?

自动JSP验证可以在两种情况下启用&#xff0c;在本文中您将学习如何正确使用它。 该特性在MyEclipse中可用。 MyEclipse v2025.1离线版下载 您可以在保存JSP编辑器的内容或执行“Clean”操作时启用自动JSP验证。要进行正确的验证&#xff0c;必须使用完整的JDK JVM启动MyEcl…

leetcode_73 矩阵置零

1. 题意 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 2. 题解 想不到O(1)的空间复杂度的做法&#xff0c; 只有抄抄题解这样子才能维持的了生活。 2.1 暴力 维护两个标记数组&#xff0c;分…

优雅地实现ChatGPT式的打字机效果:Spring Boot 流式响应

01 引言 之前专门介绍过流式响应的数据的接收、发送以及使用SSE由服务端推送数据的文章&#xff0c;但是要求前端必须使用EventSource订阅实现。 有没有通过直接通过浏览器访问或者Fetch API直接调用的方式呢&#xff1f;效果还能和ChatGPT一样&#xff0c;实现打字机的效果呢&…

Git 删除文件

在 Git 中&#xff0c;删除文件同样被视为一种修改操作。下面我们通过实际操作演示如何删除文件。假设要删除文件 file5&#xff0c;如果你直接在文件系统中执行了删除&#xff1a;这种直接删除的方式并不会在 Git 中生效&#xff0c;反而会导致工作区与版本库不一致。使用 git…

虚幻基础:角色变换角色视角蒙太奇运动

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录角色视角机臂使用pawn控制旋转&#xff1a;旋转体将失去作用旋转体摄像机&#xff1a;可以使用旋转体控制&#xff1a;pawn不起作用角色变换角色移动&#xff1a;由移动组件控制移动方向&#xff1a;给组件任意一个方…