Я столкнулся с проблемой в C, которая удерживала меня последние 6 часов, и после исследований и исследований я решил обратиться за помощью! Извините, мой английский не мой родной язык, и я начинающий программист.
Я могу взломать все пароли длиной в три цифры. Тем не менее, похоже, что я не могу взломать пароли длиной четыре цифры. Я старался изо всех сил, чтобы понять и понять свои ошибки в коде, но, похоже, я не могу этого сделать. Пожалуйста, помогите!
Кроме того, было бы очень хорошо, если бы было больше объяснений, почему я не могу взломать пароли из четырех цифр вместо простого решения. Заранее спасибо!
#define _XOPEN_SOURCE
#include <stdio.h>
#include <string.h>
#include <cs50.h>
#include <crypt.h>
#include <unistd.h>
int main (int argc, char* argv[])
{
if (argc != 2){
printf("Invalid input\n");
return 1;
}
char* hash = argv[1];
char code[4];
char* alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
int length = strlen(alphabet);
for (int a = 0; a <= length; a++)
{
code[0] = alphabet[a];
printf("%s\n", code);
if (strcmp(crypt(code, "50"), hash) == 0)
{
printf("%s\n", code);
return 0;
}
for (int b = 0; b <= length; b++)
{
code[1] = alphabet[b];
//printf("%s\n", code[1]);
if (strcmp(crypt(code, "50"), hash) == 0)
{
printf("%s\n", code);
return 0;
}
for (int c = 0; c <= length; c++)
{
code[2] = alphabet[c];
//printf("%s\n", code[2]);
if (strcmp(crypt(code, "50"), hash) == 0)
{
printf("%s\n", code);
return 0;
}
for (int d = 0; d <= length; d++)
{
code[3] = alphabet[d];
//printf("%s\n", code[3]);
if (strcmp(crypt(code, "50"), hash) == 0)
{
printf("%s\n", code);
return 0;
}
}
}
}
}
}