好久不见!我相信您已经阅读了之前的四篇文章,我们在其中讨论了OBD-II。在这篇文章中,我们将研究 can-utils。其中包含 Linux CAN 子系统的用户空间实用程序。我建议您在实时尝试命令的同时可以关注我们的公众号,以便掌握更多资讯。
在之前的文章中,我们讨论了CAN 总线协议。让我们考虑这样一个场景:我们有必要的硬件来嗅探总线。现在,我们只需要一个软件工具来帮助我们分析总线。其中一个这样的工具叫做can-utils。基本上can-utils更像一把瑞士军刀。
can-utils是一个命令行Linux实用程序,它包含基本工具,可以显示、记录、生成和重放can流量。除了这些基本操作,我们还可以计算总线负载,转换日志文件,它还包含ISO 15765-2:2016工具。
在本篇文章中,我们将研究这些工具,帮助我们分析CAN总线。
• candump
• cansniffer
• canplayer
• cangen
• cansend
要在您的学习空间中安装 can-utils,请使用以下命令。
sudo apt-get install can-utils -y
在动手操作 can-utils 之前,让我们在 Linux 机器上创建一个虚拟罐网络。使用以下命令。
sudo modprobe can
sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0
注意:从现在开始我们将使用 vcan0,在进行测试时,您可以将其替换为您在设置时提供的网络名称。
它用于显示、过滤和记录CAN总线数据到文件中,它基本上是将在总线中流动的数据包转储到屏幕上。Candump有几个选项可以处理总线中的数据浮动。我们可以看到二进制模式和ASCII模式下的数据包数据,也可以通过颜色编码将不同总线上的数据包分开。当数据以二进制和ASCII格式显示时,我们可以使用以下命令对总线进行彩色编码。
candump –c -i –a vcan0
我们还可以使用 Candump 记录总线中的流量
与 Candump 不同,Cansniffer 显示总线中当前出现的所有数据包。它有不同的选项来对特定 ID 中发生变化的位进行颜色编码。此外,我们可以在二进制模式和ASCII模式之间切换,使用“b ENTER”对正在更新的位进行颜色编码,我们可以在输入命令时使用“-c”或“c + ENTER”实时。
cansniffer vcan0
Use “ c + ENTER ” to color code.
Use “ b + ENTER ” to toglle between binary and ASCII outputs in live.
它用于生成总线中的随机流量,还具有一些先进的功能,可以在毫秒内设置间隔、生成CAN-FD帧、发送带有RTR帧的can包等。
cangen vcan0
为了更好地理解canplayer和cansend,我将使用ICsim。ICsim是一个很好的工具,可以在总线级别上练习汽车黑客攻击,并对攻击进行虚拟演示。
如上所述,我们可以将总线中的数据包记录到日志文件中。Canplayer帮助我们回放日志文件。同样的命令是
canplayer –I <*filename>
在这个过程中,我们将记录ICsim的信号指示包,并使用Canplayer重放它们。是的,我们对指示节点进行了重新部署攻击。
使用cansend,我们可以发送CAN 2.0和CAN FD帧,这取决于我们分析的总线。命令是
cansend vcan0 <ID>#<DATA>
最后,让我们使用can-utils转储、记录和播放ICsim的信号指示。
如果您浏览过这些工具帮助页或手册,您会发现许多选项可以根据您正在测试的总线来编写命令。
我们希望这篇文章能让你轻松自如地使用can-utils。如果你读到这里了,说明你对汽车安全非常感兴趣。接下来,下一篇博文将解密历史上发生的一些著名的汽车黑客事件。
参考资料:
https://payatu.com/blog/kartheek.lade/automotive-security-part5
原文始发于微信公众号(IOTsec Zone):车联网安全入门 Part5