破解PLC密码.docx
- 文档编号:10071358
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:7
- 大小:171.53KB
破解PLC密码.docx
《破解PLC密码.docx》由会员分享,可在线阅读,更多相关《破解PLC密码.docx(7页珍藏版)》请在冰点文库上搜索。
破解PLC密码
破解PLC密码
采用软件侦听法解除OmronPLC读取保护
1引言
随着自动化控制技术的发展,plc在工业过程控制领域中发挥着越来越重要的作用。
omronplc在各种机器设备上应用较为广泛,设置了plc程序读取加密保护的设备出现问题时,设备制造商由于倒闭或其它原因,往往不能提供密码,无法及时监控程序、分析故障原因,给设备故障的分析、解决带来很大的不便。
另外,一但plc的模拟量或数字量输入、输出端口损坏,即使模块有备用通道,由于程序加密无法修改,也只能整体更换相应模块,增加了设备的维护成本,给设备维护工作带来很大不便。
为了解决加密保护设备的质保后期生命周期管理问题,我们可以通过串口监测软件对omronplc与plc编程软件进行密码输入与输出时的串行通讯数据进行监视、拦截通讯帧,再对通讯帧进行对比分析,反复实验,可以实现对plc内部保留协议的侦听测定;再使用vb等编程软件采用枚举法编制程序获取密码。
2监测的原理和方法
2.1监测通讯硬件基础
串行通讯端口(serialcommunicationport)在控制系统中一直占有极重要的地位,主要有rs232和rs485两种通讯方式。
现在的计算机上广泛采用的是美国电子工业协会eia(elect-ronicindustryassociation)制定的rs232c串行物理接口标准,rs是英文“推荐标准”的缩写,232为标识号,c表示修改次数。
对于一般双工通信,仅需几条信号线就可实现,如一条发送线、一条接收线及一条地线,同时具有两个方向的传输能力是“全双工”(doubleduplex)的数据传输。
目前,大多数plc制造商都生产与rs232c相兼容的plc通讯模块或plc编程接口转换电缆,我们可以用计算机通过rs232c通讯接口实现对大多数plc的编程或通讯。
理论上,我们可利用串口调试软件截获并记录数据发送线、接收线串行传输的数据,实现对计算机及plc通讯信息的监测、分析。
2.2数据监测的实现方案
实现数据监视一般有两种方法。
(1)rs232c引脚信息截获。
由于串行端口是通过传送、接收引脚实现数据传递的,只要能将传送、接收引脚的信息截获出来,就可以完成对整个串行通讯的数据监视。
在计算机常用的db-9的rs232c通讯接口中,2脚为数据接收端,3脚为数据发送端,5脚为公共的地线。
例如某一计算机com1口和plc等现场监控设备之间进行正常的数据通信时,可用该计算机com2口或其它计算机的com口接收端2脚连接正常通讯com1口的2脚或3脚监视其接收或发送的数据,为保证通信正常,端口初始化必须设置相同的参数。
在通讯正常时,可以得到pc发出的命令帧以及plc发回的响应帧的数据。
(2)端口侦探(portspy)。
选择不占用串口资源对串口通讯的数据进行监测的软件,如端口侦探(portspy)。
该程序主要是针对电脑串口(com)和并口(lpt)的调试与监测,是一款综合型调试软件,其串口监视功能,可以在不占用串口资源的情况下对串口发送和接收的数据进行捕获,如图1所示。
图1串口监控软件界面
两种检测方法,方法1比较通用,但需要分别测定pc的命令帧及plc的响应帧后,再综合进行分析,当通讯数据较多时,操作较为繁琐。
而方法2测定的命令帧和响应帧可按照通讯顺序依次排列,操作简单方便,可以直观地看出数据的流向便于分析协议,在本文中相关测试采用采用方法2进行数据监视。
3测定omronplc内部保留通讯协议的实例
3.1omronplc通讯协议格式
本次测试使用的是c200heplc,它是omron公司在c200h的基础上推出的一种中大规模的plc,在cpu单元上内置了rs232连接器,可方便地和外部设备进行串行通讯。
当然,我们也可以使用不带rs232通讯口的诸如cpm1a等小型plc,只需使用cif01接口转换电缆将plc编程口转换为rs232通讯口即可。
c200he采用主从通讯方式,作为上位机的计算机始终具有通讯传输优先权,所有的通讯由上位机来启动,c200he总是处于应答的被动状态。
plc与上位机的数据通讯是以“帧”为单位进行的,帧的格式如下图所示,命令帧由上位机发送给plc,应答帧为plc接收到命令帧后自动向上位机发送的应答信号。
命令帧:
应答帧:
其中,“@”为起始符号;节点号为plc的编号(00-31),对于单plc的控制系统默认为00;识别码说明帧的功能;fcs为帧的检查顺序,用来检查帧的传送时是否存在数据错误;*和cr为终止符,表明帧结束。
我们可按图2所示的通讯流程图编制程序代码,要注意的是在plc与上位机通信程序代码编制之前,首先要对rs232通讯端口进行初始化,使两者按相同的格式通讯。
初始化参数包括波特率、起始位、数据位、停止位和奇偶校验等。
c200he一般设置为9600bps、1个起始位、7个数据位、2个停止位、偶校验。
上位机定时发送rd(读plc的dm数据区)、wd(写plc的dm数据区)、rr(读plc的ir/sr区)、wr(写plc的ir/sr区)等命令,从而使上位机自动完成与plc的数据交换过程。
图2与plc通讯流程图
3.2omronplc程序读取加密保护
fun49是专门用于对omronplc程序进行读取加密保护的特殊指令,一般在程序的第一行,用常开的ar1001触发fun4900#1234这条指令,fun49前面的两个操作数固定为0,#后面就是四位密码,传送到plc中,plc重新上电时有效。
<此处内容被屏蔽>,可以在编程软件cxp3.0的菜单条plc下→保护→释放密码→然后输入密码就可以了,如图3所示。
图3plc读取保护设置
3.3通讯数据截获及分析
运行omronplc编程软件cxp-3.0,按照实验选用的plc型号建立工程,按照3.2所述进行omronplc程序读取加密保护;运行串口侦测软件,先选择要监测的与plc正进行通讯的串口(在本测试中是com1),显示的模式(ascii、hex)为ascii,再输入监测延时10ms,再按一下开始键就可以开始监测了,如果成功在下面的状态条会显示com监测功能已激活;使cxp3.0与plc进行在线通讯,运行3.2所述的<此处内容被屏蔽>操作,输入正确密码,操作完成后,取消cxp与plc的联机状态。
在串口侦测软件发送、接收数据栏中查看、分析接收到的数据,查找预先设定的密码,如图1数据栏第一、二行所示,pc发送“@00mb31-06000012344f*”,plc返回“@00mb000400004b*”;同上操作,当我们在cxp中输入错误的密码“4321”时,如图4状态栏第二、三行所示,pc发送“@00mb3106000-043214f*”时,plc返回“@00m-b000400014a*”。
多次重复测试,我们可以看出,编程下载时软件将密码同程序文件一起写入plc中,<此处内容被屏蔽>操作时cxp发送的数据第14-17位是未加密发送的密码,plc根据密码正确、错误与否返回相应的固定判断结果,plc根据接收到的密码正确与否,然后在cxp内部实现密码的比较,提示密码输入是否正确。
图4串口监控软件界面
3.4通讯程序的设计
由于测试使用c200he密码范围为0000到ffff,我们可采用vb编程软件使用枚举法进行编程,利用vb提供的具有完善的串口数据发送和接受功能的通讯控件mscomm,实现与plc的串行通讯功能。
程序将密码从0000到ffff依次发送进行测试,plc返回“@00mb000400014a*”判断密码错误继续测试;当plc返回“@00mb000400004b*”判定当前测试的密码正确,程序停止工作,这样不会破坏plc内部的任何数据。
图5是利用以上原理简单编制的密码读取软件界面,首先选择“测试”钮检测plc是否和密码读取软件处于正常的联机通讯状态,我们可通过mscomm通讯控件利用c200he通讯测试指令“ts”发送一个测试数据块,如测试顺利,下位机c200he收到后,返传测试命令中规定的字符,内容不改变,这样就可判断plc是否处于正常的联机通讯状态;然后,通过读取程序指令“rp”判断plc程序是否处于读取保护状态;若处于读取保护状态,则可以自动依次发送密码进行测试,直至密码正确,软件停止测试,显示密码测试结果。
图5密码读取软件界面
图6所示的是测试结果,在窗口下方的状态栏提示了测试密码位1234。
图6密码测试结果
4结束语
通过这种方法,我们测试出了程序读取保护的通讯协议,并通过编程实现这些协议以完成对plc密码的解除,已在c200he以及cpm1a等plc中测试正确。
在自动化控制领域,也可采用此种数据监视作为在线调试工具,把一些现场监控设备的工作命令及响应信息作完整的监视、分析,完成对某些未知协议的测定。
作者简介
谢鸿志男高级工程师,供职于中国电子科技集团公司第八研究所,一直从事光纤光缆专用设备以及光纤传感器研究。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 破解 PLC 密码