#狂人TD1.5 krtd1.5积分代码破解1
#作者依山居 5:08 2015/11/1
#经过分析狂人TD的程序后,按原程序中的步骤穷举所有999的积分代码

import string
az=string.ascii_lowercase
score=999

for ln in range(15,0,-1):
    for rd in range(0,11):
        #积分代码第一位
        ti=ln%10
        ts=az[ti]
        #2
        ts+=az[rd]
        #3
        ti=score%10+rd
        ts+=az[ti]
        #4
        ti=int((score%100)/10)+rd
        ts+=az[ti]
        #5
        ti=int(score/100)+rd
        ts+=az[ti]
        print("游戏名长度为% 2s的积分代码为: %s" % (ln,ts))

'''
输出:
游戏名长度为15的积分代码为:fajjj
游戏名长度为15的积分代码为:fbkkk
游戏名长度为15的积分代码为:fclll
游戏名长度为15的积分代码为:fdmmm
游戏名长度为15的积分代码为:fennn
...
...
'''
#-*-coding:gb2312-*- 
#python破解狂人TD4.3积分代码2优化
#依山居 10:05 2015/11/3
#本程序用于生成魔兽争霸3地图狂人TD4.3 所有999的积分代码
#狂人TD4.3的积分代码是6位的字符形式如joprb0
#使用方法是在游戏开始输入-load joprb0

import string
az=string.ascii_lowercase

jf=''
#你想要多少积分
score=999
#取积分个位十位百位
sg=score%10
ss=int(score%100/10)
sb=int(score/100)
#这里的range本质为游戏名长度取值1-15
for i in range(15,0,-1):
    #本质是历遍随机数1-15
    for rd in range(1,16):
        #rd的取值本质是1-15的随机整数,随机数可以使得玩家不是每次都相同。rn本质是游戏名长度加随机数除以10取余
        rn=(i+rd)%10
        jf=az[i%10+sg]+az[sg+rd]+az[ss+rn+1]+az[sb+rn+3]+az[(sg+ss+sb)%26]+str(((sg+1)*(rn+3))%10)
        print("狂人TD4.3游戏名长度为%2d的积分代码: " %i,jf)

"""
这个程序的计算公式是从狂人TD4.3的源代码中分析出来的。
az等于"abc..z"
先算出az[]中数字,就能转换成对应的字符。
az[0]等于a,az[2]等于c以此类推。
---积分代码第一位---
az[i%10+sg] 游戏名长度除非10求余加上(积分的个位数)
由于i不能为0,据此可以反推出积分代码首位为a的游戏名长度是10
---积分代码第二位---
az[sg+rd]   积分的个位数加上随机数rd,rd可以取值1-15影响的结果,
第3\4\6位积分代码会跟随rd变化
---积分代码第三四位---
az[ss+rn+1] 积分代码的十位数加上rn加1,rn见上程序中的注释。
az[sb+rn+3] 积分代码的百位数加上rn加1,rn见上程序中的注释。
---积分代码第五位---
az[(sg+ss+sb)%26] 积分代码的个十百位相加后再除26求余。
---积分代码第六位---
str(((sg+1)*(rn+3))%10) 最后一代码为一位数字。个位数加1 rn加3 相乘后除10求余。
由此公式反推 sg=9 或者rn=7时。最后一位代码为0
"""

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章