当前位置:文档之家› 工业控制中逆向分析通讯控制协议的经验总结

工业控制中逆向分析通讯控制协议的经验总结

工业控制中逆向分析通讯控制协议的经验总结

在对工业控制系统进行运行维护中,经常会遇到控制系统只有控制程序,没有技术资料的情况,而系统集成时又必须使用到控制系统的通讯控制协议,这时就需要采用逆向分析的方法来分析通讯控制协议。此种方法很实用,如PROTOS 卷烟机的西门子数据采集协议就是通过逆向分析的方法分析出来的。下面我以某厂档案室密集架的通讯控制协议的分析经验为例,对工业控制中逆向分析通讯控制协议的经验做个总结,供同事们在系统运维工作中参考。

工业控制中逆向分析通讯控制协议的经验:

一、工具准备:

串口通讯连接线2根,一根接头一公一母,负责连接上位机与下位机;一根接头两边都是公头,负责连接上位机与模拟机。

带串口的笔记本一台,充当模拟机。

二、软件准备:

微软超级终端程序、串口调试工具sscom32.exe 或串口阿秀。

微软超级终端程序在有DTR、RTS等带特殊格式的数据接收方面有独特作用,缺点是显示、储存、发送都不方便。

我们主要使用串口调试工具sscom32.exe。可以将接收数据显示为字符和十六进制HEX。也可方便的发送字符和十六进制数据。

三、进行试验:

1、连接上位机与模拟机,运行上位机软件,在模拟机上运行串口调试工具程序。在串口调试工具中设置波特率(一般选9600),数据位(一般选8),停止位(一般选1),校验位(无校验、奇校验、偶校验分别试),流控制(一般选无)。

2、使用上位机软件向模拟机发送指令,如果模拟机串口调试工具接收到数据,可以确定波特率相关参数,如果没有收到数据,组合改变波特率、数据位、停止位、校验位参数,直到收到指令数据。

3、验证通讯参数。

连接模拟机与下位机(即密集架之类),在模拟机串口调试工具中发送上步得到的指令数据,如果密集架动作并且有回码数据,证明通讯参数正确;否则继续进行第二步,直到找出正确通讯参数。(密集架调试中,使用波特率9600,8位数据位,1位停止位,无校验时可以收到1组数据,但发给密集架时不动作,经过认真思考和1天的试验,发现正确的参数是2位停止位)。

4、接收指令数据。

连接上位机与模拟机,运行上位机软件,组合发送各种指令,模拟机串口调试工具接收指令数据储存。

打开1区1列指令:

77 77 77 01 AA FE 02 C0 10 D0 EE

打开1区2列指令:

77 77 77 01 AA FE 02 C0 0F CF EE

打开1区2列指令:

77 77 77 01 AA FE 02 C0 0E CE EE

…………

打开1区16列指令:

77 77 77 01 AA FE 02 C0 01 C1 EE

关闭1区1列指令:

77 77 77 01 AA FE 02 C1 FF C0 EE

关闭1区2列指令:

77 77 77 01 AA FE 02 C1 FF C0 EE

关闭1区16列指令:

77 77 77 01 AA FE 02 C1 FF C0 EE

开灯1区1列指令:

77 77 77 01 AA FE 02 C4 10 D4 EE

开灯1区2列指令:

77 77 77 01 AA FE 02 C4 0F D3 EE

开灯1区2列指令:

77 77 77 01 AA FE 02 C4 0E D2 EE

…………

开灯1区16列指令:

77 77 77 01 AA FE 02 C4 01 C5 EE

5、接收返回数据。

连接模拟机与下位机(即密集架之类),在模拟机串口调试工具中发送第4步得到的指令数据,模拟机串口调试工具接收返回数据储存。

测试无返回数据。

四、分析数据,得到通讯协议。

将得到的数据进行分析整理,最后得到通讯协议:

密集架通讯协议:

通讯参数为:9600波特率,8位数据位,2位停止位,无校验。

协议为:11位16进制码,

第1位到第7位开始码:固定为:77 77 77 01 AA FE 02

第8位为指令码:C1 为打开;C2为关闭;C4为开灯;

第9位为地址码:第1列为0F;第2列为0E;第n列为(0F-n) (n<17)

全部为FF

第10位为校验码:经过分析排除CRC校验码,异或校验,认为是累加

校验,即(FE+02+第8位+第9位)去掉进位。

第11为为结束码:固定为EE。

五、使用通讯协议,集成到新系统中。

使用该通讯协议,开发程序,无缝集成到档案系统中,成功的实现了远程控制密集架。

相关主题