0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

讲解UDS刷写中涉及的重要基础概念

jf_EksNQtU6 来源:桥的断想 2023-05-23 10:11 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

服务ID汇总

首先总体看一下刷写涉及的服务ID以及在刷写过程的用途。

诊断服务标识
Service ID
诊断服务
Diagnostic Service
在刷写过程中的用途
0x10 诊断会话控制 DiagnosticSessionControl 切换到拓展会话检查刷写条件、停止一些功能切换到编程会话执行刷写
0x11 ECU复位 ECUReset 用于刷写完成后重启服务,使新固件生效
0x27 安全访问 SecurityAccess 校验刷写者身份,采用seed-key
0x28 通信控制 CommunicationControl 关闭和启用一般通讯报文
0x29 认证服务 Authentication Service 基于PKI的身份认证
0x31 例程控制 RoutineControl 指定特定的例程,前置条件检查、检查编程依赖等
0x34 请求下载 RequestDownload 设置下载的参数(起始地址、长度)
0x36 数据传输 TransferData 固件传输
0x37 请求结束传输 RequestTransferExit 终止数据传输
0x3E 测试设备在线 TesterPresent 用于将会话保持在当前会话中
0x85 控制故障码设置 ControlDTCSetting 设置启停故障码存储功能

会话

诊断会话关联了一系列的诊断服务或诊断功能。只有当前激活的诊断会话支持的诊断服务才能被响应。ECU通常有两个以上的诊断会话,包括:一个默认会话(Default Session)和若干非默认会话(Non Default Session)。其中非默认会话又包括编程会话和扩展会话等。其他非默认会话由厂商自行定义。常见的ECU诊断会话定义如下:

诊断会话 会话ID 描述
默认会话 0x01 ECU启动后默认进入此会话。只提供基本的诊断服务。
编程会话 0x02 ECU更新应用程序或标定数据时进入此会话。支持与程序更新相关的诊断服务。如0x34、0x36、0x37等。
扩展会话 0x03 除支持默认会话下的诊断服务和功能外,还支持额外的诊断服务。
... ... ...

诊断会话控制服务(0x10)是用于激活控制器各种不同的会话模式 。在固件刷写中会使用0x10服务在默认会话、编程会话、拓展会话来回切换。

会话保持(3E 00)

此服务用于向单(或多)个服务端指示客户端仍然与车辆连接,并且维持先前已激活的某些诊断服务和/或通信将保持活动状态。此服务用于将一个或多个服务端保留在默认会话之外的诊断会话中,通过周期性的发送 3E 实现。

整个刷写过程中, 刷写工具要周期性的发送链路保持请求, ECU 不需要响应请求信息。如果没有开启会话保持,几秒后ECU就会切回默认会话。

刷写前需要保持在拓展会话下。

刷写中需要保持在编程模式下。

27 服务-安全访问认证流程

安全访问服务的目的是为保密和排放、安全相关的一些服务和数据提供访问权限来保护数据。2E(通过DID写入数据)、2F(通过DID进行输入输出控制)、31服务(例程控制)、34服务(请求下载)、36服务(请求上传)、37服务(数据传输)等服务需要经过身份认证。身份认证利用了种子和密钥之间的关系。服务的示例如下图所示:

9183bf2c-f894-11ed-90ce-dac502259ad0.jpg

Request Seed:Tester 使用27服务,并携带需要解锁的安全等级 0X 发送给特定的 ECU。

Request Seed Reply : 对应的ECU收到之后,生成4个字节的随机数 Seed,返回给 Teseter。

Send Key: Tester 拿到Seed后,使用自定义实现的 Seed2Key 算法计算出Key,发送给ECU。Send Key 中的安全访问级别 0Y 为Request Seed的安全访问级别的值 +1。例如当请求种子为 27 01 时,发送秘钥则为 27 02(01+1)。

Send Key Reply : ECU 将收到的 Key 和 自己拿 Seed 作为输入的 Seed2Key 计算出结果进行对比,然后返回验证的结果。

Seed2Key 算法

安全访问中最重要的就是Seed2Key算法,算法通常是一些比较简单的移位算法,例如下列的算法。

#defineSECURITYCONSTANT  0x464c4147

WORDseedToKey(WORDwSeed,DWORDconstData)
{
DWORDwLastSeed;
WORDwLastKey;
wLastSeed=wSeed;
wLastSeed=(wLastSeed>>5)|(wLastSeed<<23);
 wLastSeed *= 7;
 wLastSeed ^= SECURITYCONSTANT;
 wLastKey = (WORD)wLastSeed;
 return wLastKey;
 }

seed2key 接受2个输入参数 种子安全常量,种子由 ECU 随机产生;安全常量内置在ECU和诊断仪中,在某种意义上来说安全常量就是密码。采用同一算法的不同用途的 ECU,通常使用不相同的安全常量。

诊断连接方式

诊断设备与ECU连接有两种方式,如下图。

诊断设备连接网关,由网关将消息转发给ECU;

诊断设备与ECU直连。

91897dc2-f894-11ed-90ce-dac502259ad0.png

固件格式

S-record、Intel Hex、BIN、VBF 是汽车中MCU固件常用的格式,下面简单介绍一下这几种格式。了解数据格式有助于固件分析、刷写安全测试等。

S-record

S-record 是摩托罗拉设计的一种常于MCU内存、EPROM、EEPROM 写入的文档格式,S-record 将二进制数据以ASCII字符表示。常用文件后缀名有 SRECORD、SREC、S19、mot。文件格式如下图。

91912b12-f894-11ed-90ce-dac502259ad0.png

Header Record 文件头信息,其中记录有模块名称、版本号等;

Data Record 数据记录,有 S1、S2、S3 三种类型;

Count Record(可选) 包含了先前传输的S1、S2、S3记录的计数;

Termination Record,结束记录,有 S7、S8、S9 三种类型。

919c8ade-f894-11ed-90ce-dac502259ad0.png

S0 Record(头记录):记录类型是“S0”。地址场没有被用,用零(0x0000)填充。数据场中的信息使用HEX转换成字符串是:JKE_X1_APP_SOC.s19。此行表示程序的开始,不需烧入内存,用来表述文件的相关信息,可能包含文件名、版本号等。

S3 Record(数据记录):记录类型是“S3” 。地址场由4个字节地址,数据场由可载入的数据组成。

S7 Record(结束记录):记录类型是“S7”。地址场由4字节的地址,包含了开始执行地址。没有数据场。此行表示程序的结束,不需烧入内存。

注: S-Record 中记录有固件的起始地址,逆向分析时直接从中获取,然后设置为起始地址即可。

Intel HEX

嵌入式MCU程序开发中,经常编译链接后生成的 HEX 就是采用的 Intel Hex 格式。也是一种将二进制文件转换成了ASCII码形式存储的文本文件。

91a53882-f894-11ed-90ce-dac502259ad0.png

BIN

二进制文件,只有固件数据,没有起始地址、描述信息等。

91aae228-f894-11ed-90ce-dac502259ad0.png

自定义格式

车企自定义格式如,VBF(Volvo Binary File)。VBF 使用在 volvo、mazda、Ford、吉利等品牌的汽车中。

文件头记录有文件的VBF版本号、软件版本信息、ECU物理地址、数据起始地址等。

91b2740c-f894-11ed-90ce-dac502259ad0.png

分析工具

srecord

命令行工具 srecord

sudoapt-get install srecord

查看S-record文件信息

fans@fans:~$ srec_infoJKE_X1_APP_SOC.s19
Format: Motorola S-Record
Header:"JKE_X1_APP_SOC.s19"
Execution Start Address: 00FC0000
Data: 01000000-01089C5F
   01180000-011800FF
   0127FB80-0127FBDF
   0127FF80-0127FFFF

文件转换

S-record 转 hex

srec_cat JKE_X1_APP_SOC.s19 -Motorola -o JKE_X1_APP_SOC.hex -Intel

Intel hex 转 S-record

srec_cat JKE_X1_APP_SOC.hex -Intel -o JKE_X1_APP_SOC.s19 -Motorola

S-record 转 bin

srec_cat JKE_X1_APP_SOC.s19 -Motorola -o JKE_X1_APP_SOC.bin -bin

HexView

S-record、Intel Hex、BIN 文件之间的转换可以采用 Vector 的图形化文件编辑软件 HexView。

91bbba80-f894-11ed-90ce-dac502259ad0.png

专用工具

主机厂或供应商自己开发的专用软件,如VBF文件查看工具 VBF Tool.

91c2edd2-f894-11ed-90ce-dac502259ad0.png

脚本

根据文件格式定义,编写脚本解析、提供固件,部分可以在 Github 上找。

# wget https://raw.githubusercontent.com/consp/vbfdecode/master/vbfdecode.py
# python vbfdecode.py -b firmware.vbf
Offset: 0x359, Location: 0x18000, Size: 0xB256C, Data Offset: 0x361
VBF v2.1
Description: Software part:1234type: APP
Network: 0x00000000
Data Format Identifier: 0x00000000
ECU address: 0x000007C6
Frame_format:
Erase frames:
Data blobs:
0x00018000   0x000B256C    e301

Saving:
18000.bin

91ca676a-f894-11ed-90ce-dac502259ad0.gif   91d14d28-f894-11ed-90ce-dac502259ad0.png

码上报名

AES 2023 第四届中国国际汽车以太网峰会,6月8-9日,上海

更多文章

智能网联汽车信息安全综述

华为蔡建永:智能网联汽车的数字安全和功能安全挑战与思考

汽车数据合规要点

车载以太网技术发展与测试方法

车载以太网防火墙设计

SOA:整车架构下一代的升级方向

软件如何「吞噬」汽车?

汽车信息安全 TARA 分析方法实例简介

汽车FOTA信息安全规范及方法研究

联合国WP.29车辆网络安全法规正式发布

滴滴下架,我却看到数据安全的曙光

特斯拉被约谈到车辆远程升级(OTA)技术的合规

如何通过CAN破解汽

会员权益:(点击可进入)谈思实验室VIP会员

END

91daf60c-f894-11ed-90ce-dac502259ad0.gif

微信入群

谈思实验室专注智能汽车信息安全、预期功能安全、自动驾驶、以太网等汽车创新技术,为汽车行业提供最优质的学习交流服务,并依托强大的产业及专家资源,致力于打造汽车产业一流高效的商务平台。

每年谈思实验室举办数十场线上线下品牌活动,拥有数十个智能汽车创新技术的精品专题社群,覆盖BMW、Daimler、PSA、Audi、Volvo、Nissan、广汽、一汽、上汽、蔚来等近百家国内国际领先的汽车厂商专家,已经服务上万名智能汽车行业上下游产业链从业者。专属社群有:信息安全、功能安全、自动驾驶、TARA、渗透测试、SOTIF、WP.29、以太网、物联网安全等,现专题社群仍然开放,入满即止。

扫描二维码添加微信,根据提示,可以进入有意向的专题交流群,享受最新资讯及与业内专家互动机会。

91e266ee-f894-11ed-90ce-dac502259ad0.jpg

谈思实验室,为汽车科技赋能,推动产业创新发展!

原文标题:车联网安全基础知识之UDS刷写前置基础知识

文章出处:【微信公众号:谈思实验室】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    114

    文章

    17638

    浏览量

    190203
  • EEPROM
    +关注

    关注

    9

    文章

    1129

    浏览量

    85518
  • ASCII
    +关注

    关注

    5

    文章

    172

    浏览量

    36468
  • ecu
    ecu
    +关注

    关注

    14

    文章

    965

    浏览量

    56873

原文标题:车联网安全基础知识之UDS刷写前置基础知识

文章出处:【微信号:谈思实验室,微信公众号:谈思实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【科普系列】隐藏在OSI模型里的“交通指挥员”——UDS会话层

    (电子控制单元)进行深度交互。在车辆全生命周期中,UDS支撑着故障排查、软件刷写、传感器校准等核心操作,其分层架构将复杂功能拆解到OSI模型的各层协作实现。偌大的城市车流不息,面对繁
    的头像 发表于 09-10 10:03 6451次阅读
    【科普系列】隐藏在OSI模型里的“交通指挥员”——<b class='flag-5'>UDS</b>会话层

    Proteus涉及的基本概念

    Proteus涉及的基本概念
    发表于 08-01 20:58

    Labview 基于CAN UDS烧录Hex文件

    本帖最后由 xu391600076 于 2021-8-11 13:18 编辑 1. Hex文件读取解析并计算CRC-32校验码2. UDS服务通讯3. UDS刷写逻辑过程复制下面这段话,打开闲
    发表于 08-11 11:41

    讲解一下A/D和 D/A的基本概念

    文章目录前言A/D 和 D/A 的基本概念前言今天给大家讲解一下,单片机的基础概念,A/D 和 D/A 的基本概念。A/D 和 D/A 的
    发表于 11-25 06:31

    无线传感器网络涉及的7个重要概念

    最近,经常收到很多朋友的咨询,主要询问什么是无线传感器网络,主要用在什么地方。这里,笔者为大家简单介绍一下无线传感器网络涉及到的几个概念
    发表于 05-23 14:53 2372次阅读
    无线传感器网络<b class='flag-5'>涉及</b>的7个<b class='flag-5'>重要</b><b class='flag-5'>概念</b>

    通信原理的基本概念讲解

    通信原理的基本概念讲解
    发表于 05-27 14:48 18次下载

    UDS诊断协议在纯电动汽车电机控制器的应用说明

      针对UDS诊断协议在电动汽车电机控制器的应用问题,利用UDS诊断协议各项服务的功能,同时根据电机控制器的功能需求,实现UDS诊断协议
    发表于 04-02 17:16 8次下载

    UDS常用诊断服务

    14229协议,在ISO 14229协议定义了UDS服务用法、服务格式等信息。UDS诊断最主要目的是为了能够快速准确判断车辆或者某个控制器的故障以及故障原因,从而为维修提供可靠的依据。 诊断服务概览
    的头像 发表于 06-12 10:36 2.4w次阅读
    <b class='flag-5'>UDS</b>常用诊断服务

    应用笔记 | TSMaster使用教程—UDS刷写流程

    今天给大家介绍基于TSMaster的UDS诊断刷写流程。基本流程主要分为基本参数配置、刷写流程两部分。1基本参数配置1、新建工程打开TSMaster软件,选择创建新工程-诊断-UDS
    的头像 发表于 01-06 09:53 6716次阅读
    应用笔记 | TSMaster使用教程—<b class='flag-5'>UDS</b><b class='flag-5'>刷写</b>流程

    同星智能为英飞凌TLE989X系列芯片提供刷写方案

    01方案概述同星智能为英飞凌TLE989X系列芯片提供定制开发的代码包和刷写工具,主要包括代码包、基于TSMaster的刷写工程、刷写硬件工具TF1011等。使用TF1011可以不需要英飞凌本身
    的头像 发表于 10-14 08:21 1828次阅读
    同星智能为英飞凌TLE989X系列芯片提供<b class='flag-5'>刷写</b>方案

    汽车UDS协议栈与XCP协议栈

    在车辆中进行故障诊断、参数配置和编程等操作。 UDS协议栈通常包含以下功能软件: 通信层:负责处理UDS协议的通信,包括CAN总线通信、LIN总线通信等。 诊断服务:实现了UDS协议定义的各种诊断服务,如读取故障码、清除故障码、
    的头像 发表于 10-27 16:35 5896次阅读
    汽车<b class='flag-5'>UDS</b>协议栈与XCP协议栈

    同星ECU诊断与刷写解决方案:降低了开发ECU刷写软件的难度!

    TOSUNECU诊断与刷写解决方案ECU(ElectronicControlUnit)是汽车电子控制系统的核心部件,负责监控和控制汽车各个系统的运行。而诊断是汽车ECU的一项重要功能,当车辆在运行
    的头像 发表于 10-26 08:02 1561次阅读
    同星ECU诊断与<b class='flag-5'>刷写</b>解决方案:降低了开发ECU<b class='flag-5'>刷写</b>软件的难度!

    《CAN(FD)总线十万个为什么》之UDS诊断(上)

    在汽车电子的世界里,UDS诊断协议如同一把神奇的钥匙,为工程师和维修人员打开了通往车辆“心脏”的大门。今天,就让我们一起揭开UDS诊断的神秘面纱,探索其在汽车电子行业重要角色。
    的头像 发表于 11-05 11:35 235次阅读
    《CAN(FD)总线十万个为什么》之<b class='flag-5'>UDS</b>诊断(上)

    ECU刷写完全指南:从理论到实践

    ECU刷写是现代汽车电子开发的核心环节,基于UDS诊断协议实现控制器软件的更新与维护。本文将以USBCANFD-400U接口卡为例,详细介绍CANFD总线环境下ECU刷写的标准流程与
    的头像 发表于 11-12 11:37 609次阅读
    ECU<b class='flag-5'>刷写</b>完全指南:从理论到实践

    ECU刷写前的“隐藏关卡”:3分钟看懂XCP/CCP标定

    在上一期,我们探讨了ECU刷写,重点介绍了基于UDS协议的刷写流程,它直接针对ECU进行操作。而标定的输出,正是ECU刷写的关键输入。那么
    的头像 发表于 11-28 11:35 204次阅读
    ECU<b class='flag-5'>刷写</b>前的“隐藏关卡”:3分钟看懂XCP/CCP标定