全国服务热线 19514718569

西门子S7-400主机CPU412-1西门子中国一级总代理 西门子PLC代理商

更新时间:2023-08-24 14:25:09
价格:¥888/台
西门子:西门子代理商
西门子CPU:西门子plc
德国:全新原装
联系电话:
联系手机: 19514718569
联系人:吴悦
让卖家联系我
详细介绍

西门子S7-400主机CPU412-1西门子中国一级总代理 西门子PLC代理商

西门子S7-400主机CPU412-1西门子中国一级总代理 西门子PLC代理商

西门子S7-400主机CPU412-1西门子中国一级总代理 西门子PLC代理商

浔之漫智控技术(上海)有限公司  经营理念是:以质量求生存,以诚信谋发展。

我们公司能提供全套产品,我们有着zuihao的库存,Zui优惠的价格

Zui优质的售后服务和Zui强大的技术力量

我公司大量现货供应,价格优势,品质保证,德国原装进口

西门子S7comm plus通信过程及重放攻击分析

一、概述

西门子PLC广泛应用于工业控制系统。本文主要利用手上S7-1200 V3.0.2 固件版本的PLC和TIA13等环境进行S7comm-plus加密协议初步分析及防重放攻击分析,本文章只做交流学习使用,禁止应用于非法用途,欢迎各路大神进行交流,共同学习进步。

二、西门子PLC介绍

西门子PLC广泛应用于工业控制系统。西门子控制器包括S7-200、S7-300、S7-400、S7-1200以及S7-1500版本的西门子PLC,

S7-200、S7-300、S7-400系列的PLC采用早期的西门子私有协议S7comm进行通信。S7-1200/1500系列固件版本为V3.0以下的PLC采用西门子新一代的S7comm-Plus协议进行通信,该协议采用了一些特殊编码规范。S7-1200/1500系列固件版本为V3.0以上,采用了Zui新的S7comm-Plus协议,S7comm-plus协议引入了会话ID来防止重放攻击。

查看S7 plc系列有哪些型号及对应的固件版本,可以参考下图。

三、协议分析

3.1协议结构

S7Comm-plus以太网协议基于OSI模型如下:

通过抓包分析和wireshark源码解析,可以知道S7Comm-plus协议的帧结构大致由头部、数据域、和尾部组成,头部和尾部是固定的,而数据域对不同的帧结构和内容均有很大的差异。帧结构示意图如下图所示:

3.2 头部和尾部分析

Header和Trailer的组成是一样的,包含协议号、PDU类型和数据长度信息,其结构如下图所示:

其中头部和尾部的结构一致。Protocol id为一个字节、 PDU type 为一个字节Length为双字节。PDU type定义了该帧的类型。

3.3 数据域分析

Data域是帧结构中Zui复杂也是变化Zui多的区域,通过分析可以将Data域分为Integrity part 、D_header和Data三个部分。具体结构如下图所示:

(1)D_Head

当PDU type为0×01和0×02,数据包中没有32位 Integrity part,当pdu type为0×03,数据包中有32位Integrity part;在数据头中有两处reseved和一处unknown部分,对于不同的帧其值是不一样的,从wireshark抓包数据分析,其值分布如下所示:

(2)Data

data部分的结构、内容及格式与PDU type和opcode有关,Data部分情况种类多、较为复杂,详细分析可以阅读wireshark s7comm-plus协议解析代码。

四、防重放攻击分析

4.1 环境安装

(1) PC1(192.168.10.101):安装博图软件TIA13,用于连接S71200 plc设备,并进行启停PLC CPU控制,主要用于抓包分析,博图软件添加正确的PLC设备、并配置好PLC网络地址,确保能连接成功,如下所示:

(2)PLC (192.168.10.53):6ES7 214-1AG31-0xB0 V3.0.2,如下所示:

(3) pc2 (192.168.10.100): 该主机主要进行重放攻击实验。

4.2 抓包分析

(1)离线模式下,点击博图软件stop 和 start 按钮,进行抓包分析。

返回session id,以后每次请求均要带上该session id,达到防止重放攻击目的。

Stop 和 start cpu 启停包长的均为121字节,操作成功响应数据包为84字节

信息泄露,不知道为什么这么设计,需要返回设备信息。

(2)session id 计算方式,s7comm_plus[24]+0×80, s7comm_plus数据包第24位+0×80,如下图所示:

(3)stop cpu 指令分析,主要是AddressList和ValueList, 值为000000340, 将 值修改为000000340 则为 start cpu 指令

五、实施重放攻击

经过上面分析,只要获取到session id,并在每次请求plc的时候,添加上session id即可绕过S7comm-plus防重放攻击,编写如下验证代码,并抓包分析,观察现象:

运行以上代码,重放攻击成功,当进行stop时,plc RUN/STOP 灯显示黄色,当进行start cpu时候,RUN/STOP 指示灯显示绿色,如下所示:

重放攻击抓包分析如下所示:

六、总结分析

在实验过程中还发现两处问题,当完成COTP 连接后发送的第一个S7comm-plus CreateObject 数据包可以获取到plc的相关信息,造成信息泄露,可以推出cpu型号及固件版本,攻击者可以利用这些信息开展进一步攻击。另外,当TIA13软件在线连接上PLC,启停脚本失效,应该是PLC只允许一个工程师站客户端进行连接的原因。


Product Type
产品类型
Sub type
分类
MLFB
订货号
Description
产品描述
CPU模块标准型6ES7288-1SR20-0AA1S7-200 SMART,CPU SR20,标准型 CPU 模块,继电器输出,220 V AC 或110 DC供电,12 输入/8 输出
6ES7288-1ST20-0AA1S7-200 SMART,CPU ST20,标准型 CPU 模块,晶体管输出,24 V DC 供电,12 输入/8 输出
6ES7288-1SR30-0AA1S7-200 SMART,CPU SR30,标准型 CPU 模块,继电器输出,220 V AC 或110 DC供电,18 输入/12 输出
6ES7288-1ST30-0AA1S7-200 SMART,CPU ST30,标准型 CPU 模块,晶体管输出,24 V DC 供电,18 输入/12 输出
6ES7288-1SR40-0AA1S7-200 SMART,CPU SR40,标准型 CPU 模块,继电器输出,220 V AC或110 DC 供电,24 输入/16 输出
6ES7288-1ST40-0AA1S7-200 SMART,CPU ST40,标准型 CPU 模块,晶体管输出,24 V DC 供电,24 输入/16 输出
6ES7288-1SR60-0AA1S7-200 SMART,CPU SR60,标准型 CPU 模块,继电器输出,220 V AC 或110 DC供电,36 输入/24 输出
6ES7288-1ST60-0AA1S7-200 SMART,CPU ST60,标准型 CPU 模块,晶体管输出,24 V DC 供电,36 输入/24 输出 
经济型6ES7288-1CR20-0AA1S7-200 SMART,CPU CR20s,经济型 CPU 模块,继电器输出,220 V AC或110 DC 供电,12 输入/8 输出 
6ES7288-1CR30-0AA1S7-200 SMART,CPU CR30s,经济型 CPU 模块,继电器输出,220 V AC或110 DC 供电,18 输入/12 输出 
6ES7288-1CR40-0AA1S7-200 SMART,CPU CR40s,经济型 CPU 模块,继电器输出,220 V AC或110 DC 供电,24 输入/16输出 
6ES7288-1CR60-0AA1S7-200 SMART,CPU CR60s,经济型 CPU 模块,继电器输出,220 V AC或110 DC 供电,36 输入/24 输出 
6ES7288-1CR40-0AA0S7-200 SMART,CPU CR40,经济型 CPU 模块,继电器输出,220 V AC 或110 DC供电,24 输入/16 输出 
6ES7288-1CR60-0AA0S7-200 SMART,CPU CR60,经济型 CPU 模块,继电器输出,220 V AC或110 DC 供电,36 输入/24 输出 

西门子PLC外部数据BCD码的输入方法

1、BCD码数据外部输入应用设计举例

1.1设计思路

首先介绍SIEMENS(西门子)公司plcS7—200的物理存储区结构,一般情况下,物理存储区是以字节为单位的,所以存储单元为字节单元,操作数长度是字或双字时,标识符后给出的存储单元参数是字或双字内的Zui低字节单元号。图1(a)给出了字节、字、双字的相互关系及表示方法。当使用数据宽度为字或双字时,应保证没有生成任何重叠的存储器字节分配,例如,字地址编码应采用MW10、MW12、MW14······等偶数字地址或MW11、MW13、MW15·······等奇数字地址,由于存储器字MW10占用MB10、MB11两个字节,而MW11则要占用MB11、MB12两字节,存在字节地址重叠单元MB11,所以字地址编码时奇偶不能兼用,以免造成数据读写错误。图1(b)给出数据存储结构,数据的高位用MSB表示,低位用LSB表示。


西门子PLC外部数据BCD码的输入方法


其次,以德国SIEMENS(西门子)公司的S7—200PLC为例。构成加热控制系统,加热时间采用三位十进制数的BCD码拨盘从PLC外部输入。PLC输入/输出接点分配如下表所示:


西门子PLC外部数据BCD码的输入方法


加热系统的加热元件用PLC输出点Q0.0控制,系统起动按钮由I1.4输入,复位按钮由I1.5输入。


西门子PLC外部数据BCD码的输入方法



西门子PLC外部数据BCD码的输入方法


这里选择两个字节的PLC输入映象寄存器IB0和IB1作为外部数据输入端,利用三个BCD码拨盘将外部数据分别置入IB0、IB1两个字节中。每个BCD码拨盘需用四位PLC输入点,如个位BCD码8421端分别接至PLC的I0.3、I0.2、I0.1、I0.0输入接点,分配PLC的输入接点IB0的低4位为BCD码的个位数、高4位为BCD码的十位数、IB1的低4位为BCD码的百位数、高4位为无效位。利用传送指令分别将个、十、百位数送入三个内部标志寄存器(或内部变量寄存器)保存,并将送入的十位、百位数分别乘以权10和权100,Zui后将处理好的个位、十位、百位数相加,运算结果作为加热器的加热时间常数,PLC在用户程序初始化时,将其送入加热时间定时器中,对加热器加热时间进行实时控制,PLC在每次运行开始初始化程序中读取BCD码拨盘数据。这样采用改变外部拨盘的数据。即可以灵活地改变加热时间。

Zui后,在图2程序流程中,介绍了外部数据输入处理过程的基本思路。

1.2用户处理程序

用户程序由主程序和初始化子程序组成,根据特殊标志位SMO.1在程序首次扫描时给出的脉冲信号,调用初始化子程序,实现BCD码的数据输入。这样,在其后的扫描周期中不再会调用该程序,这减少了扫描时间且程序更结构化。用户程序说明:(1)程序段一实现子程序调用功能;(2)段二和段三实现加热器加热控制功能,输出继电器Q0.0由I1.4置位、定时器T37或I1.5复位,定时器T37的计时常数由内部标志寄存器MW8置入;(3)段5—段9为BCD码数据输入、处理子程序。段六、七分别将个位、十位、百位送MW2、6和VW2保存。段八实现十位乘10,百位乘100,运算结果分别送入VD4和VD8功能,并且将个位、十位、百位数求和运算结果送入MW8作为加热器加热时间。(4)段九为子程序返回。PLCS7-200梯形图程序如图3所示。


西门子PLC外部数据BCD码的输入方法



西门子PLC外部数据BCD码的输入方法



西门子PLC外部数据BCD码的输入方法


2、设计关键技巧和注意事项

设计技巧:是用BCD码拨盘,把加热器的加热时间值置成BCD码数,并用PLC的数据传送指令读入输入映象寄存器,进行运算后,作为控制加热定时器的预置值,从而达到实时控制。

注意事项:首先是应特别熟悉PLC物理寄存器内部结构,以便正确地确定BCD码数据输入位与PLC输入接点的关系,使之与定时器的时间常数相对应。其次,本参考程序在PLC由STOP状态进入RUN状态时读入外部数据,故只能在STOP状态修改BCD拨盘数据。若需在程序运行其间更改数据时,只要将子程序调用条件稍加改动即可。

3、结束语

随着PLC技术在现代工业中的广泛应用,利用外部装置输入、修改控制数据的应用场合越来越多,PLC应用技术和技巧应迅速普及,以不断提高工业控制技术水平,提高劳动生产率,提高国民的生活水平和综合国力。以上,我们探讨的是一种简单而可靠的外部数据输入方法,可供专门从事PLC应用技术研究的工程技术人员参考。


没有

联系方式

  • 地址:上海松江 上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
  • 邮编:201600
  • 联系电话:未提供
  • 经理:吴悦
  • 手机:19514718569
  • QQ:2810544350
  • Email:2810544350@qq.com
产品分类