crackmehardestshell20110404 by xiayuanzhong

crackmehardestshell20110404 by xiayuanzhongcrackmehardestshell20110404 by xiayuanzhong输入Name和Password,然后进行判断是否匹配

crackmehardestshell20110404 by xiayuanzhong

反编译代码

 __main();
  Announcement();
  std::string::string((std::string *)v23);
  std::string::string((std::string *)v22);
  do
  {
    while ( 1 )
    {
      while ( 1 )
      {
        v20 = 1;
        printf("%s", "Please enter the Name: "); 
        std::operator>><char>(&std::cin, v23);				//3e6(16进制) = 998(10进制)
        if ( std::string::length((std::string *)v23) <= 0x3E6u )     //name长度 <=998   
        {
          printf("%s", "Please enter the Password: ");
          std::operator>><char>(&std::cin, v22);
          if ( std::string::length((std::string *)v22) <= 0x3E6u )	//Password长度 <=998
            break;
        }
        printf("To long! ReType!\n\n");
      }
      v21 = std::string::length((std::string *)v23);
      if ( v21 + 4 == std::string::length((std::string *)v22) )   //password长度 = name长度 + 4
        break;
      Error();
    }
    for ( i = 0; i < v21; ++i )
    {
      v18 = (_BYTE *)std::string::operator[](v23, i);
      if ( *v18 != *(_BYTE *)std::string::operator[](v22, v21 - i - 1) ) //Password的前几位为Name逆序
      {
        v4 = getMyChar(-1);
        v20 = turnToMyChar(v4);
        Error();
        break;
      }
    }
    if ( *(_BYTE *)std::string::operator[](v22, v21 + 3) != ‘z‘ )    //Password最后一位是‘z‘
    {
      v5 = getMyChar(-1);
      v20 = turnToMyChar(v5);
    }
    if ( *(_BYTE *)std::string::operator[](v22, v21) != ‘_‘ )		//Password倒数第四位为‘_‘
    {
      v6 = getMyChar(-1);
      v20 = turnToMyChar(v6);
    }
    if ( *(_BYTE *)std::string::operator[](v22, v21 + 1) != ‘x‘ )	//Password倒数第三位为‘x‘
    {
      v7 = getMyChar(-1);
      v20 = turnToMyChar(v7);
    }
    if ( *(_BYTE *)std::string::operator[](v22, v21 + 2) != ‘y‘ )	//Password倒数第二位为‘y‘
    {
      v8 = getMyChar(-1);
      v20 = turnToMyChar(v8);
    }
    v9 = getMyChar(v20);
    v17 = turnToMyChar(v9);
    v10 = getMyChar(0);
  }
  while ( v17 <= (__int16)turnToMyChar(v10) );
  v11 = getMyChar(v20);
  v16 = turnToMyChar(v11);
  v12 = getMyChar(0);
  if ( v16 > (__int16)turnToMyChar(v12) )
    Congratulations();
  system("PAUSE");
  std::string::~string(v13);
  std::string::~string(v14);
  return 0;
}

猜测Password的后四位为_xyz ,尝试后发现确实如此

总结一下:Password就是是将Name逆序后加上"_xyz"

EXP

Name = raw_input("[+] Enter your Name: ")

print "[+] The Password is " + Name[::-1] + "_xyz"

crackmehardestshell20110404 by xiayuanzhong
crackmehardestshell20110404 by xiayuanzhong
难得有能做出来的简单题 (ノへ ̄、)

crackmehardestshell20110404 by xiayuanzhong

上一篇:蓄电池短路解决方法


下一篇:转:Windows下USB接口驱动技术(二)