车联网安全入门——ICSim模拟器使用
文章目录
- 车联网安全入门——ISCim模拟器使用
- 介绍
- 主要特点:
- 使用场景:
- 安装
- 使用
- 捕获can流量
- candump
- cansniffer
- wireshark
- SavvyCAN
- 主要特点:
- 使用场景:
- 重放can报文
- cansend
- SavvyCAN
- 总结
车联网安全入门——ISCim模拟器使用
🚀🚀最近对于车联网安全非常有兴趣,但是不知道怎么入门,无意间发现了ICSim,可以用来简单模拟一下汽车,学习了一段时间后决定写一下笔记,怕自己学完就忘记了(仅供学习参考)。
介绍
🚀🚀ICSim 是一个用于模拟车辆仪表集群的工具,专门为 SocketCAN 设计。SocketCAN 是 Linux 内核中的一个模块,用于支持控制器局域网(CAN)接口。
主要特点:
- 仪表集群模拟:ICSim 可以模拟车辆仪表盘,包括速度表、转速表、燃油表等。这对于开发和测试基于 CAN 总线的汽车电子系统非常有用。
- 与 SocketCAN 集成:ICSim 与 Linux 的 SocketCAN 接口集成,允许用户通过标准的 SocketCAN 工具与模拟器进行通信和调试。
- 教育和开发:它是汽车网络和协议学习的一个极佳工具,可以帮助工程师、研究人员和学生理解 CAN 总线的工作原理和应用。
使用场景:
- 软件开发:在开发车辆电子控制单元(ECU)时,可以使用 ICSim 进行初步测试,而无需实际的车辆硬件。
- 教学和培训:提供一个虚拟的车辆环境,便于教学 CAN 总线通信。
- 调试和验证:与实际车辆硬件的连接前,先在模拟环境中验证通信和功能。
项目地址如下所示:
zombieCraig/ICSim: Instrument Cluster Simulator (github.com)
安装
🚀🚀安装过程比较简单,首先是安装依赖:
sudo apt-get updatesudo apt-get install libsdl2-dev libsdl2-image-dev can-utils
🚀🚀然后克隆项目
git clone https://github.com/zombieCraig/ICSim.git
🚀🚀之后就是编译项目了:
cd ICSim
make
🚀🚀编译成功之后应该会多出这两个文件,这两个文件就是我们最后需要用到的程序,一个是仪表盘(icsim),一个是遥控器(control)。
使用
🚀🚀我们每次使用之前,都需要运行一下setup_vcan.sh程序,程序主要内容就是启用一个can0网络接口设备,我们可以输入ifconfig查看。
sudo modprobe can
sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0
🚀🚀接下来就是启动模拟程序了,输入以下命令即可启动程序,我们就可以开始控制我们的仪表盘了,我把所有的命令都放在下方表格里面,当然了,也可以接入手柄进行操作。
./icsim vcan0 &
./controls vcan0 &
🚀🚀这边需要注意的是,左shift代表的是键盘左边的shift键,右shift代表的是键盘右边的shift键。
功能 | 按键 |
---|---|
加速 | 上方向键 |
左转向 | 左方向键 |
右转向 | 右方向键 |
开/关左车门(前)锁 | 右/左shift+A |
开/关右车门(前)锁 | 右/左shift+B |
开/关左车门(后)锁 | 右/左shift+X |
开/关右车门(后)锁 | 右/左shift+Y |
开启所有车门锁 | 右shift+左shift |
关闭所有车门锁 | 左shift+右shift |
捕获can流量
candump
🚀🚀相信大家通过上面的步骤以及可以开始玩起来了,但是我们最终目的是为了学习,所以接下来我们来捕获我们的can流量。
🚀🚀我们输入下面的命令即可捕获我们的can流量,会以日志文件的方式保存下来(是哪个可怜的小朋友六一儿童节还在Kali,原来是我😂😂😂😂)
candump -l vcan0
🚀🚀报文的格式大概如下所示,前面是时间戳,后边是设备,最后就是我们的can报文,分为ID和数据,以#分割,这里先不详细介绍can报文的格式,后面可能专门写一篇文章,因为这篇文章主要介绍工具安装和使用。
(1717310792.256458) vcan0 294#040B0002CF5A003B
(1717310792.256509) vcan0 21E#03E8374522063E
(1717310792.256514) vcan0 183#0000000B0000103D
(1717310792.258528) vcan0 143#6B6B00FF
(1717310792.260244) vcan0 095#800007F400000026
(1717310792.262201) vcan0 166#D0320036
(1717310792.263237) vcan0 244#0000000120
cansniffer
🚀🚀cansniffer能够动态显示我们的can报文变化状态,对于can报文的逆向起到很大的帮助作用,使用命令如下所示:
🚀🚀一直在变化的会显示为红色,所以可以快速的定位can报文,比如当你开门的时候,就会多出来一条can报文,就很便于我们寻找can报文。(当然这不是cansniffer的完整功能,比如筛选功能就没展示,只是我们后面有强大的GUI工具,所以这里就不介绍了😂😂。)
wireshark
🚀🚀这个可太经典了,可以说流量分析必备了,但是分析CAN报文,我们有更专业的工具,但是不可否认wireshark非常的好用,每次打开都是一场酣畅淋漓的流量分析!!!
SavvyCAN
🚀🚀SavvyCAN 是一个功能强大的 CAN 总线分析工具,主要用于捕获、分析和记录 CAN 总线数据。它提供了一个图形用户界面,使用户可以直观地查看和分析 CAN 网络中的数据。
主要特点:
- 数据捕获:可以实时捕获 CAN 总线上的数据帧,并将其显示在用户界面中。
- 数据分析:提供多种分析工具,帮助用户理解和解析 CAN 数据。例如,数据过滤、信号解码和图形化显示。
- 数据记录和回放:能够记录 CAN 数据到文件,并可以在以后回放,以便于调试和验证。
- 与硬件兼容:支持多种 CAN 硬件接口,如 USB-CAN 适配器,兼容性广泛。
- 多平台支持:可以在 Windows、Linux 和 macOS 系统上运行。
使用场景:
- 实时监控:在车辆运行时实时监控 CAN 总线数据,帮助诊断和调试车辆系统。
- 数据记录:记录长时间的 CAN 总线活动,用于后期分析和验证。
- 协议逆向工程:分析未知的 CAN 协议和数据帧格式,进行逆向工程。
- 系统调试:与其他 CAN 工具一起使用,如 ICSim,进行系统级别的调试和验证。
🚀🚀这个工具肥肠好用,也是开源工具,这里给出项目地址,collin80/SavvyCAN: QT based cross platform canbus tool (github.com)这些工具我都star了,因为非常好用。这个软件分为windows和Linux,这边建议大家使用Linux,因为ICSim安装在LInux,到时候我们需要接入ICSim玩波大的,哈哈哈!!!!当然了,再安装一个到windows静态分析也是很不错的。
🚀🚀但是这个在Linux安装有点复杂,需要自己编译一下,这里给出安装步骤,然后需要用到的文件我也放网盘里面便于大家下载。
!!!!!破案了哥们,新版有BUG,快回到2.13.!!!!!!
cd ~
# 克隆项目
git clone https://github.com/collin80/SavvyCAN.git
# 进入项目
cd SavvyCAN
# 使用qt编译,这里大家尽量选择5.14,因为qt版本太高可能不兼容(以自己的路径为准)
~/Qt/5.14/gcc_64/bin/qmake
# 编译,要很久
make
🚀🚀QT链接:https://download.qt.io/archive/qt/5.14/5.14.2/qt-opensource-linux-x64-5.14.2.run
🚀🚀安装qt的话,大家直接安装到一个目录就行(断网安装不用注册),比如我的是/home/kali/QT/,所以我编译SavvyCAN的时候使用的命令就是:
~/QT/5.14.2/gcc_64/bin/qmake
🚀🚀编译之后就开始连接我们的can设备了,下方图示很清楚了,就不再赘述了。
🚀🚀然后我们选择逆向工具里面的sniffer,就会发现和之前那个命令行工具cansniffer很相似,这个的话,红色是无规律变化,绿色是有规律变化,下方还能过滤报文,非常好用哈!
重放can报文
🚀🚀这里就需要使用另外一个命令行工具了,当然万能的SavvyCAN也能做到,接下来我就以重放攻击车门和转向灯为例,向大家展示一下。
cansend
🚀🚀输入如下命令,左前方车门便被打开。
cansend vcan0 19B#00000E000000
SavvyCAN
🚀🚀本来SavvyCAN有一个发送帧的功能,但是好像最近用不了了,我到时候看看老版的行不行。
!!!!!破案了哥们,原来是新版有BUG,快回到2.13!!!!!!
🚀🚀左转向灯打开了
🚀🚀然后这是重放报文攻击,是可以工作的,可以看到车门被我们打开了。
总结
🚀🚀本来准备写一点点的,结果写着写着就变多了,关键还没写完。主要是那个新版BUG卡我好久,那这篇文章就到这里了,后面的教程等我慢慢出(也可能没了,哈哈哈哈哈)。
参考:
【车联网安全-把玩汽车安全模拟器ICSim】 https://www.bilibili.com/video/BV1GF411K7iY/?share_source=copy_web&vd_source=17a2a1683f073ac2c4790f01f8992380
Hacking All The Cars - CAN总线逆向-安全客 - 安全资讯平台 (anquanke.com)
相关文章:

车联网安全入门——ICSim模拟器使用
文章目录 车联网安全入门——ISCim模拟器使用介绍主要特点:使用场景: 安装使用捕获can流量candumpcansnifferwiresharkSavvyCAN主要特点:使用场景: 重放can报文cansendSavvyCAN 总结 车联网安全入门——ISCim模拟器使用 …...

leetcode - 20.有效的括号(LinkedHashMap)
leetcode题目有效的括号,分类是easy,但是博主前前后后提交了几十次才通过,现在记录一下使用Java语言的写法。 题目链接: 20.有效的括号 题目描述: 给定一个只包括 (,),{,},[&…...

多维数组的动态内存分配(malloc和new)
一.区别指针类型 动态分配二维数组的内存不要赋值给行指针,而要赋值给二级指针。 二.分配动态二维数组的方法 1.使用指针数组 然后对指针数组的每一个元素分别malloc一维数组 2.直接使用malloc // 分配了一个指针数组,row为二维数组行数 int **p (i…...

71、评测OrangePi AIpro开发板和USB CAMERAOAK视频解码+推理+编码+推流测试
基本思想:csdn赞助了OrangePi AIpro开发板,花点时间简单和oak深度相机绑定测试一下,反正之前玩过atlas 200 dk A2,应该差不多,引用了之前的usb相机,方便小伙伴测试使用 第一步:系统刷机,参考官方吧,懒得刷机了,参考官方手册即可链接:https://pan.baidu.com/s/1umXM3i…...

为什么需要开局调用函数?
初始化操作:在你的应用程序启动时,可能需要执行一些初始化操作,例如设置默认值、加载配置、建立数据库连接等。开局调用函数可以帮助你集中管理这些操作,确保它们在应用程序启动时顺利执行。 统一入口:通过一个统一的…...

QT-demo:0轴分布图表
版本:5.9 第一种: 使用 PyQt5 和 Matplotlib 库 安装所需的库: pip install PyQt5 matplotlib创建和显示图表: import sys import numpy as np import matplotlib.pyplot as plt from PyQt5.QtWidgets import QApplication, QMainWindow f…...

git远程仓库限额的解决方法——大文件瘦身
Git作为世界上最优秀的分布式版本控制工具,也是优秀的文件管理工具,它赋予了项目成员对项目进行远程协同开发能力,因此受到越来越多的行业从业人员的喜爱。很多优秀的项目管理平台,比如国内的Gitee,国外的Github&#…...

碰撞检测技术在AI中的重要作用
引言: 随着人工智能技术的不断发展,AI已经渗透到我们生活的方方面面。在游戏、机器人、虚拟现实等领域中,碰撞检测技术扮演着至关重要的角色。本文将探讨碰撞检测技术在AI中的作用,以及如何利用这项技术来改善AI系统的性能和用户体…...

UE5 Cesium2 最新使用地理配准子关卡构造全球场景
参考官方最新教程:Building Global Scenes with Georeferenced Sublevels – Cesium 创建持久关卡(主关卡) 这里一般包含DynamicPawn、CesiumSunSky 和 Cesium World Terrain 全球场景通用的对象。子关卡的创立,官方教程分为了两…...

【Java数据结构】详解LinkedList与链表(二)
目录 1.❤️❤️前言~🥳🎉🎉🎉 2.反转一个单链表 3. 找到链表的中间节点 4.输入一个链表,输出该链表中倒数第k个结点。 5.合并两个有序链表 6.链表分割 7. 判定链表的回文结构 8.输入两个链表,找…...

【精读文献】J. Environ. Manage.|青藏高原生态恢复项目下植被覆盖动态及其对生态系统服务的约束效应
目录 文章简介 01 文章摘要 02 研究背景、目标及创新点 2.1 研究背景 2.2 研究现状 03 研究区域与数据集 3.1 研究区域 3.2 研究数据 04 研究方法 4.1 趋势分析 4.2 残差趋势分析 4.3 偏相关 4.4 生态系统服务评价 4.5 约束线的定义和提取 05 研究结果 5.1 植被…...

QT之常用控件
一个图形化界面当然需要有各种各样的控件,QT也不例外,在QT designer中就有提供各种各样的控件,用以开发图形化界面。 而想使用好一个QT控件,就需要了解这些控件。 QWidget 在QT中,所有控件都继承自 QWidget 类&…...

【嵌入式硬件】DRV8874电机驱动
目录 1 芯片介绍 1.1 特性简介 1.2 引脚配置 1.3 最佳运行条件 2 详细说明 2.1 PMODE配置控制模式 2.1.1 PH/EN 控制模式 2.1.2 PWM 控制模式 2.1.3 独立半桥控制模式 2.2 电流感测和调节 2.2.1 IPROPI电流感测 2.2.2 IMODE电流调节 3.应用 3.1设计要求 3.2 设计…...

考研数学:有些无穷小不能用等价无穷小的公式?
今天要给大家分享的笔记是:《有些无穷小虽然是无穷小,但却不能用无穷小的相关公式》:...

谷歌浏览器的平替,内置开挂神器,我已爱不释手!
油猴浏览器正式版是一款基于谷歌Chromium源码开发的浏览器,它集成了集成了强大的油猴扩展(Tampermonkey),使得用户可以轻松安装各种脚本,从而增强网页浏览体验。提供了一个更加个性化和高效的浏览体验。 油猴扩展&…...

UMLChina为什么叒要翻译《分析模式》?
UMLChina受机械工业出版社委托,重新翻译《分析模式》。 Martin Fowler的“Analysis Patterns,Reusable Object Models”,原书出版于1997年,至今为止未出第2版。 2004年,机械工业出版社出版该书中译本《分析模式》。 …...

npm install 安装很慢如何解决?
1. 使用淘宝镜像 淘宝提供了一个更快的 npm 镜像源,可以大大加快依赖包的下载速度。你可以通过以下命令来设置淘宝镜像: npm config set registry https://registry.npmmirror.com然后再次运行 npm install: npm install2. 使用 nrm 切换镜…...

哈夫曼树的构造,哈夫曼树的存在意义--求哈夫曼编码
一:哈夫曼树的构造 ①权值,带权路径长度。 ②一组确定权值的叶子节点可以构造多个不同的二叉树,但是带权路径长度min的是哈夫曼树 ③算法基本思想及其实操图片演示 注:存储结构和伪代码 1 初始化: 构造2n-1棵只有一个根节点的二叉树,parent=rchild=lchild=-1; 其中…...

一个全面了解Xilinx FPGA IP核的窗口:《Xilinx系列FPGA芯片IP核详解》(可下载)
随着摩尔定律的逐渐放缓,传统的芯片设计方法面临着越来越多的挑战。而FPGA以其并行处理能力和可编程性,为解决复杂问题提供了新的途径。它允许设计者在同一个芯片上实现多种不同的功能模块,极大地提高了资源的利用率和系统的综合性能。 FPGA…...

virtualbox识别windows上usb设备
当你插入 USB 时,你的宿主操作系统可以轻松访问它并使用其中的文件。如果需要VirtualBox 的虚拟机也能访问物理机的 USB设备,需要安装安装扩展包管理器。 第一步: 要安装 VirtualBox 扩展包,只需访问 VirtualBox 官方下载页面&a…...

LabVIEW步进电机的串口控制方法与实现
本文介绍了在LabVIEW环境中通过串口控制步进电机的方法,涵盖了基本的串口通信原理、硬件连接步骤、LabVIEW编程实现以及注意事项。通过这些方法,用户可以实现对步进电机的精确控制,适用于各种自动化和运动控制应用场景。 步进电机与串口通信…...

云计算-高级云资源配置(Advanced Cloud Provisioning)
向Bucket添加公共访问(Adding Public Access to Bucket) 在模块5中,我们已经看到如何使用CloudFormation创建和更新一个Bucket。现在我们将进一步更新该Bucket,添加公共访问权限。我们在模块5中使用的模板(third_templ…...

Nginx企业级负载均衡:技术详解系列(17)—— 长连接优化策略与下载服务器高效搭建
你好,我是赵兴晨,97年文科程序员。 今天咱们来聊聊Nginx的两个知识点:Nginx的长连接优化、如何将Nginx配置成下载服务器。 长连接配置详解 在Nginx的配置中,长连接是一个重要的性能优化手段。它允许一个TCP连接上发送多个请求和…...

LabVIEW如何确保步进电机的长期稳定运行
步进电机因其良好的定位精度和控制性,在自动化设备中得到了广泛应用。然而,长期稳定运行对于任何电机系统都是一个重要的挑战。LabVIEW作为一款强大的图形化编程语言,通过其灵活的控制算法和实时监控能力,为步进电机的稳定运行提供…...

vue2 bug 小白求助!!!(未解决,大概是浏览器缓存的问题或者是路由的问题)
我的vue2项目出现了一个超级恶心的bug 具体流程: 页面a点击a标签->到页面b->页面b用户退出刷新页面->点击浏览器的返回按钮返回上一页 返回页面后页面没有刷新导致用户名还显示这 项目中没有用keep-alive缓存 也在设置了key 尝试了window.removeEventLi…...

上海云管平台怎么样?客服电话多少?
云计算已经成为了企业数字化转型的重要一部分,而在上海,云管平台发展更是大势所趋。这不不少小伙伴在问,上海云管平台怎么样?客服电话多少? 上海云管平台怎么样?客服电话多少? 【回答】&#…...

c++程序员为什么要做自己的底层库
五一期间,在家里翻到之前上学时候用的电脑和工作日志,粗略浏览一番,感慨10年岁月蹉跎,仍然没有找到自己技术方向的“道”。遂有感而发,写下此文。 算起来,接触软件开发也有10年时间了,最开始是…...

堆排序-java
这次主要讲了堆排序和堆的基本构造,下一期会详细讲述堆的各种基本操作。 文章目录 前言 一、堆排序 1.题目描述 2.堆 二、算法思路 1.堆的存储 2. 结点下移down 3.结点上移up 4.堆的基本操作 5.堆的初始化 三、代码如下 1.代码如下: 2.读入数据ÿ…...

Android MIPI屏配置
参考资料:RockChip发布的DRM Display Driver Development Guide手册,以及网上大量相关博客资料 首先要拿到《屏幕硬件规格书》和《DataSheet》,软件配置主要依靠DataSheet提供数据支持。 查阅DataSheet里面on sequence和off sequence说明&a…...

C#面:.Net、ASP.Net、C#、VisualStudio之间的关系是什么
C#是一种编程语言,它是由微软开发的,用于开发各种类型的应用程序,包括桌面应用程序、Web应用程序和移动应用程序等。C#是一种面向对象的语言,它具有强大的类型安全性和丰富的库支持。 .NET是一个软件开发框架,它由微软…...