给大家的福利
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
因篇幅有限,仅展示部分资料
网络安全面试题
绿盟护网行动
还有大家最喜欢的黑客技术
网络安全源码合集+工具包
所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Modbus_tk是使用python语言实现的modbus协议栈,该函数库即支持主机也支持从机,既支持RTU也支持TCP。
下载安装pip install modbus_tk
RTU通信读写寄存器
因为主要讲RTU通信和TCP通信读写寄存器,那什么是RTU呢?Modbus是一种应用层协议,它定义了与基础网络无关的数据单元(ADU),可以在以太网(TCP/IP)或串行链路上进行通信。在串行链路上,Modbus协议有两种传输模式——ASCII模式和RTU模式。其中,ASCII(American Standard Code for Information Interchange)为美国国家信息交换标准编码,RTU( Remote Terminal Unit)为远程终端设备。所以RTU通信就是通过模拟远程终端设备读写寄存器。
RTU通信我们需要的辅助工具是VSPD(Virtual Serial Port Driver 9.0 by Eltima Software)虚拟串口工具,如下图所示,帮助我们添加模拟的端口是COM1/COM2:
添加端口之后,打开我们计算机的设备管理就增加了如下端口示意图:
配置好串口之后,接着来配置我们的模拟器Modbus Slave(PLC),为什么要用模拟器呢?因为大部分真实的Mdobus PLC都是通过Modbus TCP协议通讯的,所以RTU的通信读写我们通过模拟器来实现。
1、选择连接方式为Serial Port(串口)
2、串口设置为上图的COM1->COM2
3、通信方式选择RTU
4、波特率9600、数据位8位、无校验位、1位停止位默认不变
5、模拟器的寄存器上设置好供modbus_tk读取的值
接下来就是通过Python的modbus_tk库来读取寄存器的值:
1、导入modbus_rtu和cst来选择读取线圈和寄存器
2、设置好串口读取的参数(端口、波特率、校验位和停止位)
3、设置读取寄存器值(1为设备ID,0为开始读取的地址,9为读取的位数)
4、显示之前在保持寄存器里设置的值,读取成功
TCP通信读写PLC
讲完了RTU通信,那现在讲一下ModbusTCP通信。在实际的工业系统应用中,Modbus TCP的使用也更加普遍。虽然TCP中没有了CRC校验,但是数据包中已经进行了校验,再加上工业PLC网络大部分不对外开放,所以Modbus TCP通信也是相对比较安全的,但是如果攻击者进入了工业系统内网中,那后果不堪设想。ModbusTCP通信使用TCP502端口和正常的从机IP地址来进行联系。下图是modbus_tk库进行TCP通信读取Schneider M340的代码和结果:
1、导入modbus_tcp和cst来选择读取线圈和寄存器
2、TCP通信只需设置PLC的IP就可以
3、设置读取保持寄存器的值(1为设备ID,100为开始读取的地址,25为读取的位数)
4、成功读取到PLC寄存器的值
二、Mbtget工具介绍:
介绍完了用代码来读取Modbus PLC的值,大家是不是觉得还是比较麻烦,我用个工具不香吗?哈哈,接下来介绍的就是轻量级的工具——Mbtget。它是简单的perl脚本编写的,通过寥寥几个参数一行命令就可以读写线圈和寄存器的值,十分方便。
首先是在linux上的安装:
安装十分的简单,完成后我们使用help命令查看Mbtget的使用方法和功能,如下图所示:
我们先来个简单的,-r1代表读取线圈状态,-u1代表UID为1,-n8代表读取八位值,再接上PLC的IP,就得到了如下的图,成功读取了线圈:
给大家的福利
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
因篇幅有限,仅展示部分资料
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!