三、ModBus协议实战分析

三、ModBus协议实战分析_第1张图片

0x01 前言

上一篇文章我们学习总结了Modbus协议相关的一些理论基础,在这篇文章中,我们将通过搭建Modbus仿真环境来对Modbus协议进行实际分析。

协议分析环境:

  • ModbusPoll : 用于仿真Modbus主站或Modbus客户端
  • ModbusSlave : 用于仿真Modbus从站或Modbus服务器
  • Configure Virtual Serial Port Driver :简称VSPD, 用与给电脑创建虚拟串口
  • CommMonitor :串口监控精灵,能够监控串口数据传输

软件下载:

  • ModbusPol、ModbusSlave、VSPD下载:https://pan.baidu.com/s/1vQiGP-AIYxShcZhbxbctTg 提取码: dqeg
  • CommMonitor下载:http://www.ceiwei.com/mt/

0x02 使用VSPD新建串口

正常情况下,Modbus协议调试需要两台以上的电脑联机进行调试。但是在使用了VSPD后,我们能够通过在一台电脑上创建虚拟串口的方式,在一台主机上分析Modbus通信。

安装过程就一路next就可以,安装好之后,更具提示进行软件破解。

打开软件页面如下,右边就是新增串口操作的功能位置,我们选择两个较大的串口号进行添加,如下图:

三、ModBus协议实战分析_第2张图片

点击添加,成功在左侧页面看到添加的虚拟串口信息:

三、ModBus协议实战分析_第3张图片

为了验证是否添加成功,可以在此电脑->管理->设备管理器找那个查看端口,如下图,成功添加。

三、ModBus协议实战分析_第4张图片

0x03 新建ModBus串口连接

ModBus Slave 软件安装过程一路next就可以,安装完之后,打开输入即可进行正常使用。

打开后新建连接,Connection—>Connection,提示要输入key,输入软件包中提供的秘钥即可,然后一路OK到如下页面,设置连接信息如图,红框标出的内容需注意,连接串口选择刚刚VSPD添加的串口。

三、ModBus协议实战分析_第5张图片

ModBus Poll与ModBus Slave 一样的安装和打开操作,只不过在选择串口的时候,选择创建的另一个就OK。

三、ModBus协议实战分析_第6张图片

主从站点都已经建立了连接,就需要对主从站点进行设置,点击菜单栏的Setup --> Definition: function 03 ,保持寄存器信息,对于主站和从站来说都相同,如下图:

三、ModBus协议实战分析_第7张图片

主从站设置好之后,可以双击从站(Slave)的寄存器的的某一行的地址,然后输入数据,并勾选上自动增加数值选项,让其每秒自动增加:

三、ModBus协议实战分析_第8张图片

然后在主站中查看是否读取到寄存器的值,如果读取到,说明主从站连接成功。

三、ModBus协议实战分析_第9张图片

0x04 使用 CommMonitor 进行分析

对于安装, CommMonitor串口监控支持WinXP,Win7,Win10, Win11,32/64位操作系统,默认安装即可 。

打开软件后,我们需要对串口进行监控,这里我们选择串口COM21,因为我们点击主站串口选择的就是COM21,数据主要是从主站发起,从站响应,并且由于所有数据都会通过两个串口,所以只需要监听其中一个就可以。

在串口监控设置方面,选上ModBUs视图,MOdbus RTU 模式,与我们的连接方式相对应。

三、ModBus协议实战分析_第10张图片

串口监控设置好之后,我们就能看到串口中实时传输的数据了,基本情况如下:

三、ModBus协议实战分析_第11张图片

如图所示,Modbus协议已经被解析,0x03功能码表示正在请求读取保持寄存器的值,请求读取的地址为0x00,读取长度为0x0A,校验码为0xC5CD。

对于从站响应包解析结果如下图:更具结果中的响应码说明从站寄存器数据读取成功。

三、ModBus协议实战分析_第12张图片

然后我们再修改主站上的数据,发送到从站:

三、ModBus协议实战分析_第13张图片

我们再来看看ModBus协议数据,如下图是我们的请求数据包,可见功能码是0x06,也就是写单个保持寄存器,要写入的值为222:

三、ModBus协议实战分析_第14张图片

再看看响应包的内容,响应包中的功能码也为0x06,说明写入成功:

三、ModBus协议实战分析_第15张图片

0x05 使用Wireshark抓包分析

首先说说在环境设置上的不同点:在新建连接的时候无论是主站还是从站,都需要将传输协议设置为Modbus TCP/IP,并且设置连接端口为同一个,如下图所示:

三、ModBus协议实战分析_第16张图片

设置好连接之后,参照上述方法,在从站设置数据自增长即可,然后打开wireshark进行抓包,如下图是其中的一个请求包:

三、ModBus协议实战分析_第17张图片

具体分析情况如下:

byte[0] byte[1]: 00 76 为消息号,随机指定,返回数据包的消息号的和请求数据包的消息号相同
byte[2] byte[3]: 00 00 为modbus强制标识
byte[4] byte[5]: 00 06 modbus报文的长度,往后数,一共也是6个字节,能够正确对应
byte[6]: 01 为从站编号
byte[7]: 03 功能码,标识读取保持线圈寄存器的值
byte[8] byte[9]: modbus将要读取的保持寄存器的起始地址
byte[10] byte[11]:modbus将要读取的保持寄存器的个数

再来看看响应包:

三、ModBus协议实战分析_第18张图片

对响应包的具体分析如下:

byte[0] byte[1]: 00 76 为消息号,与请求包相同
byte[2] byte[3]: 00 00 为modbus强制标识
byte[4] byte[5]: 00 17 modbus报文的长度,往后数,一共也是23个字节,能够正确对应
byte[6]: 01 为从站编号
byte[7]: 03 功能码,与请求包的功能码相同
byte[8]:读取到的数据长度的总长度,往后数一共20个byte,与之对于。
byte[9] byte[10]:第一个保持寄存器的数据,2个byte
byte[11] byte[12]:第二个保持寄存器的数据,2个byte,此处为00 41 ,也就是65
byte[13] byte[14]:第二个保持寄存器的数据,2个byte
........
byte[27] byte[28]:第10个保持寄存器的数据,2个byte

0x06 参考文章

  • https://blog.csdn.net/as480133937/article/details/123219425
  • https://baijiahao.baidu.com/s?id=1728421275380437231&wfr=spider&for=pc
  • https://www.likecs.com/show-94474.html

你可能感兴趣的:(工控安全,MOdbus,工控安全,协议分析)