Как обойти / взломать случайное значение?

У меня есть этот код C, и я хочу знать, если возможно, как обойти эту проверку?

int fd, password, input;
fd = open("/dev/urandom", 0);
read(fd, &password, 4);
scanf("%d", &input);

if (password == input)
{
    printf("OK\n")
}

Или можно предсказать случайные значения?

1 ответ

Нет. Невозможно предсказать значения, полученные в результате /dev/urandom на правильно функционирующей системе.

С учетом сказанного здесь есть вероятность ошибки:

  • /dev/urandom может быть создан неправильно, фактически ссылаясь на /dev/zero или же /dev/null

  • В показанном вами коде нет обработки ошибок; Ошибка открытия или чтения останется незамеченной, а значение пароля останется неизменным.

Другие вопросы по тегам