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内部实现密码的比较,提示密码输入是否正确。

图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中测试正确。在自动化控制领域,也可采用此种数据监视作为在线调试工具,把一些现场监控设备的工作命令及响应信息作完整的监视、分析,完成对某些未知协议的测定。
西门子代理商,西门子模块代理商,西门子一级代理商,西门子PLC代理,西门子中国代理商