April 11, 2020

Вирус локер на Python и Tkinter

Дисклеймер: статья написана в образовательных целях, автор не призывает к плохим деяниям.

Локер – популярный вид вирусов, который блокирует компьютер, и чаще всего злоумышленники просят что-либо взамен на разблокировку. Обычно локер еще шифрует все файлы на компьютере, но мы такого делать не будем.

Основа программы

Для начала импортируем все нужные модули и создадим окно приложения с определенными размерами.

Дальше сделаем надпись, призывающую ввести пароль. Расположим ее по центру по горизонтали и немного сместим вверх.

Это не обязательно, но я сделаю еще маленькую надпись снизу, указывающую автора.

Теперь понадобится поле, в которое пользователь будет вводить сам пароль. Зададим размеры и расположим ровно в центре.

Напоследок пропишем следующее, чтобы курсор мыши фокусировался сразу на поле ввода при запуске.

Сейчас уже можно написать root.mainloop() и посмотреть на промежуточный результат.

Часть вируса

Итак, какое-то приложение уже готово, осталось кое-что добавить и превратить его в вирус.

Для начала уберем строчки, где мы указывали размер окна и запускали приложение. То есть вот это удаляем из кода.

Сделаем окно полноэкранным, написав следующее, а также уберем курсор мыши.

Внимание! Чтобы выйти из такого приложения на данном этапе, нужно нажать комбинацию Alt+F4.

Далее напишем цикл, в котором будет проверка ввода и обновление экрана.

Думаю, что здесь всё понятно, при вводе '1234' программа прекратит своё выполнение при помощи sys.exit()

Примерно такая картина получается на данный момент.

Последние штрихи

Всё вроде бы хорошо, но всё еще есть несколько проблем: окно без проблем закрывается с помощью Alt+F4, курсор можно переместить на соседний монитор (если их 2+), есть возможность переключаться между программами (Alt+Tab) и там спокойно что-то делать. Сейчас мы всё это решим.

Для предотвращения закрытия окна комбинацией Alt+F4, достаточно написать одну строчку перед циклом.

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

Далее мы решим две проблемы сразу: бдуем перемещать курсор пользователя в левый верхний угол, чтобы не было возможности что-либо сделать в других окнах, либо переместиться на второй монитор. Для этого в цикле пропишем специальный метод moveTo из модуля pyautogui.

То есть курсор всегда будет перемещать в координаты (0, 0) – левый верхний угол.

На всякий случай перед циклом надо написать еще вот это.

Варианты обойти вирус конечно же остались, но для образовательной статьи этого хватит.

В теории такую программу можно доработать, скомпилировать в исполняемый файл и закинуть кому-нибудь в автозагрузку, но я вам этого не говорил :)


Исходный код – https://pastebin.com/2uDCyFT9

Статья подготовлена образовательной организацией Python Academy