三、CAN协议 OBD-II接口 下次,当你坐在司机位时,看看你左膝盖周围,你会找到类似于上图的接口,这就是OBD-II接口。 OBD-II协议不单指CAN协议,它是通过UART,PWM,CAN接口共同实现的。 通过使用OBD-II访问模块,你可以读取参数ID(PID),其包含了汽车的状态信息。维基百科有一篇很好的文章来介绍OBD-II模块和PIDs. 这里我们不谈论OBD-II的细节(请看维基百科的详细说明),我们讨论一下它的大哥UDS. 1.统一诊断服务(UNIFIED DIAGNOSTIC SERVICES) 虽然许多汽车爱好者对OBD-II都非常熟悉 这是让人遗憾的,因为OBD-II只是UDS的一个子集。OBD-II只允许了一些有限的服务,而UDS却是厂商和技术人员所使用的协议,它提供了所有的服务,包含诊断、校准、固件更新。
OBD-II:标准化的车载诊断系统(1990年代) 1991年,汽车工程师协会(SAE)和国际标准化组织(ISO)联合发布了OBD-II标准,旨在规范OBD系统的接口和通信协议。 这一标准化的协议对全球汽车行业产生了深远的影响,推动了OBD-II的普及。OBD-II于1994年首次在部分车型中应用,至1996年成为美国市场所有新车的强制要求。 DLC是OBD-II系统的接口标准,通常位于驾驶员座位下方,方便维修人员和车主连接OBD-II扫描工具或诊断仪器。 OBD-II系统的工作原理可分为以下几个部分:电子控制单元(ECU)ECU是OBD-II系统的核心部件,负责接收来自传感器的输入信号并做出相应的控制指令。 诊断接口与通信协议OBD-II系统通过SAE J1962接口与外部诊断工具(如OBD-II扫描仪)进行连接。该接口通常位于驾驶员座位下方,易于接入诊断工具。
还支持CAN-TP、OBD-II、UDS多种上层协议的通信。针对CAN总线协议设备的模糊测试及漏洞挖掘而言,CANard无疑是一个功能完整的基础平台。 这个功能在实现CANOpen、OBD-II及UDS协议时非常有用。 四、应用协议 CAN通信可以支持多种协议。我们关注符(ISO)标准的汽车行业。 4.2 OBD-II OBD-II标准常用于车辆基本的诊断。该标准使用CAN-TP协议的一个子集。虽然OBD-II协议在读取车辆的基本数据上非常有用,但除此之外,它不能提供更多的功能。 CANard库提供的协议实现类:ObdInterface,实现了发送OBD-II协议数据的请求与接收响应的功能。
4、诊断系统总线标准 使用排放诊断的目的主要是为了满足OBD-II(On Board Diagnose)、OBD-III或E-OBD (European-On Board Diagnose)标准。 许多汽车生产厂商都采用ISO 9141和ISO 14230 (Keyword Protocol 2000)作为诊断系统的通信标准,它们满足OBD-II。 美国的GM、Ford、DC 公司广泛使用J1850作为满足OBD-II 诊断系统的通信标准,但欧洲汽车厂商拒绝采用这种标准。 在欧洲,以往诊断系统中使用的是ISO 9141,它是一种基于UART的通信标准,满足OBD-II的要求。
连接到网络 一些网络可以通过OBD-II端口访问。OBD-II适用于1996年以后在美国和2004年以后在欧洲生产的所有轿车和轻型卡车。 连接器位于驾驶员座位触手可及的位置。 OBD-II标准允许五种信令协议。由制造商决定使用哪一种。CAN是最受欢迎的,也是我们将要讨论的。它可以通过OBD-II连接器的引脚6和14访问。 OBD-II标准还为特定于供应商的引脚留有空间,这些引脚可以用于特定于供应商的协议。这使得经销商更容易诊断问题。 设置 将CAN设备插入汽车的OBD-II端口和计算机的USB端口。
但是一般车辆的娱乐系统以及检修系统的OBD-II端口都连接到CAN总线,这就给了黑客进入CAN的机会。 攻击的方式包括以下几点: OBD-II入侵: OBD-II端口主要用于检测车辆状态,通常在车辆进行检修时,技术人员会使用每个车厂开发的检测软件接入OBD-II端口并对汽车进行检测。 由于OBD-II连接到CAN总线,只要黑客取得这些检测软件,包括 Ford的NGS、Nissan的Consult II、Toyota的Diagnostic Tester等,便能轻易截取车辆信息。
OBD-II接口具备两种这类型CAN总线:HS1和HS2,但为了以防一些恶意命令,它们都是被阻断状态的。 但在来自Voyage的Alan帮助下,我们彻底把OBD-II这个限制问题翻转解决了,我们发现了直接访问HS1、HS2、HS3和MS的方式。 关键在于OBD-II接口背后,一个所有总线汇总,叫做网关模块(Gateway Module)的部件上。
然而,今天,许多保险公司向驾驶员提供了将通常称为远程信息处理设备的手掌大小的物联网工具安装到车载诊断端口或通常位于方向盘下的OBD-II的选项。 (1996年以后建造的每辆汽车都有一辆OBD-II。) Pixabay 远程信息处理设备通过记录汽车的行驶速度,行驶距离,一天中的行驶时间以及汽车是否加速过快或刹车困难来监控驾驶习惯。
数据包 cangen 随机生成 CAN 数据包 回环测试(自发自收): candump can0& cansend can0 123#0011223344556677 在实车中,将CAN设备插入汽车的OBD-II
就在那时,我开始思考如何才能获得这些数据,以至于我受到启发去研究车载诊断标准(OBD-II)和CAN总线探测。 这个端口由OBD-II标准定义,通常用于收集排放历史和排除发动机问题。但这是所有汽车系统有组织地相互通信的地方:一组连接汽车中许多设备的两根导线,称为CAN总线。 微控制器:Arduino UNO Rev3 l CAN接口:Seeed CAN-BUS Shield V1.2 l RTC和存储:Adafruit数据记录器护盾 当然,你还需要一条电缆将你的车辆中的OBD-II
OBD-II:第二代车载诊断系统,1996年起在美国强制实施,采用标准化接口和通信协议,监控范围扩大。 EOBD/JOBD:欧洲和日本的OBD标准,基于OBD-II但有地区差异。 OBD-II标准核心特性: 标准化接口:16针诊断接口,位置通常在驾驶舱内方向盘下方。 便携式诊断设备: OBD-II扫描仪:基础型设备,主要用于读取故障码和数据流。 蓝牙/Wi-Fi OBD适配器:与智能手机或平板电脑连接,通过应用程序提供诊断功能。 与诊断系统兼容:EDR数据通常通过标准OBD-II诊断接口访问,使用兼容的诊断工具。 5.2 EDR数据提取技术 EDR数据的提取是进行EDR取证的关键步骤。 “SAE J1698-1: Recommended Practice for OBD-II Scan Tool.”
如2013年9月DEFCON黑客大会上,黑客演示了从OBD-II控制福特翼虎、丰田普锐斯两款车型实现方向盘转向、刹车制动、油门加速、仪表盘显示等动作。 第三个可能是盗窃:大部分现代昂贵的汽车门锁通过CAN连接到ECU来控制,通常通过OBD-II端口可连接。隔离负责控制锁/解锁车门的数据帧比逆向主动安全设备更简单、更快捷。 因此,几分钟左右一个攻击者将会隔离负责锁车门的数据帧,编写他的设备程序-特定帧的DoS攻击,然后把设备插入到OBD-II的接口,阻止车门锁住。对于一个攻击者来说,这个攻击结果是可能的。
通过 OBD 访问 CAN 所需的硬件和软件 因为电脑不能直接与 CAN 连接,为了与 CAN 总线交互,需要类似 USB 转 CAN 的工具,通过 USB 连接到 OBD-II 端口,这样就可以发送或接收 硬件 连接 OBD-II 所需的硬件可以很容易地在市场上找到,有昂贵以及廉价的硬件设备。 Macchina M2 是一个开源的汽车接口,可以通过 OBD-II 与 CAN 总线通信。
(2)系统安全 OBD-II入侵: OBD-II端口主要用于检测车辆状态,通常在车辆进行检修时,技术人员会使用每个车厂开发的检测软件接入OBD-II端口并对汽车进行检测。 由于OBD-II连接到CAN总线,只要黑客取得这些检测软件,包括 Ford的NGS、Nissan的Consult II、Toyota的Diagnostic Tester等,便能轻易截取车辆信息。
通过诊断接口OBD-II进行攻击 echo "准备连接OBD-II接口进行测试" # 3. 通过SD卡/CD/DVD进行攻击 # 准备包含恶意文件的存储介质 # 4.
通过开源工具FORScan和基于FTDI芯片的OBD-II工具,我们将特定的CAN消息发送给车身控制模块,并改变了原始出厂设置,使车辆不会自动熄火。 借助这些工具,我们也禁掉了烦人的“鸣笛”报警。
总线攻击面包括远程攻击面和物理接触攻击面两个大的方面,其中远程攻击面有远程信息处理单元(TBOX,或5G模块)、车载信息娱乐系统(HU)、蓝牙模块、WIFI、遥控钥匙和远程诊断接口等,物理接触攻击面主要为OBD-II
主流的应用层协议包括:(1)ISO-TP (ISO 15765-2)这是汽车诊断(OBD-II)领域的标准协议。
故障诊断:集成 OBD-II 协议,自动识别发动机、变速箱等关键部件的故障码(如 P0171 空燃比异常),并通过 App 推送预警信息,辅助用户及时维修。
OBD:专门的写入软件可以通过攻击OBD-II(车载诊断系统)端口安装恶意软件。一旦连接器通过CAN总线连接到汽车,就有可能 监控每个连接到该总线的组件。