车联网安全基础知识之数据库文件

车联网安全基础知识之数据库文件

在对车渗透的时候,会检索车载系统的敏感文件。包括传统的密钥、密码、重要文件等。汽车数据库文件是我通常比较关注的一种,有时候车载系统里面会残留有汽车数据库文件,如DBC文件。拿到DBC文件之后,就能构造出CAN消息,控制车辆、伪造消息等。一起测试的同事对汽车用到的专有数据库文件不太熟悉,于是乎就有了这篇文章,汇总了常用的数据库文件与大家分享。

随着汽车电子技术的快速发展,现代汽车中的电子控制单元(ECU)和各种传感器系统已经形成了一个庞大的数据网络。这些系统不断产生、交换和存储大量的诊断、配置和测量数据。在汽车的研发、测试、诊断、维护等各个环节中,数据库文件格式扮演着至关重要的角色。本文将总结一些在汽车领域常用的数据库文件格式及其应用。

数据库文件格式在汽车通信和诊断中广泛应用,用于描述和存储车辆系统的通信协议、诊断信息及配置数据。常见的格式包括 DBCODXARXML等。如有遗漏欢迎补充。

数据格式统计表

格式 用途 内容格式 文件后缀
ARXML 描述AUTOSAR系统架构 系统配置和软件架构 .arxml
DBC 定义CAN总线的信号与消息格式 消息ID、信号名称、编码格式 .dbc
LDF 描述LIN总线的网络配置 LIN 消息、调度表 .ldf
DBF 总线的信号与消息格式 消息、信号 .dbf
FIBEX 描述汽车网络的通信属性 网络拓扑、通信消息、信号 .xml
ODX 存储和描述车辆诊断信息 ECU 诊断数据和服务描述 .odx
PDX 存储诊断信息,多个 odx zip压缩 诊断数据、测试序列 .pdx
CDD ECU 诊断文件 诊断功能与通信参数 .cdd
A2L ECU 标定文件 ECU参数、测量值、轴变量等 .a2l .xml .dtd
DEXT 数据交换文件 多协议数据交换格式 .dext .armxl
其他 CSV, RTF, XML,CDI

数据库文件简介

汽车架构描述数据库文件

  • ARXMLARXML 文件是 AUTOSAR(Automotive Open System Architecture)框架中的配置文件,描述了系统架构、软件组件、通信接口等信息。它在现代汽车的电子架构中起着至关重要的作用,尤其是在多ECU系统中,ARXML 文件帮助开发人员高效地管理和配置复杂的汽车电子系统。

标定数据库文件

随着汽车技术的进步,汽车在研发和测试过程中会产生大量的测量数据。这些数据通常需要以高精度和高频率的方式进行记录,并且能够进行高效的存储与分析。

  • A2LA2L 文件主要用于汽车 ECU 的标定过程,记录了与 ECU 控制相关的各种参数(如测量值、标定值和轴变量等)。A2L 文件通常与 ECU 标定工具配合使用,用于调整发动机控制单元的各种参数,以优化车辆的性能、燃油效率和排放控制。

诊断数据库文件

为了有效地交换和处理车辆电子系统中的大量数据,汽车行业中还使用了专门的数据交换协议和文件格式。汽车的诊断功能是确保车辆正常运行和快速修复故障的关键。诊断文件用于存储和交换诊断相关的数据,如故障码、诊断服务和步骤等。

  • CDDCDD(CANdelaStudio diagnostic description) 文件用于描述和配置各个 ECU 的诊断功能。它包含了ECU的诊断功能描述、故障码、诊断参数等信息。CDD 文件帮助汽车制造商和服务人员理解每个 ECU 的诊断能力和操作流程。cdd是CANoe/CANalyzer的专用文件。

  • ODXODX(Open Diagnostic Data Exchange)格式用于描述车辆的诊断服务信息。它包含了 ECU(电子控制单元)诊断相关的测试服务、故障码、诊断步骤等内容,支持自动化诊断流程,是车辆诊断和维修中不可或缺的工具。

  • PDXPDX(Product Data eXchange)文件用于存储和交换汽车的诊断信息,特别是在跨供应商和制造商之间共享诊断数据时。PDX 文件通常包含故障码(DTC)、诊断服务、测试步骤等,用于诊断和修复车辆的电子系统问题。

  • DEXTDEXT(AUTOSAR Diagnostic Extract Template) 文件的主要作用是提供一种标准格式,方便不同的诊断工具、测试设备、车辆控制系统等之间进行数据交换。这可以帮助汽车制造商、供应商、维修商等共享有关车辆状态、故障诊断、测试结果等信息。

网络通信数据库文件

随着汽车电子系统的复杂性增加,车辆内的多种总线通信协议得到了广泛应用。这些通信协议的配置和管理通常依赖于网络描述文件。

  • DBCDBC 文件是最常用的 CAN(Controller Area Network)通信协议配置文件,用于描述 CAN 总线上各个消息、信号及其编码方式。通过 DBC 文件,开发人员可以清晰地了解 CAN 网络中各个信号的具体含义,如发动机转速、车速等,进而进行数据分析和故障诊断。

  • LDFLDF(LIN Description File)用于描述 LIN(Local Interconnect Network)总线的通信配置,包括消息的调度、信号的格式等。LIN 总线通常用于低速通信,广泛应用于车窗控制、座椅调节等非关键系统中。

  • FIBEXFIBEX(Field Bus Exchange)是一种通用的文件格式,用于描述多种通信协议(如 CAN、FlexRay 和 Ethernet)的网络配置。FIBEX 文件通常用于复杂的汽车电子架构,特别是在支持多种总线通信的高端汽车中。
  • DBF: DBF(BUSMASTER Database File) 是BUSMASTER使用的专用数据格式。BUSMASTER 是 BOSCH 开源软件工具,用于模拟、分析和测试数据总线系统,支持CAN和LIN协议。

其他常见文件

  • XML、dtd、JSON等。

数据库文件示例

A2L

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
ASAP2_VERSION 1 41
/begin PROJECT ACCTest_PC
true"Generated by ETAS from Project ACCTest_PC"
true/begin HEADER
truetrue""
truetrueVERSION "000" PROJECT_NO ASD
truetrue/end HEADER
truetrue/begin MODULE ACCTest_PC
truetrue"Generated by ETAS ASCET7 from Project: ACCTest_PC"
truetrue /begin A2ML
truetrue block "IF_DATA" taggedunion if_data {
truetrue "E_TARGET" taggedstruct {
truetrue (block "SOURCE" struct {
truetrue char[100];
truetrue int;
truetrue long;
truetrue taggedstruct {
truetrue "QP_BLOB" uint;
truetrue };
truetrue }
truetrue )*;
truetrue block "TP_BLOB" struct {
truetrue ulong;
truetrue int;
truetrue int;
truetrue long;
truetrue long;
truetrue };
truetrue "KP_BLOB" struct {
truetrue ulong;
truetrue ulong;
truetrue uint;
truetrue struct {
truetrue long;
truetrue uint;
truetrue }
truetrue [64];
truetrue };
truetrue "DP_BLOB" struct {
truetrue ulong;
truetrue ulong;
truetrue uint;
truetrue struct {
truetrue long;
truetrue uint;
truetrue }
truetrue [64];
truetrue };
truetrue };
truetrue };
truetrue /end A2ML
truetrue/begin IF_DATA E_TARGET
truetrue /begin SOURCE "Task0"
truetrue /* type */ 3
truetrue /* period */ 10
truetrue QP_BLOB 1
truetrue /end SOURCE
truetrue /begin TP_BLOB
truetrue /* programm id */ 881740918
truetrue /* target id */ 7
truetrue /* */ 0 2 0
truetrue /end TP_BLOB
truetrue/end IF_DATA
truetrue/begin MOD_PAR
truetrue ""
truetrue VERSION "000"
truetrue ADDR_EPK 0x0
truetrue EPK ""
truetrue SUPPLIER "ETAS GmbH"
truetrue CUSTOMER "xxx"
truetrue CUSTOMER_NO "000"
truetrue USER "xxx"
truetrue PHONE_NO "000"
truetrue ECU "PC"
truetrue CPU_TYPE "PCx86"
truetrue NO_OF_INTERFACES 1
truetrue/end MOD_PAR
truetrue/begin MOD_COMMON
truetrue "Common definitions"
truetrue BYTE_ORDER MSB_LAST
truetrue ALIGNMENT_BYTE 1
truetrue ALIGNMENT_WORD 2
truetrue ALIGNMENT_LONG 4
truetrue ALIGNMENT_FLOAT32_IEEE 4
truetrue ALIGNMENT_FLOAT64_IEEE 8
truetrue/end MOD_COMMON

truetrue/begin MEASUREMENT VehicleModel.VehicelDynamicModel.Vehicle0.velocity
truetruetrue/* long identifier */ ""
truetruetrue/* datatype */ FLOAT32_IEEE
truetruetrue/* conversion */ esdl_ident
truetruetrue/* resolution */ 1
truetruetrue/* accuracy */ 100.0
truetruetrue/* lower limit */ -3.4028234663852886E+38
truetruetrue/* upper limit */ 3.4028234663852886E+38
truetruetrueECU_ADDRESS 0x0
truetruetrue/begin IF_DATA E_TARGET
truetruetrue KP_BLOB 0xFFFFFFFF 0xFFFFFFFF 4 1001 0 1001 0 1001 0 1000 0
truetruetrue/end IF_DATA
truetrue/end MEASUREMENT
<!-- ..省略.. -->

ARMXL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
<?xml version="1.0" encoding="UTF-8"?>
<AUTOSAR xmlns="http://autosar.org/3.1.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://autosar.org/3.1.5 autosar_3-1-5.xsd">
<TOP-LEVEL-PACKAGES>
<AR-PACKAGE>
<SHORT-NAME>board_mpc5668_gkit</SHORT-NAME>
<ELEMENTS>
<ECU-CONFIGURATION UUID="fdb8e39b-2097-4c78-9a47-8d7d9b00a251">
<SHORT-NAME>board_mpc5668_gkit</SHORT-NAME>
<ADMIN-DATA>
<DOC-REVISIONS>
<DOC-REVISION />
</DOC-REVISIONS>
<SDGS>
<SDG GID="Arccore::EcuOptions">
<SD GID="MCU">MPC5668</SD>
<SD GID="GENDIR">${RESOURCE_LOC}</SD>
</SDG>
</SDGS>
</ADMIN-DATA>
<ECU-SW-COMPOSITION-REF DEST="ECU-SW-COMPOSITION">/board_mpc5668_gkit/SwComposition_board_mpc5668_gkit</ECU-SW-COMPOSITION-REF>
<MODULE-REFS>
<MODULE-REF DEST="MODULE-CONFIGURATION">/board_mpc5668_gkit/Port</MODULE-REF>
<MODULE-REF DEST="MODULE-CONFIGURATION">/board_mpc5668_gkit/Mcu</MODULE-REF>
</MODULE-REFS>
</ECU-CONFIGURATION>
<ECU-SW-COMPOSITION UUID="29c41547-dc90-42d5-b7fb-980a709dd799">
<SHORT-NAME>SwComposition_board_mpc5668_gkit</SHORT-NAME>
</ECU-SW-COMPOSITION>
<MODULE-CONFIGURATION UUID="4254b159-0cf1-4761-8f2b-4f213deedef8">
<SHORT-NAME>Port</SHORT-NAME>
<ADMIN-DATA>
<SDGS>
<SDG />
<SDG GID="Arccore::ModuleOptions">
<SD GID="GENERATE_AND_VALIDATE">true</SD>
<SD GID="ARCCORE_EDITOR_VERSION">2.0.2</SD>
</SDG>
</SDGS>
</ADMIN-DATA>
<DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Port</DEFINITION-REF>
<CONTAINERS>
<CONTAINER UUID="d0730988-a63d-4398-a6ef-7fc90472c788">
<SHORT-NAME>PortConfigSet</SHORT-NAME>
<DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet</DEFINITION-REF>
<SUB-CONTAINERS>
<CONTAINER UUID="3dd5a2af-755c-45fb-a4e4-4a68b4751b94">
<SHORT-NAME>PortContainer_1</SHORT-NAME>
<ADMIN-DATA>
<SDGS>
<SDG GID="Arccore::IdentifiableOptions" />
</SDGS>
</ADMIN-DATA>
<DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortConfigSet/PortContainer</DEFINITION-REF>
</CONTAINER>
</SUB-CONTAINERS>
</CONTAINER>
<CONTAINER UUID="eb1bffc7-d006-438f-8ebc-bc9f7a48805e">
<SHORT-NAME>PortGeneral</SHORT-NAME>
<DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Port/PortGeneral</DEFINITION-REF>
<PARAMETER-VALUES>
<BOOLEAN-VALUE>
<DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortDevErrorDetect</DEFINITION-REF>
<VALUE>false</VALUE>
</BOOLEAN-VALUE>
<BOOLEAN-VALUE>
<DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortSetPinDirectionApi</DEFINITION-REF>
<VALUE>false</VALUE>
</BOOLEAN-VALUE>
<BOOLEAN-VALUE>
<DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortSetPinModeApi</DEFINITION-REF>
<VALUE>false</VALUE>
</BOOLEAN-VALUE>
<BOOLEAN-VALUE>
<DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Port/PortGeneral/PortVersionInfoApi</DEFINITION-REF>
<VALUE>true</VALUE>
</BOOLEAN-VALUE>
</PARAMETER-VALUES>
</CONTAINER>
</CONTAINERS>
</MODULE-CONFIGURATION>
<MODULE-CONFIGURATION UUID="7d4d4f2f-5fe6-491c-9178-7c012333d4f4">
<SHORT-NAME>Mcu</SHORT-NAME>
<ADMIN-DATA>
<SDGS>
<SDG />
<SDG GID="Arccore::ModuleOptions">
<SD GID="GENERATE_AND_VALIDATE">true</SD>
<SD GID="ARCCORE_EDITOR_VERSION">2.0.3</SD>
</SDG>
</SDGS>
</ADMIN-DATA>
<DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Mcu</DEFINITION-REF>
<CONTAINERS>
<CONTAINER UUID="6a518624-905b-4cd3-9eeb-019352d2bd6b">
<SHORT-NAME>McuGeneralConfiguration</SHORT-NAME>
<DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuGeneralConfiguration</DEFINITION-REF>
<PARAMETER-VALUES>
<BOOLEAN-VALUE>
<DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuDevErrorDetect</DEFINITION-REF>
<VALUE>false</VALUE>
</BOOLEAN-VALUE>
<BOOLEAN-VALUE>
<DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuPerformResetApi</DEFINITION-REF>
<VALUE>true</VALUE>
</BOOLEAN-VALUE>
<BOOLEAN-VALUE>
<DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Mcu/McuGeneralConfiguration/McuVersionInfoApi</DEFINITION-REF>
<VALUE>true</VALUE>
</BOOLEAN-VALUE>
</PARAMETER-VALUES>
</CONTAINER>
<CONTAINER UUID="dad41306-3c7b-4d89-8e01-ea2b31169c22">
<SHORT-NAME>McuModuleConfiguration</SHORT-NAME>
<DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration</DEFINITION-REF>
<PARAMETER-VALUES>
<ENUMERATION-VALUE>
<DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSrcFailureNotification</DEFINITION-REF>
<VALUE>DISABLED</VALUE>
</ENUMERATION-VALUE>
<INTEGER-VALUE>
<DEFINITION-REF DEST="DERIVED-INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuNumberOfMcuModes</DEFINITION-REF>
<VALUE>0</VALUE>
</INTEGER-VALUE>
<INTEGER-VALUE>
<DEFINITION-REF DEST="DERIVED-INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuRamSectors</DEFINITION-REF>
<VALUE>1</VALUE>
</INTEGER-VALUE>
<INTEGER-VALUE>
<DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuResetSetting</DEFINITION-REF>
<VALUE>0</VALUE>
</INTEGER-VALUE>
</PARAMETER-VALUES>
<SUB-CONTAINERS>
<CONTAINER UUID="84472191-b207-48c4-943a-8d5f3b3fd5ba">
<SHORT-NAME>McuClockSettingConfig</SHORT-NAME>
<DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig</DEFINITION-REF>
<REFERENCE-VALUES>
<REFERENCE-VALUE>
<DEFINITION-REF DEST="REFERENCE-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuDefaultClockReference</DEFINITION-REF>
<VALUE-REF DEST="CONTAINER">/board_mpc5668_gkit/Mcu/McuModuleConfiguration/McuClockSettingConfig/EXT_REF_112MHZ</VALUE-REF>
</REFERENCE-VALUE>
</REFERENCE-VALUES>
<SUB-CONTAINERS>
<CONTAINER UUID="f8fe5e22-4e8e-4c0e-9534-665bb66ae538">
<SHORT-NAME>EXT_REF_112MHZ</SHORT-NAME>
<ADMIN-DATA>
<SDGS>
<SDG GID="Arccore::IdentifiableOptions">
<SD GID="@ARCCORE_COMMENT">(extal * (emfd+16)) / ((prediv+1)*(erfd+1))</SD>
</SDG>
</SDGS>
</ADMIN-DATA>
<DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint</DEFINITION-REF>
<PARAMETER-VALUES>
<FLOAT-VALUE>
<DEFINITION-REF DEST="FLOAT-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointFrequency</DEFINITION-REF>
<VALUE>4.0E7</VALUE>
</FLOAT-VALUE>
<INTEGER-VALUE>
<DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllEprediv</DEFINITION-REF>
<VALUE>9</VALUE>
</INTEGER-VALUE>
<INTEGER-VALUE>
<DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllEmfd</DEFINITION-REF>
<VALUE>40</VALUE>
</INTEGER-VALUE>
<INTEGER-VALUE>
<DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuClockSettingConfig/McuClockReferencePoint/McuClockReferencePointPllErfd</DEFINITION-REF>
<VALUE>1</VALUE>
</INTEGER-VALUE>
</PARAMETER-VALUES>
</CONTAINER>
</SUB-CONTAINERS>
</CONTAINER>
<CONTAINER UUID="981c619f-8c0e-448e-8ec9-c269a1cad94f">
<SHORT-NAME>McuModeSettingConf</SHORT-NAME>
<ADMIN-DATA>
<SDGS>
<SDG GID="Arccore::IdentifiableOptions" />
</SDGS>
</ADMIN-DATA>
<DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuModeSettingConf</DEFINITION-REF>
<PARAMETER-VALUES>
<INTEGER-VALUE>
<DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Mcu/McuModuleConfiguration/McuModeSettingConf/McuMode</DEFINITION-REF>
<VALUE>0</VALUE>
</INTEGER-VALUE>
</PARAMETER-VALUES>
</CONTAINER>
</SUB-CONTAINERS>
</CONTAINER>
</CONTAINERS>
</MODULE-CONFIGURATION>
</ELEMENTS>
</AR-PACKAGE>
</TOP-LEVEL-PACKAGES>
</AUTOSAR>

CDD

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?xml version='1.0' encoding='utf-8' standalone='no'?>
<!DOCTYPE CANDELA SYSTEM 'candela.dtd'>
<CANDELA dtdvers='18.0.6'>
<ECUDOC oid='BBAE831319844f059968800BAE058B3F' temploid='4DF8DD6796074370B6F0C0C7D8E463CE' doctype='inst' manufacturer='daimler' mid='MMxwMfmFxC5n54xJpPYJDg==' saveno='2' languages='(en-US)' uptodateLanguages='(en-US)' supportsTextIds='1' supportsRevAtVars='1' xdtauth='288' dtNesting='all' allowDynamicLengthBeforeEnd='1' supportsEvents='1' syncDtcToEvent='1'>
<DESC>
<TUV xml:lang='en-US' struct='1'><PARA><FC tcol='0' fs='200'>This CANdela template is valid for MBDS 2023</FC>
</PARA>
</TUV>
</DESC>
<PROTOCOLSTANDARD>UDS</PROTOCOLSTANDARD>
<SPECOWNER>Daimler</SPECOWNER>
<DTID>ZENWVFBcUllPHgVgBQEQGxACFGRpGSo6KAAgcGtyYWR5dhs5Oz83fGd+bk5RUk1TVUpHLDk4OA==
</DTID>
<QUALGENOPTIONS case='ignore' minLen='1' maxLen='128'/>
<LABELFORMAT>[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]</LABELFORMAT>
<LABELFORMATDESC>Three two-digit numbers separated by dots

Example: 00.23.21</LABELFORMATDESC>
<JOBFILES>
<JOBFILE id='_1' version='1.1.0' syntax='jar'>
<EXTDOC usage='src' creationdt='2021-10-13 17:13:35+02:00' changedt='2021-10-13 17:13:36+02:00'>
<FILENAME>C:\Temp\Template zum bearbeiten\Jobs\21.42.00\SarUploadJob.jar</FILENAME>
<FILECONTENTS len='136772'>
UEsDBBQACAgIAHiK/FIAAAAAAAAAAAAAAAAUAAQATUVUQS1JTkYvTUFOSUZFU1QuTUb+ygAAVY9B
i8IwEEbvhf6H4j2DenCXLh5c7EVQFst6nzZTydLMaJIW/fcWI8E9v/ke8/bIpiMf1ImcN8JlsYB5
nn0PrHtS9d020pv2gJbKohULGo3tycGfNODRpct4UW+Oxe+lF9QJvHmf5iNdB+NIRRylXrpg+Aw6
+K8mzsY4W88+YQmrj1ny7V8PJ+8yoZdaVzdqhzDBikfjhC1xKIsdjlhXagGrPNtJoyoO7q5+xHDw
/9umLhieFVCj22LA2DSt8izPHlBLBwhOdROMwQAAADMBAABQSwMEFAAICAgA8E3mUgAAAAAAAAAA
AAAAADEAAABjb20vZGFpbWxlci9vZHhqb2JzL2NvbW1vbi9BYnN0cmFjdE11bHRpSm9iLmNsYXNz
<!-- ..省略.. -->"
<NEGRESCODEPROXIES>
</NEGRESCODEPROXIES>
</SPECDATAOBJ>
</SIMPLECOMPCONT>
<SIMPLECOMPCONT oid='3E54B311C4434396866841D7449E6D1F' temploid='A3945AC39B2F4863A828E85F34B5912C' shproxyref='_2243'>
<SPECDATAOBJ oid='376CC80A2B54460eA6A87CD4FD22C5CE' temploid='DEE47B4B073C4da3AD55BCEB57BDDE81'>
<NAME>
<TUV xml:lang='en-US'>transitionMode</TUV>
</NAME>
<QUAL>transitionMode</QUAL>
<NEGRESCODEPROXIES>
</NEGRESCODEPROXIES>
</SPECDATAOBJ>
</SIMPLECOMPCONT>
</DIAGINST>
</VAR>
</ECU>
<REQDOC idPrefix='CDD_Neues_Steuergeraet_1_' defaultDatyType='Undefined'>
</REQDOC>
</ECUDOC>
</CANDELA>

DBF

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//******************************BUSMASTER Messages and signals Database ******************************//

[DATABASE_VERSION] 1.3

[PROTOCOL] CAN

[BUSMASTER_VERSION] [3.2.2]

[NUMBER_OF_MESSAGES] 10

[START_MSG] Brake,36,8,3,1,S
[START_SIGNALS] Value,12,2,0,U,4095,0,0,0.000000,0.024420,%,
[START_SIGNALS] Counter,16,4,0,U,65535,0,0,0.000000,1.000000,,
[START_SIGNALS] Checksum,32,8,0,U,4294967295,0,0,0.000000,1.000000,,
[END_MSG]

[START_MSG] Accelerator,57,8,3,1,S
[START_SIGNALS] Value,12,2,0,U,4095,0,0,0.000000,0.024420,%,
[START_SIGNALS] Counter,16,4,0,U,65535,0,0,0.000000,1.000000,,
[START_SIGNALS] Checksum,32,8,0,U,4294967295,0,0,0.000000,1.000000,,
[END_MSG]

DBC

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
VERSION ""


NS_ :
trueNS_DESC_
trueCM_
trueBA_DEF_
trueBA_
BS_:

BU_:
NEO
MCU

VAL_TABLE_ StW_AnglHP_Spd 16383 "SNA" ;

BO_ 1160 DAS_steeringControl: 4 NEO
SG_ DAS_steeringControlType : 23|2@0+ (1,0) [0|0] "" EPAS
SG_ DAS_steeringControlChecksum : 31|8@0+ (1,0) [0|0] "" EPAS
SG_ DAS_steeringControlCounter : 19|4@0+ (1,0) [0|0] "" EPAS
SG_ DAS_steeringAngleRequest : 6|15@0+ (0.1,-1638.35) [-1638.35|1638.35] "deg" EPAS
SG_ DAS_steeringHapticRequest : 7|1@0+ (1,0) [0|0] "" EPAS

DEXT

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?xml version="1.0" encoding="utf-8"?>
<!--This AUTOSAR Diagnostic Extract was created by a tool from Vector Informatik GmbH.-->
<AUTOSAR xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_00046.xsd" xmlns="http://autosar.org/schema/r4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FILE-INFO-COMMENT>
<SDGS>
<SDG GID="Generation-Info">
<SD GID="Tool-Name">CANdelaStudio 18.0.1104</SD>
<SD GID="Source-File">NEWCDD.cdd</SD>
<SD GID="Template-Name">DSUDS MB.OS 2.0 Template 23.42.01</SD>
<SD GID="Ecu-Name">New_CDD</SD>
<SD GID="Variant-Name">Common_Diagnostics</SD>
<SD GID="Change-Version">00.00.01</SD>
<SD GID="DDM-Version">25.2.0 (Release)</SD>
</SDG>
<SDG GID="DDM-Settings">
<SD GID="Autosar-Platform">classic</SD>
<SD GID="Autosar-Version">v4.4.0</SD>
<SD GID="Naming-Schema">v24.0</SD>
<SD GID="Cond-Group-Naming">SINGLE_ELEM</SD>
</SDG>
</SDGS>
</FILE-INFO-COMMENT>
<AR-PACKAGES>
<AR-PACKAGE>
<SHORT-NAME>Diagnostics</SHORT-NAME>
<AR-PACKAGES>
<AR-PACKAGE>
<SHORT-NAME>Common</SHORT-NAME>
<ELEMENTS>
<DIAGNOSTIC-CONTRIBUTION-SET>
<SHORT-NAME>CommonContributionSet</SHORT-NAME>
<CATEGORY>DIAGNOSTICS_ECU_EXTRACT</CATEGORY>
<COMMON-PROPERTIES>
<DIAGNOSTIC-COMMON-PROPS-VARIANTS>
<DIAGNOSTIC-COMMON-PROPS-CONDITIONAL>
<DEBOUNCE-ALGORITHM-PROPSS>
<DIAGNOSTIC-DEBOUNCE-ALGORITHM-PROPS>
<SHORT-NAME>Timer_10_10_001</SHORT-NAME>
<DEBOUNCE-ALGORITHM>
<DIAG-EVENT-DEBOUNCE-TIME-BASED>
<SHORT-NAME>Timer_10_10_001_TimeBasedAlgorithm</SHORT-NAME>
<TIME-FAILED-THRESHOLD>0.01</TIME-FAILED-THRESHOLD>
<TIME-PASSED-THRESHOLD>0.01</TIME-PASSED-THRESHOLD>
</DIAG-EVENT-DEBOUNCE-TIME-BASED>
</DEBOUNCE-ALGORITHM>
</DIAGNOSTIC-DEBOUNCE-ALGORITHM-PROPS>
<DIAGNOSTIC-DEBOUNCE-ALGORITHM-PROPS>
<SHORT-NAME>MBC_Default_Counter_Based_Debounce_Algorithm</SHORT-NAME>
<DEBOUNCE-ALGORITHM>
<DIAG-EVENT-DEBOUNCE-COUNTER-BASED>
<SHORT-NAME>MBC_Default_Counter_Based_Debounce_Algorithm_CounterBasedAlgorithm</SHORT-NAME>
<COUNTER-DECREMENT-STEP-SIZE>1</COUNTER-DECREMENT-STEP-SIZE>
<COUNTER-FAILED-THRESHOLD>127</COUNTER-FAILED-THRESHOLD>
<COUNTER-INCREMENT-STEP-SIZE>1</COUNTER-INCREMENT-STEP-SIZE>
<COUNTER-JUMP-DOWN>false</COUNTER-JUMP-DOWN>
<COUNTER-JUMP-DOWN-VALUE>1</COUNTER-JUMP-DOWN-VALUE>
<COUNTER-JUMP-UP>false</COUNTER-JUMP-UP>
<COUNTER-JUMP-UP-VALUE>1</COUNTER-JUMP-UP-VALUE>
<COUNTER-PASSED-THRESHOLD>-128</COUNTER-PASSED-THRESHOLD>
</DIAG-EVENT-DEBOUNCE-COUNTER-BASED>
</DEBOUNCE-ALGORITHM>
</DIAGNOSTIC-DEBOUNCE-ALGORITHM-PROPS>
<DIAGNOSTIC-DEBOUNCE-ALGORITHM-PROPS>
<!-- ..省略.. -->

Fibex

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?xml  version="1.0"  encoding="UTF-8"?>
<fx:FIBEX xmlns:ho="http://www.asam.net/xml" xmlns:fx="http://www.asam.net/xml/fbx">
<fx:PROJECT ID="projectEntry">
<ho:SHORT-NAME>projectEntry</ho:SHORT-NAME>
</fx:PROJECT>
<fx:ELEMENTS>
<fx:ECUS>
<fx:ECU ID="Entry">
<ho:SHORT-NAME>Entry</ho:SHORT-NAME>
<fx:MANUFACTURER-EXTENSION>
<SW_VERSION>unknown</SW_VERSION>
<APPLICATIONS>
<APPLICATION>
<APPLICATION_ID>EXA3</APPLICATION_ID>
<APPLICATION_DESCRIPTION>Third Example</APPLICATION_DESCRIPTION>
<CONTEXTS>
<CONTEXT>
<CONTEXT_ID>CON</CONTEXT_ID>
<CONTEXT_DESCRIPTION>First context</CONTEXT_DESCRIPTION>
</CONTEXT>
</CONTEXTS>
</APPLICATION>
</APPLICATIONS>
</fx:MANUFACTURER-EXTENSION>
</fx:ECU>
</fx:ECUS>
<fx:PDUS>
<fx:PDU ID="PDU_1000_0">
<ho:SHORT-NAME>PDU_1000_0</ho:SHORT-NAME>
<fx:BYTE-LENGTH>4</fx:BYTE-LENGTH>
<fx:PDU-TYPE>OTHER</fx:PDU-TYPE>
<fx:SIGNAL-INSTANCES>
<fx:SIGNAL-INSTANCE ID="S_1000_0">
<fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
<fx:SIGNAL-REF ID-REF="S_SINT32"/>
</fx:SIGNAL-INSTANCE>
</fx:SIGNAL-INSTANCES>
</fx:PDU>
</fx:PDUS>
<fx:FRAMES>
<fx:FRAME ID="ID_1000">
<ho:SHORT-NAME>ID_1000</ho:SHORT-NAME>
<fx:BYTE-LENGTH>4</fx:BYTE-LENGTH>
<fx:FRAME-TYPE>OTHER</fx:FRAME-TYPE>
<fx:PDU-INSTANCES>
<fx:PDU-INSTANCE ID="P_1000_0">
<fx:PDU-REF ID-REF="PDU_1000_0"/>
<fx:SEQUENCE-NUMBER>0</fx:SEQUENCE-NUMBER>
</fx:PDU-INSTANCE>
<fx:MANUFACTURER-EXTENSION>
<MESSAGE_TYPE>DLT_TYPE_LOG</MESSAGE_TYPE>
<MESSAGE_INFO>DLT_LOG_INFO</MESSAGE_INFO>
<APPLICATION_ID>EXA3</APPLICATION_ID>
<CONTEXT_ID>CON</CONTEXT_ID>
<MESSAGE_SOURCE_FILE>/home/alex/workspace/ascgit/dlt-daemon/examples/example3/example3.c</MESSAGE_SOURCE_FILE>
<MESSAGE_LINE_NUMBER>64</MESSAGE_LINE_NUMBER>
</fx:MANUFACTURER-EXTENSION>
</fx:FRAME>
</fx:FRAMES>
</fx:ELEMENTS>
</fx:FIBEX>

LDF

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
LIN_description_file;
LIN_protocol_version = "2.2";
LIN_language_version = "2.2";
LIN_speed = 19.2 kbps;
Channel_name = "DB";

Nodes {
trueMaster: CEM, 5 ms, 0.1 ms;
trueSlaves: LSM, RSM;
}

Signals {
trueInternalLightsRequest: 2, 0, CEM, LSM, RSM;
trueRightIntLightsSwitch: 8, 0, RSM, CEM;
trueLeftIntLightsSwitch: 8, 0, LSM, CEM;
trueLSMerror: 1, 0, LSM, CEM;
trueRSMerror: 1, 0, RSM, CEM;
trueIntTest: 2, 0, LSM, CEM;
}

ODX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?xml version="1.0" encoding="utf-8"?>
<ODX MODEL-VERSION="2.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="odx.xsd">
<!--created by CANdelaStudio::ODXExport220.dll 10.0.102 on 2019-03-25T10:31:08+01:00-->
<?CANdelaTemplateManufacturer 7?>
<?SpecificationOwner Unspecified?>
<?CANdelaTemplateName CANdelaStudio Training UDS on CAN?>
<?CANdelaTemplateVersion 1.0?>
<?CANdelaProtocolStandard UDS?>
<?ASAMOdxExport220.dll 10.0.102?>
<DIAG-LAYER-CONTAINER ID="DLC.Light">
<SHORT-NAME>Light</SHORT-NAME>
<LONG-NAME>Light</LONG-NAME>
<DESC>
<p />
<p>
<br/>
</p>
</DESC>
<ADMIN-DATA>
<LANGUAGE>en-US</LANGUAGE>
<DOC-REVISIONS>
<DOC-REVISION>
<TEAM-MEMBER-REF ID-REF="DLC.Light.CD.Vector.TM.DH" />
<REVISION-LABEL>1.0</REVISION-LABEL>
<STATE>draft</STATE>
<DATE>2018-02-01T14:27:20</DATE>
<TOOL>CANdelaStudio 9.1 Release Admin</TOOL>
<MODIFICATIONS>
<MODIFICATION>
<CHANGE>Created</CHANGE>
<REASON>Training</REASON>
</MODIFICATION>
</MODIFICATIONS>
</DOC-REVISION>
</DOC-REVISIONS>
</ADMIN-DATA>
<COMPANY-DATAS>
<COMPANY-DATA ID="DLC.Light.CD.Vector">
<SHORT-NAME>Vector</SHORT-NAME>
<LONG-NAME>Vector</LONG-NAME>
<TEAM-MEMBERS>
<TEAM-MEMBER ID="DLC.Light.CD.Vector.TM.DH">
<SHORT-NAME>DH</SHORT-NAME>
<LONG-NAME>Daniel Hirsch</LONG-NAME>
</TEAM-MEMBER>
</TEAM-MEMBERS>
</COMPANY-DATA>
</COMPANY-DATAS>
<PROTOCOLS>
<PROTOCOL ID="DLC.Light.PT.DoIP_ISO13400">
<SHORT-NAME>DoIP_ISO13400</SHORT-NAME>
<LONG-NAME>DoIP (ISO13400)</LONG-NAME>
<DESC>
<p>Communication interface for Diagnostics over IP (DoIP) protocol. Based on the specification: ISO13400-2:2012 &quot;Road vehicles — Diagnostic communication over Internet Protocol(DoIP) — Part 2: Network and transport layer requirements and services&quot; and the referenced ISO22900-2 (D-PDU API) for ComParam qualifiers.</p>
</DESC>
<COMPARAM-SPEC-REF ID-REF="ISO_14229_5_on_ISO_13400_2" DOCREF="ISO_14229_5_on_ISO_13400_2" DOCTYPE="COMPARAM-SPEC" />
<PROT-STACK-SNREF SHORT-NAME="ISO_14229_5_on_ISO_13400_2_DIS_2015_PROT_STACK" />
</PROTOCOL>
<PROTOCOL ID="DLC.Light.PT.SoAd">
<SHORT-NAME>SoAd</SHORT-NAME>
<LONG-NAME>SoAd</LONG-NAME>
<COMPARAM-SPEC-REF ID-REF="ISO_13400" DOCREF="ISO_13400" DOCTYPE="COMPARAM-SPEC" />
<PROT-STACK-SNREF SHORT-NAME="ISO_14229_5_on_ISO_13400_2_on_IEEE_802_3" />
</PROTOCOL>
<PROTOCOL ID="DLC.Light.PT.CAN">
<SHORT-NAME>CAN</SHORT-NAME>
<LONG-NAME>CAN</LONG-NAME>
<COMPARAM-SPEC-REF ID-REF="ISO_15765_3_on_ISO_15765_2" DOCREF="ISO_15765_3_on_ISO_15765_2" DOCTYPE="COMPARAM-SPEC" />
<PROT-STACK-SNREF SHORT-NAME="ISO_15765_3_on_ISO_15765_2_on_ISO_11898_2_DWCAN" />
</PROTOCOL>
</PROTOCOLS>
<ECU-SHARED-DATAS>
<ECU-SHARED-DATA ID="DLC.Light.ESD.ESD_Ecu_faultMemory">
<SHORT-NAME>ESD_Ecu_faultMemory</SHORT-NAME>
<DIAG-DATA-DICTIONARY-SPEC>
<DTC-DOPS>
<DTC-DOP ID="DLC.Light.ESD.ESD_Ecu_faultMemory.DOP.OBDRecordDataType">
<SHORT-NAME>OBDRecordDataType</SHORT-NAME>
<LONG-NAME>OBDRecordDataType</LONG-NAME>
<DIAG-CODED-TYPE BASE-TYPE-ENCODING="NONE" BASE-DATA-TYPE="A_UINT32" xsi:type="STANDARD-LENGTH-TYPE">
<BIT-LENGTH>24</BIT-LENGTH>
</DIAG-CODED-TYPE>
<PHYSICAL-TYPE BASE-DATA-TYPE="A_UINT32" DISPLAY-RADIX="HEX" />
<COMPU-METHOD>
<CATEGORY>IDENTICAL</CATEGORY>
</COMPU-METHOD>
<DTCS>
<DTC ID="DLC.Light.ESD.ESD_Ecu_faultMemory.DOP.OBDRecordDataType.DTC.DTC900016">
<SHORT-NAME>DTC900016</SHORT-NAME>
<TROUBLE-CODE>9437206</TROUBLE-CODE>
<DISPLAY-TROUBLE-CODE>B100016</DISPLAY-TROUBLE-CODE>
<TEXT>Battery voltage below threshold 9 [V] - circuit voltage below threshold</TEXT>
<SDGS>
<SDG>
<SDG-CAPTION ID="DLC.Light.ESD.ESD_Ecu_faultMemory.DOP.OBDRecordDataType.DTC.DTC900016.SDG.CorrectiveAction">
<SHORT-NAME>CorrectiveAction</SHORT-NAME>
<LONG-NAME>Corrective action</LONG-NAME>
</SDG-CAPTION>
<SD>No known corrective action</SD>
</SDG>
<SDG>
<SDG-CAPTION ID="DLC.Light.ESD.ESD_Ecu_faultMemory.DOP.OBDRecordDataType.DTC.DTC900016.SDG.DTC_OPERATION_CYCLE">
<SHORT-NAME>DTC_OPERATION_CYCLE</SHORT-NAME>
<LONG-NAME>Operation Cycle</LONG-NAME>
<DESC>
<p>Kind of operation cycle for the event storage(e.g. power cycle, driving cycle, ...)</p>
</DESC>
</SDG-CAPTION>
<SD>DEM_POWER</SD>
</SDG>
<SDG>
<SDG-CAPTION ID="DLC.Light.ESD.ESD_Ecu_faultMemory.DOP.OBDRecordDataType.DTC.DTC900016.SDG.NUMBER_OF_TRIPS_ACTIVE">
<SHORT-NAME>NUMBER_OF_TRIPS_ACTIVE</SHORT-NAME>
<LONG-NAME>Number of Trips - Active</LONG-NAME>
<DESC>
<p>Number of operation cycles needed to confirm the event

The value 0 is the standard UDS behavior of confirming the event (ConfirmedDTC status bit becomes set) with the first qualified FAILED result. A value of 1 means the event becomes confirmed if it fails again in the next operation cycle.
Larger values represent confirmation in the n-th cycle e.g. 2 is confirmation in cycle after the next cycle, etc.</p>
</DESC>
</SDG-CAPTION>
<SD>0</SD>
</SDG>
<!-- ..省略.. -->

PDX

image-20241115115751504

注:Demo数据来自网络

系列文章

  1. 车联网安全基础知识之汽车模块化平台
  2. 车联网安全基础知识之大众集团汽车电子电气架构
  3. 车联网安全基础知识之TBOX主要功能
  4. 车联网安全基础知识之大众J949(OCU/T-BOX)
  5. 车联网安全基础知识之充电基础设施
  6. 车联网安全基础知识之从插线端子分析车内通信网络结构
  7. 车联网安全基础知识之QNX命令
  8. 车联网安全基础知识之测试台架购买
  9. 车联网安全基础知识之USB SPH2.0线束制作
  10. 车联网安全基础知识之UDS刷写前置基础知识
  11. 车联网安全基础知识之 UDS 刷写安全
  12. 车联网安全基础知识之常见组织机构
  13. 车联网安全进阶之整车渗透测试实践
  14. 车联网安全进阶之跨境传输检测方法与脚本
  15. 车联网安全进阶之Trick——Android车机运行Python