# strange keylogger
## Описание
Перед тем как наш сотрудник зашифровал базу данных с чувствительной информацией мы успели поставить на компьютер странный кейлогер, так же мы знаем часть команды, которой была зашифрованна база данных `./encryptor.py encrypt --input ../gen_db/secret.db --out secret.db.enc --key `, помогите нам восстановить пароль от БД и расшифровать базу данных.
---
Before our employee encrypted the database with sensitive information we managed to put a strange keylogger on the computer, we also know the part of the command, which encrypted the database `./encryptor.py encrypt --input ../gen_db/secret.db --out secret.db.enc --key `, help us recover the password from the database and decrypt the database.
## Краткое описание уязвимости
Необходимо разобратся что в модуле ядра реализован [Регистр сдвига с линейной обратной связью](https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80_%D1%81%D0%B4%D0%B2%D0%B8%D0%B3%D0%B0_%D1%81_%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D0%BE%D0%B9_%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%B9_%D1%81%D0%B2%D1%8F%D0%B7%D1%8C%D1%8E) и реализовать атаку на линейный рекуррентный регистр с обратной связью с помощью [Алгоритма Берлекэмпа — Мэсси](https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%91%D0%B5%D1%80%D0%BB%D0%B5%D0%BA%D1%8D%D0%BC%D0%BF%D0%B0_%E2%80%94_%D0%9C%D1%8D%D1%81%D1%81%D0%B8).
# Решение
[Реализация атаки](https://colab.research.google.com/drive/1ngOgRzKzxKaEZXHQ-7DtUjaW05d2xInX?usp=sharing).