其他分享
首页 > 其他分享> > CrackMe06

CrackMe06

作者:互联网

 

 记录一下直接定位到关键 密码算法 

int main(void)
{
    char a[] = "000000";
    int num = 6;
    for (size_t i = 1; i < 6; i++)
    {
        num+=(2304)*i;
    }
    num -=666;
    //33900
    // 33900=(a*6+b)
    //  3 0 3 0 -9  00
    // 30  -3
    // 3   3
    // 330  9 
    //        3390
    //
    
}

账号算出的 阶乘值就是 密码   

密码算法 就是  取10的摸 -29a

 

 

 

 算法很简单 直接还原了  用户名长度大于6

int main(void)
{
    char username[] = "000000";
    //00033900
    //11580823
    int key = 0;
    int nTemp = 0; int num = 0;

    //求阶乘 
    num = ((int)username[4]) % 7 + 2;
    nTemp = num; for (int i = 1; i < nTemp; i++) { num *= i; }nTemp = num; int result = 0;
    //求用户名的ASCII和乘以阶乘 
    for (int i = 0; i < strlen(username); i++) { result += nTemp * username[i]; }
    //取出正确的密码 
    key = result - 0x7A69;
    printf("%d\n", key);


}

ok代码

int main(void)
{
    char key[20] = { 0 }; char username[20] = { 0 }; 
    printf("请输入注册码,长度必须在六位以上:");
    //输入密码 
    scanf_s("%s", key, 20);
    //检查长度 
    if (strlen(key) <= 5) { printf("密码长度不满足 请重新输入"); return 0; }
    for (int i = strlen(key) - 1; i != -1; i--) {
        username[i] = (key[i] * key[i] * (i + 1)) % 0x19 + 0x41;
    }
    printf("%s", username);

}

 

标签:username,nTemp,int,char,num,key,CrackMe06
来源: https://www.cnblogs.com/feizianquan/p/15045564.html