【吾爱破解2014CrackMe大赛】【第十四组】
ss为"解锁成功"字串sa={0x1A,0x0C,0x2D,0x1C,0x0F,0x0D,0x3E,0x01};sb={0x0D,0x3A,0x2D,0x21,0x11,0x14,0x08,0x25}
s1为key前8位(相当于用户名)
s2为8*2+1位字串
其中
s1+atoi(s2,2)+atoi(s2)*0x22+sa+sb=ss (i=1 to 8)
keygen源码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
unsigned char sa={0x1A,0x0C,0x2D,0x1C,0x0F,0x0D,0x3E,0x01};
unsigned char sb={0x0D,0x3A,0x2D,0x21,0x11,0x14,0x08,0x25};
char *ss="解锁成功";//{0xBD,0xE2,0xCB,0xF8,0xB3,0xC9,0xB9,0xA6};
char s1;
unsigned char s2;
char out;
int main()
{
memset(s1,0,50);
memset(s2,0,17);
printf("请输入八位字串:\n");
scanf("%s",s1);
int len=strlen(s1);
for(int i=len;i<8;i++)
{
s1='0';
}
s1=0;
printf("16组key:\n");
for(i=0;i<16;i++)
{
memset(out,0,50);
strcat(out,s1);
strcat(out,"-");
char a;
for(int j=0;j<8;j++)
{
unsigned char p=ss-sa-sb-s1-i*0x22;
sprintf(a,"%02X",p);
strcat(out,a);
}
sprintf(a,"%1X",i);
strcat(out,a);
printf("%s\n",out);
}
system("pause");
return 0;
}
keygen:
最终得分:194
评委评价:有效 不错,好好学习了 代码很长,慢慢学习啦 看到这么长的代码,我头都大了 学习学习 不错 的解决思路,得好好学习了。 向楼主学习中 不错,好好学习了