Инструменты для захвата и анализа ввода с клавиатуры в сочетании с захватом микрофона
Основная цель – использовать звук, производимый нажатием клавиш клавиатуры, в качестве бокового канала, чтобы угадать содержание набираемого текста.
Для этого алгоритм принимает в качестве входных данных обучающий набор, состоящий из аудиозаписи, вместе с соответствующими клавишами, набираемыми во время этой записи.
Используя эти данные, алгоритм изучает звук различных нажатий клавиш, а затем пытается распознать звуки только с помощью захваченного звука.
Тренировочный набор очень специфичен, в том смысле, что он нацелен на одну настройку – клавиатуру, микрофон и взаимное расположение между ними.
Изменение любого из этих факторов делает такой подход бесполезным.
В качестве бонуса текущая реализация делает прогноз в режиме реального времени.
Основными этапами реализации являются следующие:
- сбор данных обучения
- создание модели прогнозирования (этап обучения)
- обнаружение нажатия клавиши
- прогнозирование ключа для обнаруженного нажатия клавиши
В текущей реализации звук промежуточных нажатий клавиш просто отбрасывается.
Мы сохраняем только звук в течение 75-100 мс до и после фактического нажатия.
Это немного сложно, так как кажется, что между нажатием клавиши и событием, записываемым программой, бывают случайные задержки – скорее всего, здесь задействованы как аппаратные, так и программные факторы.
- SDL2 – используется для захвата аудио и открытия окон графического интерфейса libsdl
- FFTW3 – некоторые вспомогательные инструменты выполняют преобразования Фурье fftw
¯\_(ツ)_/¯
Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.