工业控制中逆向分析通讯控制协议的经验总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
工业控制中逆向分析通讯控制协议的经验总结
在对工业控制系统进行运行维护中,经常会遇到控制系统只有控制程序,没有技术资料的情况,而系统集成时又必须使用到控制系统的通讯控制协议,这时就需要采用逆向分析的方法来分析通讯控制协议。
此种方法很实用,如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。
五、使用通讯协议,集成到新系统中。
使用该通讯协议,开发程序,无缝集成到档案系统中,成功的实现了远程控制密集架。