工业安全协议学习


协议

协议模块主要参考

https://github.com/No-Github/1earn

image_1f9bj16af1csq18e414ge27jsko4b.png-35.8kB

公开的ICS模块进行学习,内容大概没有其他学习文章里的那么详细,主要是总结一下协议本身比较重要的信息及对应字节码,方便自己在分析协议时查看指令及内容,相关具体的原理讲解可以移步到相关的文章

TPKT

中间层传输协议

主要是用于COTP协议和TCP协议之间传输通讯

image_1f9b9i3ta18jo7ph1ue07s2mki9.png-9.6kB

主要数据为version和length,version一般为3 reserved为保留 值为0x00 长度为90

COTP协议

TCP协议的上层协议,主要是两种包,一种包是连接包一种包是功能包,作用是接收方获得传输方相同边界的数据

连接包PDU-type类型: COTP Connection Packet

0x1: ED Expedited Data,加急数据

0x2: EA Expedited Data Acknowledgement,加急数据确认

0x4: UD,用户数据

0x5: RJ Reject,拒绝

0x6: AK Data Acknowledgement,数据确认

0x7: ER TPDU Error,TPDU错误

0x8: DR Disconnect Request,断开请求

0xC: DC Disconnect Confirm,断开确认

0xD: CC Connect Confirm,连接确认

0xE: CR Connect Request,连接请求

0xF: DT Data,数据传输

image_1f9baf2ftfrn1nfph81lon63am.png-43.5kB

参数传输了3条,也是我们常说的payload

功能包:COTP Fuction Packet

0x1: ED Expedited Data,加急数据

0x2: EA Expedited Data Acknowledgement,加急数据确认

0x4: UD,用户数据

0x5: RJ Reject,拒绝

0x6: AK Data Acknowledgement,数据确认

0x7: ER TPDU Error,TPDU错误

0x8: DR Disconnect Request,断开请求

0xC: DC Disconnect Confirm,断开确认

0xD: CC Connect Confirm,连接确认

0xE: CR Connect Request,连接请求

0xF: DT Data,数据传输

image_1f9bah7a21s311v0u4bjdm61u2e13.png-14.5kB

s7comm协议分析

image_1f9bbt8di32u6me1mva1i2p1a5u34.png-81.5kB

主要有三个模块

image_1f9bauflu1jo411f61r1mq091ca71g.png-7.2kB

Header 头部
Parameter 参数
Data 数据

Header部分

image_1f9bbi0tn4dn1lhqd1pgbdft21t.png-22.5kB

PDU-type

0x01 - JOB(Request: job with acknowledgement):作业请求。由主设备发送的请求(例如,读/写存储器,读/写块,启动/停止设备,设置通信);

0x02 - ACK(acknowledgement without additional field):确认响应,没有数据的简单确认(未遇到过由S7 300/400设备发送得);

0x03 - ACK_DATA(Response: acknowledgement with additional field):确认数据响应,这个一般都是响应JOB的请求;

0x07 - USERDATA:原始协议的扩展,参数字段包含请求/响应ID(用于编程/调试,读取SZL,安全功能,时间设置,循环读取...)。

image_1f9bblfh553d1lu3kul1haf1frg2n.png-3.8kB

错误类型和错误代码 0x00为不存在

Job和ACK_DATA PDU类型分析

Job请求头数据包和ACK_DATA数据包分析

image_1f9bfn59enbb192413aofrf1gkl3h.png-6.8kB

Parameter实现功能及功能码总结:

实现功能 参数名 功能码
建立通信 Setup communication [0xF0]
读取值 Read Var [0x04]
写入值 Write Var [0x05]
文件下载-请求下载 Request download [0x1A]
文件下载-下载块 Download block [0x1B]
文件下载-下载结束 Download ended [0x1C]
开始上传 Start upload [0x1D]
上传 Upload [0x1E]
上传结束 End upload [0x1F]
程序调用服务 PI service [0x28]
PLC-STOP PLC STOP [0x29]

Userdata PDU类型分析

实现功能 参数名 功能码
转换工作模式 Mode-transition [0x0]
程序员命令 Programmer commands [0x1]

基本功能:编程/调试、读取SZL、安全功能、时间设置,循环读取

与前面PDU不同的是此处是使用子功能码进行操作

转换工作模式

image_1f9biq6ij97ik0f1k89192hg5u3u.png-131.9kB

子功能码

执行功能 参数名 子功能码
STOP模式 STOP 0x00
暖启动 Warm Restart 0x01
RUN模式 RUN 0x02
热启动 Hot Restart 0x03
HOLD模式 HOLD 0x04
冷启动 Cold Restart 0x06
H-System冗余运行 RUN_R (H-System redundant) 0x09
LINK-UP模式 LINK-UP 0x0B
UPDATE模式 UPDATE 0x0C

发表评论

邮箱地址不会被公开。 必填项已用*标注