Как обойти / взломать случайное значение?
У меня есть этот код 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
В показанном вами коде нет обработки ошибок; Ошибка открытия или чтения останется незамеченной, а значение пароля останется неизменным.