IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Hali硬件安全工具-串口通讯RS232/485/422/CAN抓包 -> 正文阅读

[系统运维]Hali硬件安全工具-串口通讯RS232/485/422/CAN抓包

1.场景需求

????????我发现我的CSDN的优点之一就是,每篇文章都有讲清楚起因,平白无故的技术学习是没有根的,没有落地的场景,没有技术的应用,技术本身就是昙花一现。

????????这次的分享,是Hali硬件安全工具的第一次分享。关于Hali是什么,Hali能做什么,请参考:

??????极客“Hali”硬件信息安全检测工具集(硬件Kali)简介_千夫长-向往生的博客-CSDN博客_kali查看硬件

????????通过以下的分享,我将为你揭开,如何通过这些软硬件工具,对串口通讯进行抓包分析,首先确保你的抓包是在实验室中进行,或在安全的工厂环境下进行。

2.工具列表

????????工欲善其事必先利其器,我们先来看下,你需要的工具:

2.1【硬件】通用总线分析-逻辑分析仪

????????型号为:LA2016(或LA1010),可淘宝搜索型号购买。

2.2【硬件】串口工具

????????从左到右分别是:USB转RS232,USB转RS482/RS422,USB转TTL串口的工具,品牌型号都有,可以淘宝自己搜。

【硬件】CAN抓包分析仪

【软件】逻辑分析仪软件下载地址

????????通过这个分析工具,可以监听41种工业通讯总线数据,包括常见的232/TTL/485/422/IIC/SPI等,还可以自动探测串口波特率。

CAN分析仪软件:采购后会有店家发送软件下载地址。

????????通过这个软件,可以探测CAN总线的波特率,并直接把抓到的CAN数据包保存到Excel中,还可以主动,周期性的发CAN包。

串口抓包软件

????????这个是最常用的串口抓包工具,可以在各种视图中才查看到串口接收的时间,间隔,数据,数据的ASCII码,注册了会员,还可以把数据导出成txt做后续的python数据流分析。

3.基本使用方法

3.1.总线识别

????????一般在工厂的总线连接处,会明确的标识RS23/RS485,或者CAN_H,CAN_L,但如果出于保护或是标识看不到,那么可以先用逻辑分析仪接上去,看一下波形,或是用CAN分析仪怼上去,探测一下波特率。

3.2 总线抓包

????????这类软件基本上是比较傻瓜化的,插上硬件,把驱动装好,选择串口,点击开始抓包就可以,然后保存为默认的文件格式,再回到办公室,打开抓包文件就可以分析了。

3.3 数据清洗和分析

针对串口抓取回来的数据,导出成11.txt(以UTF-8存储),通过以下的脚本,实现数据的清理。

numindex=0
countW=0
countR=0

PID='Data'
global fileHandname
fileHandname='11'
try:
    f = open(fileHandname+'.txt', 'r', encoding='UTF-8')
    #f = open('1.txt', 'r')
    #print('读取成功')
except:
    print('读取文件错误,请确认文件正常存放')
ResultData=''
data_lines = f.readlines()
f.close()
num = len(data_lines)  # 得到存储的行数
for i in range(num):  # 读取最新的ChannelNum行数据,
    line = data_lines[i]  # 从第0行开始
    dataread=''
    numindex=line.find(PID)
    numindex2=line.find('WRITE')
    numindex3=line.find('READ')
    numdouhao=line.find(',')
    if (numindex>1):
        if((numindex2>0) or (numindex3>0)):
            if(line[numindex3+3]=='D'):
                dataread =line[0:numdouhao]+" "+PID+" 返回-->"+line[numindex3+5:-1]+"\n"
            else:
                dataread ="\r"+line[0:numdouhao]+" "+PID+" 发出-->"+line[numindex2+6:-1]+"\n"
    else:
        dataread=""
            
    ResultData=ResultData+dataread
    
file_handle = open(fileHandname+'-PID-'+PID+'.txt', 'w', encoding='UTF-8')  # 打开文件,以覆盖形式写入数据
file_handle.writelines(ResultData)
file_handle.close()
print("1梳理完毕")

4.案例

协议较为简单时,可以通过串口网络抓包捕获,逐个核对功能、数据流和界面数据来定位协议,例如:选择1号机,点击启动,看到发出:

01 02 03

选择2号机,点击启动,发出:

02 02 04

则可识别出协议:

启动命令为:

地址

长度

含义

0

1

机器号

1

1

启动命令码:02

2

1

校验字节,校验方式:累加和

然后用测试工具,发送同样的命令,测试是否可以正常的启动设备,完成协议验证。

? 通过以上的工具和方法,我分析出了3 款工控电脑的通讯控制协议,可以提供串口对机器进行,启动,停止,工艺下载,实时状态的读取和解析。

5.总结与重审

? 之所以选择串口作为通讯接口,是因为设备本身的处理能力不强,无法上系统用网口进行通讯,所以它的处理能力也不会很强,不足以进行复杂的通讯加密,所以一般都是明文收发,很容易被捕获和分析。

? 未知攻焉知防,各位嵌入式系统程序员,你们设计的系统会存在这样的漏洞吗?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 18:25:00  更:2022-04-18 18:26:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:49:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码