首页
社区
课程
招聘
[旧帖] [求助]最后被卡住了,求高人指点.帮忙算出A1..,A5的值!!!十分感谢~~!! 0.00雪花
发表于: 2010-4-2 16:43 1322

[旧帖] [求助]最后被卡住了,求高人指点.帮忙算出A1..,A5的值!!!十分感谢~~!! 0.00雪花

2010-4-2 16:43
1322
求助为了逆推一个视频软件的注册码,算法很简单,但是到最后关头卡住了
A1,...A5都是每一位字符asc码-30后的值,都在0-10之间
转换:
T1=A1
T2=10T1+A2
T3=10T2+A3
T4=10T3+A4
T5=10T4+A5

一共5个字符

当T5=2098h时,算出A1,...A5
下面是我写的代码,不知到是否有错`我是学java的.这方面不是很会写!但是算了好久都没有算出来!求高人另写代码.帮我算出他们的值

public class a1 {
public static void main(String args[]){
        //int x1,x2,x3,x4,x5,T2,T3,T4,T5;
       
        for(int x1 = 1;x1<10;x1++) {
               
                for(int x2 = 1;x2<10;x2++) {
                        for(int x3 = 1;x3<10;x3++) {
                               
                                for(int x4 = 1;x4<10;x4++) {
                                       
                                        for(int x5 = 1;x5<10;x5++) {
                                               
                                                for(int T1 = 1;T1<8344;T1++)  {
                                                       
                                                        for(int T2 = 1;T2<8344;T2++)  {
                                                               
                                                                for(int T3 = 1;T3<8344;T3++)  {
                                                                       
                                                                        for(int T4 = 1;T4<8344;T4++)  {
                                                                                /*
                                                                                 T2=16*x1+x2;
                                                                                 T3=16*T2+x3;
                                                                                 T4=16*T3+x4;
                                                                                 T5=16*T4+x5;*/
                                                                               
                                                                                if(16*x1+x2==T2 &&T3==16*T2+x3 && T4==16*T3+x4 && 8344==16*T4+x5) {
                                                                                       
                                                                                        System.out.println(x1 +"\t" + x2 + "\t" + x3 + "\t" + x4 + "\t"
                                                                                                        + x5 + "\t" + T1 + "\t"+ T2 + "\t" + T3 + "\t" + T4);
                                                                                       
                                                                                }
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                        }
                                                                       
                                                                       
                                                                       
                                                                       
                                                                }
                                                               
                                                               
                                                               
                                                               
                                                        }
                                                       
                                                       
                                                       
                                                       
                                                }
                                               
                                               
                                               
                                        }
                                       
                                       
                                       
                                       
                                }
                               
                               
                        }
                       
                       
                       
                }
               
        }
       
       

}
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 435
活跃值: (1212)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
2
每一位字符asc码-30后的值
ascii(i)-0x30 就是c的函数atoi(i)的意思
T1=A1
T2=10T1+A2
T3=10T2+A3
T4=10T3+A4
T5=10T4+A5
T5简化后 就等于A1A2A3A4A5这个数字
整个函数的作用就是字符串转数字
这么想应该很简单了吧
2098转十进制是8344
所以字符串就是 ‘08344’ 了,A1到A5分别是08344

如果已知T5的话,要字符串,那直接itoa(T5)
2010-4-2 17:37
0
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
哈哈

原来是转换成10进制的函数

搞得我运行半天都没有结果, 我程序写错了 十分感谢!
一塌糊涂 哎 还是没有学c的痛苦啊

public class a1 {
public static void main(String args[]){
       
       
        for(int x1 = 1;x1<10;x1++) {
               
                for(int x2 = 1;x2<10;x2++) {
                        for(int x3 = 1;x3<10;x3++) {
                               
                                for(int x4 = 1;x4<10;x4++) {
                                       
                                        for(int x5 = 1;x5<10;x5++) {
                                               
                                                if(16*(16*(16*(16*x1+x2)+x3)+x4)+x5==8344) {
                                                                                       
                                                                                System.out.println(x1 +"\t" + x2 + "\t" + x3 + "\t" + x4 + "\t"+ x5 );
                                                                                       
                                                                                }
                                                                                        }
                                                                       
                                                                       
                                                                       
                                                                       
                                                                        }
                                                               
                                                               
                                                               
                                                               
                                                                }
                                                       
                                                       
                                                       
                                                       
                                               
                                               
                                               
                                               
                                                }
                                       
                                       
                                       
                                       
                                        }
                               
                               
                        }
                       
                       
                       
       
               
        }
2010-4-2 17:42
0
雪    币: 48
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个算是关系好像是把一个A1A2A3A4A5这个字符串转换成一个数T5,现在T5给的是16进制,做个转换就好了。2098=》8344
程序:
#include <stdio.h>

int main()
{
        int T5;
        while(scanf("%d",&T5)==1)
        {
                int sum = 0;
                int temp = T5;
                int jie = 1;
                while(temp)
                {
                        sum=sum+(temp%10)*jie;
                        temp/=10;
                        jie*=16;
                }
                for(int i=5;i>=1;i--)
                {
                        printf("A=%d=%d\n",i,sum%10);
                        sum/=10;
                }
        }
        return 0;
}
2010-4-2 17:48
0
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
非常感谢bitt

经过你指点 我就破解了一个视频软件!就差那一步了
上传的附件:
2010-4-2 17:50
0
雪    币: 435
活跃值: (1212)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
6
你呀你呀
上次就看见你使劲问 repn scas 那段典型的strlen代码
今天又是这个
我看你还是别学java,起码看看c吧
java这种语言会给你固定的思维模式,离底层越来越远
2010-4-2 18:12
0
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我也没办法啊

到现在已经学到struts了,以后还是靠java吃饭的啊 现实所迫
2010-4-2 18:37
0
雪    币: 435
活跃值: (1212)
能力值: ( LV13,RANK:388 )
在线值:
发帖
回帖
粉丝
8
如果时间还算宽裕,学习压力不大
那就抽空看看c 是c不是c++哦
对逆向帮助很大
2010-4-2 18:55
0
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
非常感谢你!!
2010-4-2 19:55
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我以前也学java struts 现在改行学汇编学c了。打算一切从头来过在看雪上成长
2010-4-2 23:06
0
游客
登录 | 注册 方可回帖
返回
//