|
素材1:你需要拥有一个BIN文件编辑器,还没有的我推荐大家使用绿色汉化版本的WinHex
素材2:本文样例采用台达WPL Soft 2.42版本编程软件,如果您的版本较低请下载更新.forum.php?mod=viewthread&tid=93&extra=page%3D1
素材3:台达WPL Soft 2.42版编辑的EH2系列样例文件,在此下载:
用WinHex打开样例文件,如下图所示:
所有型号的文件,在5E--61位置,4位数据就是这个程序的KEY钥匙。用这个钥匙可以打开密码,没有了这个钥匙就是编程软件也不知道密码是多少。钥匙只有4位,不可能打开8位的识别码,要转换成8位,如下:
key(1) = FB'钥匙
key(2) = FB
key(3) = 6A
key(4) = 6A
key(5) = DB
key(6) = DB
key(7) = 03
key(8) = 03
下面我们来到7D00位置,恍然大悟,所有的密码都集中在这里了,遗憾不是明码,需要钥匙来打开此密码,少说上图:
sbm(1) = C8 '识别码
sbm(2) = C8
sbm(3) = 37
sbm(4) = 37
sbm(5) = A8
sbm(6) = A8
sbm(7) = D0
sbm(8) = D0
zc(1) = C7'子程序密码
zc(2) = C7
zc(3) = 36
zc(4) = 36
zc(5) = A7
zc(6) = A7
zc(7) = CF
zc(8) = CF
xm(1) = C9 '项目密码
xm(2) = C9
xm(3) = 38
xm(4) = 38
好了,所有的密码我们都精确定位好了,就可以开始计算了,下面看计算公式:
识别码(i) = (256 + key(i) - sbm(i) - 1) Mod 256
我知道很多人都已经知道公式,做出软件了,但是你看到的这个公式绝对和你的不一样,不是吗?前面多了个256,后面多了个256,这是为避免出现负数而设计的,前面多加了,后面自然要去掉,如果你想快捷的记忆理解只要这样key(i) - sbm(i) - 1就可以了。你手工计算的时候前后两个256也可以忽略,加上也行。
那么你打开你的计算器,设置16进制,输入100,为什么是100?10进制的256就是16进制的100,100+FB-C8-1得出的数是132,然后你按下计算器的 Mod 键,输入100,按=号,出现了32,这就是密码,还有基础低的,说这哪里像密码了?这是ASC码,查表可以得到,上传一张ASC码表
第二位密码相同,下面再开始第三位识别码的计算100+第三位钥匙6A-第三位识别码37-1=132 Mod 100=32 查ASC码表为字符 2,以此类推,8位密码算法完全相同。
下面看子程序的密码计算方式:
子程序密码(i)= (256 + sbm(i) + s(i) - zc(i)) Mod 256
s(i)为上面计算出来的识别码的ASC码数值32,那么我们具体算一下第一位子程序密码的数值是多少,100+C8+32-C7=133 Mod 100=33 查表为 3,后面7位密码你自己算吧!
最后来说说关键的只有4位的项目密码算法:
项目密码(i)= (256 + sbm(i) + s(i) - xm(i)) Mod 256
这里的s(i)依然是对应的识别码的ASC码数值32,i代表是哪一位,具体的来验证算法是否正确。100+C8+32-C9=131 Mod 100=31查表知道密码字符是1
,下面怎么算的就不用再说了吧?
plc型号的不同也会导致密码地址的不同,那么其他型号的密码地址在哪里呢?
'EH3系列= EB60
'EH2 ES2系列= 7D00
'ESEC系列= 1EA0
‘SA系列= 3EE0
如果你看懂了上面的密码地址,而又设置了比如特殊语言标点,无法编译的字符,你可以用无密码的或已知密码的代码替换即可。再不然你就直接删除密码吧!删除密码方法见图,把图中红色字体部分写00就可以了。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|