Задать вопрос
@tj57

Как сломать генератор случайных чисел в ядре линукса?

Есть ядро ubuntu, задача - залезть в ядре в реализацию функции random и поменять её так, чтобы при её вызове всегда возвращался 0. Я нашёл файл random.h : https://github.com/torvalds/linux/blob/master/incl...

В самом низу есть функция, предположительно отвечающая за непосредственно генерацию случайного числа по некоторым значениям :

/* Pseudo random number generator from numerical recipes. */
static inline u32 next_pseudo_random32(u32 seed)
{
	return seed * 1664525 + 1013904223;
}

Я взял и просто поменял на 0:

return seed * 0;

Осталось собрать ядро и убедиться, будет ли это работать. Собираться на моем ноуте оно будет несколько часов, так что не хотелось бы каждый раз что то менять и пересобирать его, уйдет куча времени. На правильном ли я пути или нужно поменять что-то ещё ?
  • Вопрос задан
  • 522 просмотра
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Я нашёл файл random.h

Тебе надо понять, какой именно генератор ты хочешь сломать. Потому что их в ядре несколько.
Например, быстрые псевдослучайные:
lib/random32.c: prandom_u32_state, prandom_bytes_state

Архитектурные аппаратные:
arch/x86/include/asm/archrandom.h: arch_get_random_* и arch_has_random_*

Криптографически надёжные (их видно из юзерспейса через /dev/[u]random):
drivers/char/random.c: _extract_crng, extract_buf и _get_random_bytes

Тот, что ты нашёл, используется в сетевой подсистеме
Ответ написан
@synapse_people
Тут возвращает только u32, лучше поищите дальше, т.к. например могут читать через /dev/u?random
Ответ написан
@khrisanfov
Программист
return 0; сразу лучше. Кстати, а зачем вам это?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы