我有这个C代码,我想知道如果可能绕过这个检查?
int fd, password, input;
fd = open("/dev/urandom", 0);
read(fd, &password, 4);
scanf("%d", &input);
if (password == input)
{
printf("OK\n")
}
或者是否可以预测urandom值?
答案 0 :(得分:2)
没有。无法在正常运行的系统上预测/dev/urandom
产生的值。
话虽如此,这里有可能出现错误:
/dev/urandom
可能无法正确创建,实际上是指例如/dev/zero
或/dev/null
您所显示的代码中没有错误处理;无法打开或读取将无法检测到,保持密码值不变。