Nano Hash - криптовалюты, майнинг, программирование

Создайте модуль ядра /dev/hwrng, который использует позицию курсора для генерации энтропии.

Я новичок в разработке ядра, поэтому для повышения своих навыков я хочу сделать простой модуль ядра, который настраивает устройство /dev/hwrng и генерирует некоторую энтропию с позицией курсора.

На данный момент я нашел способ запустить /dev/hwrng и сгенерировал только ноль в качестве энтропии => http://main.lv/writeup/kernel_dev_hwrng.md

Для получения позиции курсора я знаю разные способы:

  • из библиотеки X11/Xlib.h -> я могу получить абсолютную позицию моего курсора
  • из /dev/input/mice и /dev/input/mouse0 -> я могу получить относительное положение
  • form /dev/input/event<X> где X число, которое находится с помощью команды cat /proc/bus/input/devices

Итак, я знаю, как получить позицию курсора в пользовательской области, но я понятия не имею, как получить ее из области ядра. Я кое-что читал о IOCTL, но кажется странным устанавливать связь между пользовательским пространством и ядром только для этого. Спасибо за помощь.


  • Я сомневаюсь, что абсолютная позиция курсора даже известна в ядре. X-сервер знает, потому что он рисует это (я думаю), но это берет относительное движение мыши из драйвера устройства. Но X-сервер - это пользовательский процесс, не вижу причин, по которым он вернется в ядро. И если учесть, что X-сервер может быть удаленным по сети, то он полностью отделен от базового ядра. 16.07.2017
  • Я согласен с этим, ядру не обязательно знать положение курсора. Итак, я пытаюсь использовать в качестве входных данных для моего модуля энтропии положение курсора, я думаю, используя одно из устройств /dev/input, но я понятия не имею, возможно ли это только с пространством ядра, и если это возможно, я не не знаю, как это сделать. 16.07.2017
  • Конечно, но в вашем модуле ядра случайность, исходящая от устройств ввода, зависит только от того, что делает пользователь, если они вошли в систему локально. Если они вошли в систему удаленно, то локальный ввод не происходит, что было бы плохо. вещь, учитывая то, что вы имеете в виду; это был бы постоянный нулевой ввод. 16.07.2017
  • Вы правы, то, что я хочу сделать, не является безопасным, но это просто доказательство концепции, цель состоит в том, чтобы просто настроить устройство (hwrng), которое будет получать энтропию только с позицией курсора. Таким образом, в качестве POC он будет работать в контролируемой среде (с зарегистрированным пользователем). 16.07.2017
  • В этом случае я думаю, что лучшим предложением является @Ed Jaras (ниже), ваш второй пункт. Вы можете достаточно легко прочитать события/данные мыши в ядре, но вы не можете превратить их в абсолютный яд мыши, потому что это концепция, которая существует только на X-сервере, который не собирается сообщать ни одному процессу, где он думает. мышь есть, если только она не является одним из ее клиентов (за исключением ядра). Вы можете просто взять данные о событиях мыши и рассматривать их как поток случайности. 16.07.2017
  • Я попробую таким образом и верну деньги, как только найду способ заставить его работать. Спасибо. 16.07.2017
  • Удачи, удачного кодирования! 16.07.2017

Ответы:


1

Я бы посоветовал сначала посмотреть это: https://unix.stackexchange.com/questions/25601/how-do-mouse-events-work-in-linux Короче говоря, вы можете получить доступ к тем же файлам устройства из пространства ядра.

16.07.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..