S7comm协议中关于数据字段的分析(1)

实验环境:西门子S7-300、CUP 315-2DP、step7 5.6、wireshark

目的:利用抓取的数据包还原PLC代码

利用wireshark抓取PC与PLC传输的数据,其中包含了PLC代码为function[Download block]的数据包,如图1。

                                                                                    图1

打开这个包,经过多次实验分析发现data字段的格式大致为:7070...0000+xx+0000 0000+???? ????+30e3...1400+code+6500...0100+????+0000 0000 0000 0000,其中xx部分代表了data的长度。

      

                                                                     图2

图3所示的PLC代码在数据包中的内容为图2中圈红部分:0a 89 01 8a 01 8b 01 d8 80。多次实验发现:其中0a转换成十进制为10,用其除以2再减去1就得到指令个数4。而后面的部分则两个字节为一个指令。其格式为:_ _ _ _,其中后三位代表了存储地址,第一位代表了操作类型。第二位的大小还代表了串联或并联,目前实验得出当第一位为8,第二位为0-7(代表与下一指令串联),第二位为8-F(代表与上一指令并联)。这里串联并联应该还与第一位(操作类型)有关,目前我只做了写简单的实验,但原理可能就是这样。

                              

                                                                      图3


例子:

 data  : addr     opt               

81 01 : M1.1    与

82 01 : M1.2    与

a1 01 : M1.1    取反

data             :opt

81 01 82 01  :  M1.1 && M1.2

81 01 a2 01 : M1.1 && ^M1.2

89 01 8a 01 : M1.1 ||  M1.2

今天大致找到了分析方法,之后的实验结果会陆续更新。

猜你喜欢

转载自blog.csdn.net/muyuyi_1999/article/details/79843951
今日推荐