首页
社区
课程
招聘
[旧帖] [求助][求助]Help Me <CrackMe中的算法求助> 0.00雪花
发表于: 2012-3-3 11:34 1242

[旧帖] [求助][求助]Help Me <CrackMe中的算法求助> 0.00雪花

2012-3-3 11:34
1242
昨天晚上没事,下了个CrackMe程序!代码逻辑很简单。爆破1分钟搞定。但是想写出个算序列号的程序搞不定!特来求助。
     CrackMe 的算法是:
           对用户名的操作:
           1、输入的用户名必须大于0x41然后将小写字母变成大写。
            2、用户名每项相加
            3、相加的结果和0x5678做异或。
          对序列号得操作:
            1、将序列号每位先减0x30,在乘以0x0A;
            2、将结果相加和 0x1234做异或;

请大牛提供思路。
这个是我未完成的代码:

/*创建序列号函数
nUserSum : 用户名计算的值
*/
void CreatSerialNum(int &nUserSum)
{
//1
int nSerialNum = nUserSum;
nSerialNum ^= 1234;

}
int _tmain(int argc, _TCHAR* argv[])
{
char username[] ="UserName";
  
int nPos = 0;
int nUserSum = 0;
while(username[nPos] !='\0')
{
  if (username[nPos] <0x41)
  {
   printf("No luck there, mate!");
   return 0;
  }
  if (username[nPos] >= 0x5A)
  {
   username[nPos] = username[nPos] - 0x20;
  }
  nUserSum += username[nPos];
  nPos++;
}
nUserSum ^= 0x5678;

CreatSerialNum(nUserSum);
getchar();
return 0;
}

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
2
char un[256]={0};
pintf ("Username: ");
scanf ("%S",un);
DWORD sn=0;
for (int i=0;i<256 || un[i]!=0;i++)
{
char a=un[i];
if (a>='a' && a<='z') a-=0x20;
sn+=a;
}
sn^=0x5678^0x1234;
printf ("sn: %d",sn);
getchar();

大概就这样吧,这个某某的第二题吧。
2012-3-3 13:11
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
是的啊 ,谢谢啊!膜拜下。
2012-3-3 16:15
0
游客
登录 | 注册 方可回帖
返回
//