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

CrackMe06

 

 CrackMe06

 

 算法很简单 直接还原了  用户名长度大于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);

}

 

上一篇:Follow somebody


下一篇:值传递,引用传递,地址传递