仪器网

欢迎您: 免费注册 仪器双拼网址:www.yiqi.com
首页-资讯-资料-产品-求购-招标-品牌-展会-行业应用-社区-供应商手机版
官方微信
中国仪器网资料中心
仪器网/ 技术资料/ 产品资料/ 分析仪器/LIMS/软件/软件/ 三菱 PLC 解密

三菱 PLC 解密

上传人: 德国克拉赫特(上海)有限公司 |大小:1.91MB|浏览:10133次|时间:2018-12-31
三菱 PLC 解密
文档简介

三菱PLC三菱PLCFX3U解密研究Zxin进展我是从2010年5月26日开始研究FX3U解密,查遍网络找不到只言半语,看来FX3U解密没人研究,或者研究的人怕人家学,竟然找不到一丁点有用的信息。看来只有靠自力更生了。虽然目前已经研究成功了FX3U解密,免拆机的,读出正确程序和参数,包括禁止上载的问题也能读出正确程序和参数。但我还是想把当时研究解密的过程整理出来,供有兴趣的朋友参考,我这里所讲的过程也是我实践研究的过程,这当中也难免要走弯路的。但Z终是要通往成功的大道的。其实没必要搞得这么神秘,PLC解密没那么复杂。1、三菱PLCFX3U用的编程软件必须采用GXDeveloper8.10以上的版本,我是从网上下载个GXDeveloperVersion8.52E就可以支持FX3U的编程。启动GXDeveloper,从帮助菜单就可以看到编程软件的版本号,如下图所示。从工程菜单,创建新工程,PLC系列中选择FXCPU,PLC类型中选FX3U(C)就可以对FX3U进行编程的各种操作。2、FX3U的加密方法是:打开GXDeveloper后从菜单"在线》登录关键字》新建登录,改变....."进入,显示如下界面:FX3U可以设置两个密码,即关键字和第2关键字,每个有8个字符(字符只能是0-F共16个16进制的字符),这样说明如果两个关键字都设定的话密码总共有16个字符。这样可以组合多少种密码呢,即16^16=18446744073709551616.这是个天文数字,有人想要用穷举法解密,那是不可能的。3、首先随便编个测试程序,不加密,两个关键字都不设定,写入FX3U,然后用FXWIN软件选取FX2N型号读出程式,竟然能读出正确的程序来。相信三菱FXPLC的FXWIN程软件大家应该很熟悉了。界面如下所示:用自编的FX三菱解密软件连线显示,FX3UPLC竟然显示成FX2N版本号为2.41,说明FX3U是FX2N的高级版本。4、继续测试,用GXDeveloper只设定第1关键字,第2关键字为空。用自编的FX三菱解密软件(可解FX0N、1N、2N、1S、FX2),进行解密。竟然解出密码来。按FX2N型号进行下载也能下载程序,说明当只设一个关键字的时候,FX3U加密机制和FX2N的是一模一样的。CP1H解密FX3U解密FX3G解密FPX解密CP1E解密13682291256CJ1M解密CP1Eusb口解密MT6000解密MT8000解密GOT1000解密看看我的FX解密软件:5、继续测试,用GXDeveloper同时设定第1关键字,第2关键字。这时用老的解密软件解不出来了,用老的编程软件FXGP-WIN-C,企图读入程序,显示通信错误。6、看来只有祭出法宝了,那就是PLC解密通用的法宝串口监控软件。先启用串口监控软件,设置好开始监控,然后运行编程软件。注意顺序要搞对喔。从菜单-》在线-》传输设置,进入传输设置界面,然后“按通信测试”键,显示CPU类型为FX3U,通信成功。此时从串口监控到的数据是:#TimeFunctionData(Hex)1[00000000]IRP_MJ_CREATEPortOpened-Gppw.exe2[00000000]IOCTL_SERIAL_SET_BAUD_RATEBaudRate:1152003[00000000]IOCTL_SERIAL_SET_LINE_CONTROLStopBits:1,Parity:Even,DataBits:74[00000001]IRP_MJ_WRITELength:0001,Data:055[00000002]IRP_MJ_READLength:0001,Data:066[00000002]IRP_MJ_WRITELength:0011,Data:02303045303230320336437[00000003]IRP_MJ_READLength:0001,Data:028[00000003]IRP_MJ_READLength:0001,Data:429[00000003]IRP_MJ_READLength:0001,Data:3110[00000003]IRP_MJ_READLength:0001,Data:3511[00000003]IRP_MJ_READLength:0001,Data:4512[00000003]IRP_MJ_READLength:0001,Data:0313[00000003]IRP_MJ_READLength:0001,Data:4614[00000003]IRP_MJ_READLength:0001,Data:3015[00000004]IRP_MJ_WRITELength:0011,Data:023030454341303203384516[00000004]IRP_MJ_READLength:0001,Data:0217[00000004]IRP_MJ_READLength:0001,Data:3718[00000004]IRP_MJ_READLength:0001,Data:3119[00000004]IRP_MJ_READLength:0001,Data:3320[00000004]IRP_MJ_READLength:0001,Data:4621[00000004]IRP_MJ_READLength:0001,Data:0322[00000004]IRP_MJ_READLength:0001,Data:4523[00000004]IRP_MJ_READLength:0001,Data:3424[00000005]IRP_MJ_WRITELength:0011,Data:023030453032303203364325[00000006]IRP_MJ_READLength:0001,Data:0226[00000006]IRP_MJ_READLength:0001,Data:4227[00000006]IRP_MJ_READLength:0001,Data:3128[00000006]IRP_MJ_READLength:0001,Data:3529[00000006]IRP_MJ_READLength:0001,Data:4530[00000006]IRP_MJ_READLength:0001,Data:0331[00000006]IRP_MJ_READLength:0001,Data:4632[00000006]IRP_MJ_READLength:0001,Data:3033[00000006]IRP_MJ_WRITELength:0011,Data:023030454341303203384534[00000007]IRP_MJ_READLength:0001,Data:0235[00000007]IRP_MJ_READLength:0001,Data:3736[00000007]IRP_MJ_READLength:0001,Data:3137[00000007]IRP_MJ_READLength:0001,Data:3338[00000007]IRP_MJ_READLength:0001,Data:4639[00000007]IRP_MJ_READLength:0001,Data:0340[00000007]IRP_MJ_READLength:0001,Data:4541[00000007]IRP_MJ_READLength:0001,Data:3442[00000015]IRP_MJ_CLOSEPortClosed开始花大量时间来分析这些数据吧。上述从串口监控到的数据是十六进制的数据,还真不好看,先转换成ASC码,就好看多了。#TimeFunctionData(String)1[00000000]IRP_MJ_CREATEPortOpened-Gppw.exe2[00000000]IOCTL_SERIAL_SET_BAUD_RATEBaudRate:1152003[00000000]IOCTL_SERIAL_SET_LINE_CONTROLStopBits:1,Parity:Even,DataBits:74[00000001]IRP_MJ_WRITELength:0001,Data:5[00000002]IRP_MJ_READLength:0001,Data:6[00000002]IRP_MJ_WRITELength:0011,Data:00E02026C7[00000003]IRP_MJ_READLength:0001,Data:8[00000003]IRP_MJ_READLength:0001,Data:B9[00000003]IRP_MJ_READLength:0001,Data:110[00000003]IRP_MJ_READLength:0001,Data:511[00000003]IRP_MJ_READLength:0001,Data:E12[00000003]IRP_MJ_READLength:0001,Data:13[00000003]IRP_MJ_READLength:0001,Data:F14[00000003]IRP_MJ_READLength:0001,Data:015[00000004]IRP_MJ_WRITELength:0011,Data:00ECA028E16[00000004]IRP_MJ_READLength:0001,Data:17[00000004]IRP_MJ_READLength:0001,Data:718[00000004]IRP_MJ_READLength:0001,Data:119[00000004]IRP_MJ_READLength:0001,Data:320[00000004]IRP_MJ_READLength:0001,Data:F21[00000004]IRP_MJ_READLength:0001,Data:22[00000004]IRP_MJ_READLength:0001,Data:E23[00000004]IRP_MJ_READLength:0001,Data:424[00000005]IRP_MJ_WRITELength:0011,Data:00E02026C25[00000006]IRP_MJ_READLength:0001,Data:26[00000006]IRP_MJ_READLength:0001,Data:B27[00000006]IRP_MJ_READLength:0001,Data:128[00000006]IRP_MJ_READLength:0001,Data:529[00000006]IRP_MJ_READLength:0001,Data:E30[00000006]IRP_MJ_READLength:0001,Data:31[00000006]IRP_MJ_READLength:0001,Data:F32[00000006]IRP_MJ_READLength:0001,Data:033[00000006]IRP_MJ_WRITELength:0011,Data:00ECA028E34[00000007]IRP_MJ_READLength:0001,Data:35[00000007]IRP_MJ_READLength:0001,Data:736[00000007]IRP_MJ_READLength:0001,Data:137[00000007]IRP_MJ_READLength:0001,Data:338[00000007]IRP_MJ_READLength:0001,Data:F39[00000007]IRP_MJ_READLength:0001,Data:40[00000007]IRP_MJ_READLength:0001,Data:E41[00000007]IRP_MJ_READLength:0001,Data:442[00000015]IRP_MJ_CLOSEPortClosed从上面数据看到,其实只有四个回合的数据通信,其中还有两个回合是一模一样的重复的数据。分析如下:电脑发:00E0202’查询D8001的值PLC回:B15E‘回复为5EB1,回复的数据高位在后、低位在前,所以要对调个位,5EB1转为10进数据值为:24241,24表示PLC型号FX2N或3U,241表示版本号电脑发:00ECA02码’查询D8101的值PLC回:713F‘回复为3F71转为10进数据值为:16241,16表示PLC型号为FX3U,241表示版本号以上这一大段数据也就是编程软件查询一下PLC的型号,以便接下来按相应的通迅协议进行通迅。7、接下来就编个简单的程序,从PLC上载程序,对上载过程的数据交换进行监控,现抄录如下:一次完整的FX3U上载程序的数据这上面我标明了通迅协议的注释,明眼人一看就明白PLC上载参数和上载程序采用的命令协议是什么。这上载参数与程序的过程中有一大段是先读取D区的数据,关于这些D区数据的意思在GX-D里有说明,我也整理出来,有助于大家理解这些参数的意义。到了这一步,我停了好长一段时间没有研究,因为解密有时是要靠灵感的,没有灵感是没办法找到解密方法的。Zxin资料请浏览:http://www.200plc.cn经过大概半年左右,有个解密的同行,一起再探讨此事时说能不能用我们当时解松下FPX的方法试一下FX3U,于是又是几个不眠之夜,终于搞定了,可以上载程序和参数,可是当时只能是拆机。但是灵感一旦涌现,就会像泉水一样源源不断,一个又一个的设想,一次又一次的测试,终于wan美搞定FX3U解密。程序、参数、内存全部OK。上面的通迅数据中好好研究就有解密的命令喔。CP1H解密FX3U解密FX3G解密FPX解密CP1E解密13682291256CJ1M解密CP1Eusb口解密MT6000解密MT8000解密GOT1000解密NEWCP1HCP1ECP1L解密:全国duchuangCP1H解密直读密码所以不存在V1.2版本的功能块被删的问题是目前Z安全的解密方式。网上目前还没有查到能直读密码的。NEWFX3UFX3UCFX3G解密:通过协议解FX3U系列PLC密码免拆机可以在机台上直接解密安全可靠也是当前PLC解密界比较好的解密方法。包括Zxin的禁止上传的解密。NEWFPXFPG解密:能原始算出密码解决禁止上载的问题保证不破坏原程序和内存(FP-X,FPG等,包括禁止上载)。NEW台达EH2ES2解密台达EH2ES2等高加密产品NEWKoyo(光洋)解密光洋SHSH1SMSM1SNSZSUSRDL-305DL-05DL-06系列PLC解密。NEW艾默生PLC解密EC10EC20系列等NEW欧姆龙PLC解密CQM1HCJ1MCJ1GCJ1HCS1DCS1GCS1HCP1LCP1HCP1E解密NEW松下GT高加密屏GT-01GT-32等NEW三菱GOT1000解密GOT1000全系列解密NEW维纶通触摸屏解密MT6000解密MT8000解密MT6056解密MT6070解密MT8070解密MT6100解密MT8100解密MT8104解密人机界面解密NEW三菱Q系列解密Q00,Q01,Q00J,Q02,Q02H,Q06H,12H等欧姆龙CP1H解密、CP1EUSB口解密以及OMRONCP系列PLC加密方式的交流欧姆龙CP1H解密、CP1E解密用232口进行的早就是已经是公开的秘密,USB口的解密现在还是凤毛麟角,从网上有人号称“国内首chuangUSB解密“,到我今天能用USB口解密仅用14天时间,一开始我想从先行者那了解相关情况,遇到的都是技术封锁,经过充分研究后,我现在透露,其实USB解密与232解密是一模一样的原理。USB发送的命令其实在232口解密研究时,我就研究过,大家先看看下面这个多年前我写的的一个软件界面,用于时序恢复的。因为多年前研究的sysway协议与ToolBus协议在我的软件里早就有了,校验,命令格式,早就熟悉了,现在一看USB口是同样的道理,都没有太大变化就不在活下。下面上个USB口数据的截图,内行的工控人士一看就明白了。USB传送的数据:下图是关于OMRONUSB口的参数说明的截图:有了上面参数,你再研究一下USB原理关于URB、IRP、BLUK/INT、STAK、SUBMIT_URB的说明。当然还是离不开下面这个软件:只要你弄清楚这些,那么USB接口解密你就不在话下了。CP1H、CJM1、232口解密并直读密码,是我较早发布的,还找不到其他有人声称直读密码,现在,只有USB口的PLC我先试了不要密码的解密方法已成功了,同样也能读出密码,读出密码有什么好处呢,一是可能绕过功能块,解密安全可靠,另外,当你有多台同一个编程员编的程序,那么密码相同的可能性是80%,同时触摸屏的密码也往往和PLC一样。这样搞定一台就等于搞定全部。何乐而不为呢。Z近经常有初学者在网上询问关于如何对OMRONCP、CJ、CS系列PLC程序加密保护的问题,下面就这个问题,我们以CP1H为例共同来探讨一下,其他型号是一样的道理的。首先,一个PLC的加密程度,以及破解的难易程度,已经在一定程度影响到PLC销售的市场份额了,特别是近几年这个现象越来越明显了,特别是小型机的销售的影响,所以几大PLC品牌厂商也在玩起加密的猫捉老鼠游戏来了,比如这个CP1系统的PLC能加多少种密码呢,细细数来有5个级别的加密。而且加密的复杂程度比当年CPM系列产品成几何级别的增加。我们再来看看这5个级别的加密是什么呢,在CXP编程软件中这5种加密称为UM密、任务密,功能块密,禁止传送程到储存卡,禁止覆盖,其中前三个加密方式是采用密码加密,后两个加密是采用标志加密的。下面分析一下这5种密的作用以及如何操作,对一个已加密的PLC我们判定加密情况的方法。OMRONPLC编程软件目前要数CXP功能Z全,也是国内工控人用的Z多的软件,在这软件之前,我是从当年LLS编程软件用起的,到后来SSS编程软件,这是一个中文的界面了,再来就是CPT可能就好多人知晓了,这当中还有用过SYSWIN编程软件,是从欧洲老外那得到了,功能比国内流行的CPT好,再来就是这个CXP,CXP的全称是CX-Programer,我用到的目前版本是9.2,有没有再高版本我不晓的了。闲话少说,启动CXP吧!下面这个界面大家肯定很熟悉,这是直接点击一个CXP文件,CXP就直接关连打开到这个界面,我这里是打开了一个叫N多段速cp1h.cxp文件。默认情况下CXP左边这个窗口称工作区,右边这个窗口我不晓得,就叫它工作子区,下面的那个窗口叫输出。在工作区窗口里有个新工程,新工程下面有个新PLC1,右击新PLC1,有个弹出菜单,弹出菜单Z下面有个"属性(o)"菜单。单击"属性(o)"菜单,在PLC属性界面,选择“保护”选项卡,我们来到了加密设置的地方。如下图。在这里你可以设UM读取密码,密码设置是8个字符,字符可以是0-9,a-z,A-Z。任务读保护密码,同样密码设置是8个字符,字符可以是0-9,a-z,A-Z。禁止存入内存卡和从PLC传送程序,可以选择V或不选择。禁止覆盖受保护程序,可以选择V或不选择。看下图,是全部选择加密的Z高等级了。设定好退出,必须按按CXP软件中工具栏PLC设置保护到PLC还有如下几项细节必须注意。1、设置密码有离线和在线两个情况。离线状态下,执行,这时是保护程序的任务密,只在保护电脑里的文件,并没有保护到PLC里,离线状态下,按下CPX程序中有加任务保护的程序段就被锁保护起来,看不到程序图了。没有任务保护的程序段就不加锁。如下图所示为什么有的程序加锁有的不加锁呢,这是在CP、CJ、CS这些新型OMRONPLC中引入了任务的概念。我们一起来看看CP1的编程手册上怎么讲的:在CP1中,可以将程序按功能、控制对象、工序、开发者等进行划分,分割为称为「任务」的执行单位,可将用户程序结构化。因此具有以下优点。1.可将程序分割由多人共同开发。2.可将程序作为模块实现标准化。3.提高总体的响应性能。4.修正调试更加简便。5.程序的内务处理变得容易。6.用户程序的理解变得容易。CP1系列PLCZda能管理288个任务程序。其中周期执行任务32个(NO.0-31),中断任务256个(NO.0-255)CPU单元对周期执行任务按其编号由小到大的顺序执行。当发生中断原因时,中止该任务的执行改而执行中断任务。之后再执行被中止的任务。上例中新程序1(00)就是周期执行任务0也叫循环任务0,新程序2(01)就是循环任务1,如果要对任务加密保护就必须右击该程序名》属性》保护》选定任务读保护,对于没有选定任务读保护的程序,当在离线执行时,该程序就不加锁,选定任务读保护的程序,该程序就加锁。加锁后程序就看不到。同时PLC属性》保护中的任务密也就成星号。保存后再打开,也看不到具体的任务密。在线状态下,执行,这时保护PLC内部程序的UM密和任务密,UM密是首先被激发的,任务密加载前提条件是PLC里面的任务必须有选定任务读保护,也就是下载过任务读保护的任务,如果下载的是没有选定任务读保护,那么在线状态下,执行,将提示无法加密任务密,必须重新下载有任务保护的程序。2、UM密码和任务密Z多可以设8位字符,包括0-9的数字,a-Z,26个字母分大小写不一样,加载了UM密,PLC里面的程序就被保护,没有解除密码,PLC程序将无法上载。加载了任务密后,PLC程序即使上载了,也会在程序中显示加锁状态,不能看到程序。3、设置禁止存入内存卡和从PLC传送程序和禁止覆盖受保护程序,必须程序重新传送到PLC一次,才能生效。关于禁止存入内存卡和从PLC传送程序说明,经常有人问内存卡什么样,什么型号,装在哪里呢。OMRON储存卡型号是:CP1W-ME05M什么样子,我上个图,你就明白了。CP1W-ME05M是容量为8M的储存卡。如果没有勾选“禁止存入内存卡”,那么PLC的程序可以传送到储存卡里备份,当PLC已经设置了UM密、任务密,传送到储存卡里的程序同样会有UM密、任务密,如果勾选设置“禁止存入内存卡”,那么PLC的程序就不可以传送到卡里备份。关于禁止覆盖受保护程序说明,如果没有勾选“禁止覆盖受保护程序”,那么如果想清除PLC的程序,可以从PLC的菜单选择清除PLC,或者传送一个空白程序到PLC中,当勾选“禁止覆盖受保护程序”,同时PLC又有UM密、任务密时,没有解除密码前就清除不了PLC里的程序,想用一个新的程序覆盖也不行,就是禁止写入的意思。当采用这种“禁止覆盖受保护程序”时,如果你忘记了密码,又没有空白的储存卡,那就非常非常麻烦了,你就是想把程序清空都难。这时只有一个办法,突然灵感一动想起密码,哈哈,用储存卡清除禁止覆盖受保护程序,是把储存卡里的程序在PLC通电一瞬间传入覆盖PLC程序,当然原程序就变没有了,储存卡里的程序**是空白的,这样就清除了,如果储存卡里的程序是有密码的和禁止覆盖,那么传送后仍旧是禁止覆盖和加密的。还有一种选择就是能够对禁止覆盖的PLC程序进行恢复,如果你想得到加密的密码,同样我们能帮你找到,至于方法嘛,我们的方法是duchuang的,解密软件也是专用的,不会轻易传播,请您见谅,我们只提供单次解密的服务。对于V1。2版本的功能块也不会影响。功能块密又是怎能回事呢,首先,我们要理解什么是功能块,功能块就相当于我们编程中的函数,在功能块中定义好输入输出和变量,然后通过功能块编程,使的功能块具有一定的功能,在主程序中,就按需要在多处调用功能块,使之产生同样的功能,当然象函数可以给定变量不同的值,产生的输出就不同。功能块具有很好的移植性能,为了保护功能块的程序,可以单独对每个功能块加密,密码是4个字符,加了密的功能块,就看不到功能块程序了。下面谈谈,对于一个加密了的CP1PLC如何判断是加了那些密码呢,CP1H操作说明书是这样说的:我总结如下,你查一下A99的值,对照下面说明就一目了然。A99说明:A99=0001表示有UM密0002表示有任务密0003表示有UM密+任务密0004表示有禁止覆盖0005表示有UM密+禁止覆盖0006表示有任务密+禁止覆盖0007表示有UM密+任务密+禁止覆盖0008表示有禁止向卡传送0009表示有UM密+禁止向卡传送000A表示有任务密+禁止向卡传送000B表示有UM密+任务密+禁止向卡传送000C表示有禁止覆盖+禁止向卡传送000D表示有UM密+禁止覆盖+禁止向卡传送000E表示有任务密+禁止覆盖+禁止向卡传送000F表示有UM密+任务密+禁止覆盖+禁止向卡传送100X:X是参考上述的说明,Z高位为1表示不允许解除UM密200X:Z高位为2表示不允许解除TK密300X:Z高位为3表示不允许解除UM+TK密
标签:

您可能感兴趣的资料
立即上传
该会员其他文档
相关其他文档
看过此文档还看过
X您尚未登录
账号登录
X您尚未登录
手机动态密码登录
X您尚未登录
扫码登录
在线留言
官方微信

仪器网微信服务号

扫码获取最新信息


仪器网官方订阅号

扫码获取最新信息

在线客服

咨询客服

在线客服
工作日:  9:00-18:00
联系客服 企业专属客服
电话客服:  400-822-6768
工作日:  9:00-18:00
订阅商机

仪采招微信公众号

采购信息一键获取海量商机轻松掌控