电动汽车的车型复杂多样,TBOX如何做好汽车的总线数据功能协议适配?

本文主要是介绍电动汽车的车型复杂多样,TBOX如何做好汽车的总线数据功能协议适配?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一般可以借助 CANalyst-II 总线报文收发器工具与汽车的 CAN 总线相连,可以获取到 CAN总线上广播的 CAN 数据包。通过 CanTest 软件可以实时的观察到 CAN 总线上正在发送的数据包。

从大量的 CAN 数据包中进行逆向分析,找到汽车车身的控制指令对应的是哪一个 CAN ID,逆向分析出这样 CAN 数据包所代表的含义,这是最基本也是最重要的一步。逆向出了这些车身控制的数据包指令信息后,了解这些数据包的工作原理。根据这些数据包的工作原理,制定出可行性攻击策略。例如:

对于车身的某一项功能的控制,只需要一个 CAN ID 的数据包即可达到控制效果,对于这种情况,只需要单纯的重放这一个数据报即可达到攻击的目的,控制汽车车身的某一项功能。对于车身的某一项功能的控制,可能需要多个 CAN ID 的数据包联合才能控制。构造一个这样的 CAN ID 数据包,设定发送间隔发送到 CAN 网络当中,间隔的制定是为了绕过 ECU 的时间检测机制。

某些的 CAN ID 数据包中带有计数器,我们所谓的心跳包,在攻击的时候必须加上计数器,才能绕过系统检查。编写一个脚本程序模拟 CAN ID 数据包数据位的变化规律,将这样的数据发送到 CAN 总线当中等等。

数据包上一共 8 位,每一位上的字节代表什么。例如速度表上的数值,是 CAN 数据包数据位某几位数值,带入一个计算公式计算出来的,前两位数值相加与第四位数值的乘积为当前的车速值。对于这种数据包的破解,我们需要大量收集这个数据包,逆向出来这个公式。

CanTest 的 DBC(数据库功能)功能逆向数据包所代表的指令,DBC 功能能够显示当前总线中有多少种 CAN ID。在汽车作出动作指令后,CAN ID 的报文是如何进行变化的,DBC 会把变化的部分标成红色。通过观察哪一个 CAN ID 在汽车发出指令后发生变化(这种变化通常只在瞬间),来确定此项车身控制指令对应的是哪一个 CAN ID。

以车门数据为例,通过改变车门的开关状态,利用 DBC 进行观察。在车门改变开关状态的同时,观察是哪一个 CAN ID 发生了变化,从而确定和车门状态相关的 CAN ID是哪一个。测试环境说明:汽车未启动,车内一切电器设备保持原有状态,只对车门状态进行改变,DBC 界面如图:

通过实验统计发现车门的开关状态和数据位的第一位的第二个字节有关:

** ** ** 10 04 19 02 FF。

四个车门正好有 16 种状态,第一位的第二个字节正好能全部表示,如下表 3-2 所示:√表示车门开,×表示车门关。

这篇关于电动汽车的车型复杂多样,TBOX如何做好汽车的总线数据功能协议适配?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/841075

相关文章

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

Java实现预览与打印功能详解

《Java实现预览与打印功能详解》在Java中,打印功能主要依赖java.awt.print包,该包提供了与打印相关的一些关键类,比如PrinterJob和PageFormat,它们构成... 目录Java 打印系统概述打印预览与设置使用 PageFormat 和 PrinterJob 类设置页面格式与纸张

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,