Загрузка данных
import sys
import winsound
import random
from PyQt6.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget, QTextEdit
from PyQt6.QtCore import Qt, QTimer
from PyQt6.QtGui import QFont, QPalette, QColor, QPixmap
class UltimateWinlocker(QWidget):
def __init__(self):
super().__init__()
self.log_counter = 0
self.initUI()
def initUI(self):
self.showFullScreen()
self.setCursor(Qt.CursorShape.BlankCursor)
palette = self.palette()
palette.setColor(QPalette.ColorRole.Window, QColor(0, 0, 0))
self.setPalette(palette)
# --- БЕГУЩИЕ СТРОКИ (ТЕПЕРЬ ЯРКО-КРАСНЫЕ СРАЗУ, ЧТОБЫ ИХ БЫЛО ВИДНО) ---
self.log_text = QTextEdit(self)
self.log_text.setGeometry(30, 30, 700, 400)
self.log_text.setReadOnly(True)
self.log_text.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
self.log_text.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
self.log_text.setFont(QFont("Courier New", 12, QFont.Weight.Bold))
self.log_text.setStyleSheet("background-color: transparent; color: #ff0000; border: none;")
self.log_timer = QTimer(self)
self.log_timer.timeout.connect(self.add_hacker_logs)
self.log_timer.start(80) # Еще быстрее спам строк
# --- ЦЕНТРАЛЬНЫЙ БЛОК ДЛЯ КАРТИНКИ И ТЕКСТА ---
self.center_widget = QWidget(self)
self.center_widget.setGeometry(0, 0, self.width(), self.height())
self.layout = QVBoxLayout(self.center_widget)
self.layout.setAlignment(Qt.AlignmentFlag.AlignCenter)
# ТВОЯ КАРТИНКА (Программа будет искать файл "photo.png" на Рабочем столе)
self.img_label = QLabel(self)
pixmap = QPixmap("photo.png")
if not pixmap.isNull():
self.img_label.setPixmap(pixmap.scaled(500, 500, Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation))
else:
self.img_label.setText("⚠ [КАРТИНКА PHOTO.PNG НЕ НАЙДЕНА НА РАБОЧЕМ СТОЛЕ] ⚠")
self.img_label.setStyleSheet("color: white; font-size: 20px;")
self.img_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
# НАДПИСЬ ПО ЦЕНТРУ
self.text_label = QLabel("ВАС ЗАМЕТИЛИ", self)
self.text_label.setFont(QFont("Arial", 56, QFont.Weight.Bold))
self.text_label.setStyleSheet("color: white; letter-spacing: 3px; background-color: rgba(0,0,0,150); padding: 10px;")
self.text_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.layout.addWidget(self.img_label)
self.layout.addWidget(self.text_label)
# ТВОЙ ЗВУК КРИКА (Программа будет искать "scream.wav" на Рабочем столе)
try:
winsound.PlaySound("scream.wav", winsound.SND_FILENAME | winsound.SND_ASYNC | winsound.SND_LOOP)
except:
# Если твоего крика нет, включится громкий стандартный писк
winsound.Beep(2000, 1000)
# Таймеры переключения фаз
QTimer.singleShot(5000, self.show_lock)
QTimer.singleShot(12000, self.show_prank)
def add_hacker_logs(self):
hex_num = hex(random.randint(0x100000, 0xFFFFFF)).upper()
fake_logs = [
f">> LOADING MALICIOUS INJECTION...",
f">> INJECTING INTO EXPLORER.EXE -> SYSTEM CRASH",
f">> MEMORY OVERFLOW AT ADDRESS [0x{hex_num}]",
f">> BYPASSING WINDOWS DEFENDER... SUCCESS",
f">> CONNECTING TO C&C SERVER VIA IP...",
f">> WINDOWS SYSTEM COMPLETELY LOCKED!"
]
self.log_text.append(fake_logs[self.log_counter % len(fake_logs)])
self.log_counter += 1
def show_lock(self):
self.text_label.setText("УПС, WINDOWS ЗАБЛОКИРОВАН!")
self.text_label.setStyleSheet("color: #ff0000; font-size: 56px; font-weight: bold; background-color: rgba(0,0,0,150); padding: 10px;")
def show_prank(self):
self.log_timer.stop()
self.log_text.hide()
winsound.PlaySound(None, winsound.SND_PURGE) # Выключаем крик
self.setCursor(Qt.CursorShape.ArrowCursor)
self.img_label.hide() # Прячем страшную картинку в конце
# Делаем финальный текст огромным, чтобы он точно не пропал
self.text_label.setText("РАССЛАБЬСЯ, ЭТО ПРАНК! ⚡\n\nТы попался. Твой ПК в безопасности.\n\n(Для выхода нажми ESC)")
self.text_label.setStyleSheet("color: #00ff00; font-size: 48px; font-weight: bold; text-align: center;")
def keyPressEvent(self, event):
if event.key() == Qt.Key.Key_Escape:
winsound.PlaySound(None, winsound.SND_PURGE)
self.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = UltimateWinlocker()
sys.exit(app.exec())