当前位置: 首页 > java >正文

UDS诊断----------$27诊断服务

1、服务描述

此服务的目的是提供一种访问数据/诊断服务的方法,这些数据/诊断服务由于安全原因而受到访问限制。

用于下载/上传例程或数据到服务器以及从服务器读取特定内存位置的诊断服务可能需要安全访问。不适当

的程序或下载到服务器的数据可能会潜在地损坏电子设备或其他车辆部件,或危及车辆对排放、安全、或

安全标准的遵守。安全概念使用种子和键关系。主要应用场景为以下场合:

在针对 Server 重新编程时,需要通过 27 安全解锁才能够进行后续的重编辑操作,否则将对 Server 造成极大的安全风险;

在产线写入较为重要的版本或者标定等信息过程中,则首先需要使用 27 服务才能够使用写操作的诊断指令,如 2E 服务。

一般而言,若需要往 Flash 中写入相关数据时都需要优先执行 27 安全解锁之后才能够进行安全写入。

执行十分重要的 31Routine 时,也需要优先执行 27 安全解锁之后才能够执行对应的 routine。

安全解锁的基本原理如下图所示:

2、服务请求格式

27 服务请求报文格式如下图:

SID:27

SubFunction:请求种子 Seed 服务,必须为奇数

SecurityAccessDataRecord[n]:Client 发送给到 Server 的表示信息,可选,一般不用。

SID:27

SubFunction:发送 key 子服务,必须为偶数

securityKey:client 向 server 发送的具体 Key 值

3、肯定响应格式

如下图所示:为 27 01 请求所对应的正响应:

Respond Seed

Verify Key

4、负响应代码(NRC_)

0x12:诊断请求的 subfuntion 不在 Server 支持的范围内

0x13:发送的报文长度或格式不正确

0x22:诊断条件不满足

0x24:当 Server 从未接收到 request seed 子服务,直接发送 Seed key 至 Server 时,此时 Server 会回复"7F 27 24"

0x31:当 securityDataRecord 超出规定的范围时,Server 会回复"7F 27 31"

0x35:当接收到的 key 与 Server 计算出的 key 不一致,此时 Server 会回复"7F 27 35"

0x36:当尝试一定次数的 Send Key,Server 始终无法解锁时,Server 会回复"7F 27 36"

0x37:若延迟计数器处于激活状态且有请求被发送,Server 会回复"7F 27 37"

5、实战配置及代码介绍

以 ETAS 的 ISOLAR-A/B 工具为例:

1、DCM 模块下 DcmDsd 子模块中创建 27 诊断服务,如下图:

2、在 DcmDsp 子模块下创建安全级别配置,如下图:

该配置对应的生成代码如下图:

http://www.xdnf.cn/news/5834.html

相关文章:

  • BFS算法篇——从晨曦到星辰,BFS算法在多源最短路径问题中的诗意航行(上)
  • 3.1 泰勒公式出发点
  • 人脸识别门禁系统技术文档
  • 运行Spark程序-在shell中运行 --SparkConf 和 SparkContext
  • Hadoop和Spark生态系统
  • Java详解LeetCode 热题 100(15):LeetCode 189. 轮转数组(Rotate Array)详解
  • 跨境电商定价革命:亚马逊“逆向提价“策略背后的价值重构逻辑
  • 鸿蒙接入flutter环境变量配置windows-命令行或者手动配置-到项目的创建-运行demo项目
  • (七)深度学习---神经网络原理与实现
  • 在VirtualBox中安装虚拟机后不能全屏显示的问题及解决办法
  • 软考 系统架构设计师系列知识点之杂项集萃(58)
  • 基于Java和PostGIS的AOI面数据球面面积计算实践
  • Kaamel隐私合规洞察:Facebook美容定向广告事件分析
  • Docker环境下的Apache NiFi安装实践踩坑记录
  • 蓝桥杯 16. 外卖店优先级
  • 数据结构——例题1
  • 基于Qt的app开发第八天
  • C++设计模式——单例模式
  • 微信小程序 自定义图片分享-绘制数据图片以及信息文字
  • React系列——HOC高阶组件的封装与使用
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十二讲)
  • (2)python开发经验
  • 下周,Coinbase将被纳入标普500指数
  • windows c++ (9) 程序内注册服务并修改登录账户
  • 使用 `aiohttp` 构建高效的异步网络爬虫系统
  • 一次讲清 FP32 / FP16 / BF16 / INT8 / INT4
  • VR和眼动控制集群机器人的方法
  • 青少年编程与数学 02-019 Rust 编程基础 10课题、函数、闭包和迭代器
  • 机器学习中分类模型的常用评价指标
  • 设计模式系列(03):设计原则(二):DIP、ISP、LoD