TDA2030功放电路图 电动车充电器电路图 电子电路 功放电路 电子制作 集成块资料 电子报 pcb 变压器 元器件知识 逆变器电路图 电路图 开关电源电路图 传感器技术 led 电磁兼容
电子电路图
当前位置: 首页 > 电子电路 > 电子基础

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

时间:2012-07-26 12:26:20来源:原创 作者:admin 点击:

介绍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/dz/21/plc_85.shtml


本文标签:


.
顶一下
0%
返回首页
0
0%

------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
表情:
名称: E-mail: 验证码: 匿名发表
发布文章,推广自己产品。
热门标签