网页数据加载中,请稍等...
电子电路网,电子电路图网 容源电子网欢迎你!
您的位置:电子电路图网首页>电子电路>电子基础>>介绍PLC可编程控制器密码破解程序
基础知识设计编程电源电路材料知识家用电器其他文章元器件知识集成块资料变压器电磁兼容振荡电路稳压电源开关电源电路图磁性材料LED逆变器电器维修传感器技术音响电路报警器电路工作原理在线计算工具PCBups电子报电子制作功放电路电子电路

介绍PLC可编程控制器密码破解程序

关键词:PLC 来源:原创 点击:

介绍PLC可编程控制器密码破解程序   <<版权声明:本文由容源电子网(www.dziuu.com)整理提供,部分内容来源于网络,如有侵犯到你的权利请与我们联系更正。》



朋友拿回来个plc,他们工作上用那控制电器柜里的变频器,里面要输程序(通过串口com1),每次找人家都要收费,而且程序是加密地,没密码导不出来,我觉定来个破解,找了很久破解工具,都是要汇款才行,自力更生把,看了不久的vb,就来编个程序吧,时间有限,经历有限,一个星期的测试,终于知道了破解方法。先说下思路把::    <<版权声明:本文由容源电子网(www.dziuu.com)整理提供,部分内容来源于网络,如有侵犯到你的权利请与我们联系更正。》




   我是在台达的plc上测试的,条件有限,没有测试种类,但方法差不多    <<版权声明:本文由容源电子网(www.dziuu.com)整理提供,部分内容来源于网络,如有侵犯到你的权利请与我们联系更正。》




  通过com1进行串口通讯,当输入密码后pc向plc发出加密过的数据,plc返回数据进行比对是否一致,错误则跳转到错误提示,破解有两个途径,密码比对是在pc端进行的,可以通过汇编把那个通信软件改了当比对时跳转导正确地址,但程序太多的控件,找不到内存的跳转地址(还是本人的水平问题),但汇编发现大概是在0045210E    地址处,这种方法不太可行,也请通过此法研究的朋友和我交流    <<版权声明:本文由容源电子网(www.dziuu.com)整理提供,部分内容来源于网络,如有侵犯到你的权利请与我们联系更正。》




 第二种方法也我试验成功的,通过对返回数据的解密来得到密码,我测试的工具是串口精灵,通过无数次的分析本人知道了加密的方式
 例:随便输入密码后收到的数据为
3A 30 31 30 33 30 32 34 34 35 35 36 31 0D 0A 3A 30 31 30 31 30 31 32 
44 44 30 0D 0A 3A 30 31 30 33 30 34 33 31 33 31 33 31 33 31 33 34 0D 0A    <<版权声明:本文由容源电子网(www.dziuu.com)整理提供,部分内容来源于网络,如有侵犯到你的权利请与我们联系更正。》




可以看出有的规律,从红色的3a即最后一个,后数12位开始,去两个数为一组,取八组即33 31 33 31 33 31 33 31  是在hex下,把这组数据按ASCII码转换为字符,得到31313131,再按hex----ASCII的方式转换一次,得到明文密码,1111,密码不同,解不同,
这样做太麻烦了,写个程序,用vb完成。我刚看了基本vb的书,还不太熟悉程序还没做完,只做了通信部分的代码
我会尽快做完并在博客发布    <<版权声明:本文由容源电子网(www.dziuu.com)整理提供,部分内容来源于网络,如有侵犯到你的权利请与我们联系更正。》




先在窗体中加入MSComm控件,在部件中引用,迷你版的vb没有,可以下载该控件并注册,
Option Explicit’强制变量声明
Private Sub Command1_Click()’按钮单击事件
MSComm1.PortOpen =ture ’关闭串口
MSComm1.CommPort = 1 ’设置串口为com1
MSComm1.Settings = "9600,n,8,1" ’通讯参数 波特率 奇偶校验 数据位 停止位
MSComm1.InputMode = comInputModeBinary ’二进制接收
MSComm1.InBufferCount = 0 ’清空接收缓冲区
MSComm1.RThreshold = 1 ’缓冲区中接收到一个字符,就产生一次OnComm事件
End Sub    <<版权声明:本文由容源电子网(www.dziuu.com)整理提供,部分内容来源于网络,如有侵犯到你的权利请与我们联系更正。》




Private Sub MSComm1_OnComm() ’有数据传送时触发
Dim w As Variant’定义变量
Dim a,b,c As Byte’定义字节数组
Select Case MSComm1.CommEvent ’’CommEvent属性:返回最近的通讯事件或错误。通过对它具体属性值的查询,我们就可以获得通讯事件和通 讯错误的完整信息。当其值是comEvReceive时表示接收到数据。    <<版权声明:本文由容源电子网(www.dziuu.com)整理提供,部分内容来源于网络,如有侵犯到你的权利请与我们联系更正。》




Case comEvReceive ’有接收事件
w = MSComm1.Input ’接收到的数据存放到indata里
a = AscB(indata) ’返回indata的值
MSComm1.InBufferCount = 0’ 清空接收缓冲区
End Select
End Sub   <<版权声明:本文由容源电子网(www.dziuu.com)整理提供,部分内容来源于网络,如有侵犯到你的权利请与我们联系更正。》



>> 转载请注明出处并保留链接。http://www.dziuu.com
***page***
编辑:管理员 时间:2012-7


复制本文地址及标题在本地打印该网页】 【我要发表文章】 【返回上一页


分类栏目

热门文章

论坛新贴

 
关于我们
新闻中心广告服务联系我们意见反馈访客留言网站地图
声明:本站部分内容来源于网络,如有侵犯到你的权利请与我们联系更正,本站资料仅供参考;供电子技术爱好者参考交流,实际应用,请慎重;关键词:电路图电子技术资料
广告服务QQ:316520686        广告热线:15183821233
容源电子网(http://www.dziuu.com)  蜀ICP备09038079号