破解PLC密码

采用软件侦听法解除Omron PLC读取保护

1 引言

随着自动化控制技术的发展,plc在工业过程控制领域中发挥着越来越重要的作用。omron plc在各种机器设备上应用较为广泛,设置了plc程序读取加密保护的设备出现问题时,设备制造商由于倒闭或其它原因,往往不能提供密码,无法及时监控程序、分析故障原因,给设备故障的分析、解决带来很大的不便。另外,一但plc的模拟量或数字量输入、输出端口损坏,即使模块有备用通道,由于程序加密无法修改,也只能整体更换相应模块,增加了设备的维护成本,给设备维护工作带来很大不便。

为了解决加密保护设备的质保后期生命周期管理问题,我们可以通过串口监测软件对omron plc与plc编程软件进行密码输入与输出时的串行通讯数据进行监视、拦截通讯帧,再对通讯帧进行对比分析,反复实验,可以实现对plc内部保留协议的侦听测定;再使用vb等编程软件采用枚举法编制程序获取密码。

2 监测的原理和方法

2.1 监测通讯硬件基础

串行通讯端口(serial communication port)在控制系统中一直占有极重要的地位,主要有

rs232和rs485两种通讯方式。现在的计算机上广泛采用的是美国电子工业协会eia(elect -ronic industry association)制定的rs232c串行物理接口标准,rs是英文“推荐标准”的缩写,232为标识号,c表示修改次数。对于一般双工通信,仅需几条信号线就可实现,如一条发送线、一条接收线及一条地线,同时具有两个方向的传输能力是“全双工”(double duplex)的数据传输。目前,大多数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所示。

破解PLC密码

图1 串口监控软件界面

两种检测方法,方法1比较通用,但需要分别测定pc的命令帧及plc的响应帧后,再综合进行分析,当通讯数据较多时,操作较为繁琐。而方法2测定的命令帧和响应帧可按照通讯顺序依次排列,操作简单方便,可以直观地看出数据的流向便于分析协议,在本文中相关测试采用采用方法2进行数据监视。

3 测定omron plc内部保留通讯协议的实例

3.1 omron plc通讯协议格式

本次测试使用的是c200he plc,它是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的数据交换过程。

破解PLC密码

图2 与plc通讯流程图

3.2 omron plc程序读取加密保护

fun49是专门用于对omron plc程序进行读取加密保护的特殊指令,一般在程序的第一行,用常开的ar1001触发fun49 0 0 #1234这条指令,fun49前面的两个操作数固定为0,#后面就是四位密码,传送到plc中,plc重新上电时有效。<此处内容被屏蔽>,可以在编程软件cxp3.0的菜单条plc下→保护→释放密码→然后输入密码就可以了,如图3所示。

破解PLC密码

图3 plc读取保护设置

3.3 通讯数据截获及分析

运行omron plc编程软件cxp -3.0,按照实验选用的plc型号建立工程,按照3.2所述进行omron plc程序读取加密保护;运行串口侦测软件,先选择要监测的与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内部实现密码的比较,提示密码输入是否正确。

破解PLC密码

图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程序是否处于读取保护状态;若处于读取保护状态,则可以自动依次发送密码进行测试,直至密码正确,软件停止测试,显示密码测试结果。

破解PLC密码

图5 密码读取软件界面

图6所示的是测试结果,在窗口下方的状态栏提示了测试密码位1234。

破解PLC密码

图6 密码测试结果

4 结束语

通过这种方法,我们测试出了程序读取保护的通讯协议,并通过编程实现这些协议以完成对

plc密码的解除,已在c200he以及cpm1a等plc中测试正确。在自动化控制领域,也可采用此种数据监视作为在线调试工具,把一些现场监控设备的工作命令及响应信息作完整的监视、分析,完成对某些未知协议的测定。

作者简介

谢鸿志男高级工程师,供职于中国电子科技集团公司第八研究所,一直从事光纤光缆专用设备以及光纤传感器研究。

破解PLC密码

破解PLC密码

相关文档