欢迎光临广州坤茂机电设备有限公司官网!
智能控制系统开发智能控制柜成套设备生产厂家-广州坤茂机电设备有限公司
全国咨询热线:13925047020
关键词:

PLC解密|信捷PLC解密教程方法详解

日期:2024-09-01 11:07:46 来源:广州坤茂机电设备有限公司 点击:418

免责声明:本贴仅适用于系统调试、忘记密码及程序备份等;严禁非法盗取别人商业秘密。一切法律责任由使用者承担!

信捷PLC的解密方法
捷PLC的解密具有一定的难度,很多人特别是新入门者,会觉得很难解。下面就分享一下笔者的一些经验,供大家参考。经笔者试验,信捷PLC在设计方面有几个漏洞,可以用于PLC解密。  先说软件方面的两个漏洞:  
第一, 在PLC已加密的情况下,如果最后一次PLC与电脑连接时,曾向PLC输入密码,在 退出软件前PLC是在线状态的,那么通过串口向PLC发送如下十六进制代码:
先发,  01 01 74 02 00 01 47 FA  
再发,  01 03 44 54 00 01 D1 2A
最后发,  01 03 44 0A 00 03 31 39   
这时PLC就会直接返回11个字节: 01 03 06 313233343536 C5 5C  
在这11个字节中,前3字节是地址和命令代码,最后2字节是CRC校验的高字节和低字节;从第4字节到第9字节,这6位就是密码了,可以直接对应ASCII码表翻译出来,如上面的31-36就是十进制的1-6,所以返回的密码就是123456。  

第二, 除了上面的漏洞,还有一个就是,可以通过试错来得到,  信捷的密码解除指令为:
01 03 40 0A 00 01 B1 CB   
发出这个指令与01 01 74 02 00 01 47 FA  都会访问密码,不过后者在返回密码后还会上传程序,前者只是单纯的解除密码。 在发出这个指令后,再发出如下指令
01 10 44 2C 00 03 06 * * * * * *# $
*表示十六进制的密码,#表示CRC校验的高字节,$表示CRC校验的低字节,这串代码需要用计算机自动发送,运气好的情况下,很快会返回密码。这个方法同样适用于三菱等PLC。

再谈谈硬件方面的漏洞:  先发张图看看,下面的图是信捷XC3-24RT-E的PLC的拆机照片

 
 
  1. 图中最上方的PLCC封装的芯片,是PLC的控制芯片。我们知道,在软件上PLC的组成 由系统程序和用户程序组成。系统程序有的也称自举程序,用户程序是用户也就是PLC使用者编写的程序。该块芯片内存放的,就是系统程序。  
    2. 图中下方右侧是一片单片机,它的作用是辅助主芯片进行系统方面的控制。  
    3. 图中下方左侧的一大一小两片芯片是存储用户程序的内存芯片,也就是说我们编写的 PLC控制程序都是存放在这里面的。  
    4. 其他的芯片,包括驱动芯片,通信芯片,运放等等与我们破解无关,就不细述了。

    在了解了以上内容后,大家会有疑惑了,PLC程序我们知道在哪里了,问题是密码在哪里呀?其实这个问题很简单,密码一般是放在内存中的,当然也有存放在主控芯片中的。但是无论哪种情况,主控芯片在初始化扫描程序的时候,一定会扫描自身的某个寄存器,这个寄存器存放的是一个标志,即程序有无加密的标志。如果该寄存器被置位(表示程序已加密),那么在运行上位机软件登录时就调用密码输入程序,反之则不进行密码输入程序的调用,直接调用用户程序。因此,一切的玄机都在这个神奇的寄存器中!  

    我们在无法改变这个特殊寄存器的值的情况下怎么办呢?怎么才能绕过密码读取程序呢?或者直接得到密码呢? 方法有两个:
    一,更换控制芯片,内存芯片不变,这时PLC的程序就可以直接读出来了;
    二,更换内存芯片,将内存芯片更换到另一块没有密码的板子上,亦可以直接读出程序。 以上就是此次介绍的利用漏洞破解信捷PLC密码的全部方法了! 除了以上的,当然还有一些其他的漏洞,在此就不分享了。  

    最后给诸位分享一组万能代码:31 35 32 37 39 31 39 35 31 39 31   使用串口工具发送模式,输入万能代码,然后在HEX/ASCII中切换至ASCII形式,将代码发送即可。
  2. 信捷的PLC密码保护形同虚设,可以读取EEPROM后,轻松的找到密码,密码在0758或者0858之后,只有6位。虽然也采用了二次加密,你看到的并不是真实的密码,但是密码算法简单粗暴,略微有点密码学知识的人一眼就能看出来。

    最难的就是保密下载了。这在解密业界也是一大难题,迄今为止还没有任何人能解决此问题。其难度在哪里呢?

    据我个人的研究,信捷保密下载采用了KEY密匙加密法。怎么个解释?保密下载后的文件是跟密码保护不一样的。保密下载后,cpu的系统存储区,会生成一个具体位数,大小不知道的密匙key文件。这个KEY会和EEPROM中的芯片数据发生运算,而得到CPU运行的真正代码,载入RAM。如果丢失了这个key,你初始化了plc,清空了PLC,就是你又还原了保存的EEPROM芯片文件,那也是无效的。为什么??KEY文件,钥匙丢了怎么开锁?怎么打开加密的数据呢?EEPROM的数据变成了无用的数据,毫无用处了,没了KEY谁都没有办法还原数据。

    上面的说法是你猜测还是有证据?对证据才是最重要的,才是科学的根本。有的人问我信捷的PLC你能解密吗?我说你的PLC加密了吗?⊙▂⊙这个我还真不知道,我猜肯定加密了!呵呵,要命吧!搞技术靠猜测。入正题,那么你说你有什么证据证明CPU内部藏有KEY密匙呢?你可以尝试复制、拷贝、克隆、仿造一台保密下载的信捷PLC,你不可能成功。有人会说我拷贝EEPROM芯片文件过去不就可以了吗??你可以试试,PLC会报警,然而没有保密下载,只有密码保护的,你就可以克隆,并且不会报警,说明了什么问题?key密匙起作用了。这个key密匙并不在EEPROM芯片中,你无法获取,他是存放在CPU内部的系统存储区的,如果你得到了这个KEY,问题就迎刃而解。这是解决保密下载的根本大法。我看了有人说保密下载分为两种方式存放,一种是供编程软件读取的,一种是供CPU读取的,保密下载只下载了供cpu读取的而没有下载供编程软件读取的,这是及其错误的说法,根本不是那么回事。

    综上所述,解决信捷PLC保密下载的根本出路在于找出隐藏在CPU系统内部的KEY密匙,找到了你就解决了,找不到,你再怎么折腾rom芯片都无用。
    信捷的PLC密码保护形同虚设,可以读取EEPROM后,轻松的找到密码,密码在0758或者0858之后,只有6位。虽然也采用了二次加密,你看到的并不是真实的密码,但是密码算法简单粗暴,略微有点密码学知识的人一眼就能看出来。

    最难的就是保密下载了。这在解密业界也是一大难题,迄今为止还没有任何人能解决此问题。其难度在哪里呢?

    据我个人的研究,信捷保密下载采用了KEY密匙加密法。怎么个解释?保密下载后的文件是跟密码保护不一样的。保密下载后,cpu的系统存储区,会生成一个具体位数,大小不知道的密匙key文件。这个KEY会和EEPROM中的芯片数据发生运算,而得到CPU运行的真正代码,载入RAM。如果丢失了这个key,你初始化了plc,清空了PLC,就是你又还原了保存的EEPROM芯片文件,那也是无效的。为什么??KEY文件,钥匙丢了怎么开锁?怎么打开加密的数据呢?EEPROM的数据变成了无用的数据,毫无用处了,没了KEY谁都没有办法还原数据。

    上面的说法是你猜测还是有证据?对证据才是最重要的,才是科学的根本。有的人问我信捷的PLC你能解密吗?我说你的PLC加密了吗?⊙▂⊙这个我还真不知道,我猜肯定加密了!呵呵,要命吧!搞技术靠猜测。入正题,那么你说你有什么证据证明CPU内部藏有KEY密匙呢?你可以尝试复制、拷贝、克隆、仿造一台保密下载的信捷PLC,你不可能成功。有人会说我拷贝EEPROM芯片文件过去不就可以了吗??你可以试试,PLC会报警,然而没有保密下载,只有密码保护的,你就可以克隆,并且不会报警,说明了什么问题?key密匙起作用了。这个key密匙并不在EEPROM芯片中,你无法获取,他是存放在CPU内部的系统存储区的,如果你得到了这个KEY,问题就迎刃而解。这是解决保密下载的根本大法。我看了有人说保密下载分为两种方式存放,一种是供编程软件读取的,一种是供CPU读取的,保密下载只下载了供cpu读取的而没有下载供编程软件读取的,这是及其错误的说法,根本不是那么回事。

    综上所述,解决信捷PLC保密下载的根本出路在于找出隐藏在CPU系统内部的KEY密匙,找到了你就解决了,找不到,你再怎么折腾rom芯片都无用。



技术支持:  13925047020(微信同号),可协助上门调试!