Загрузка данных
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, QPainter, QBrush
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(20, 20, 600, 350)
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", 11, 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(100)
# --- ТЕКСТ ПО ЦЕНТРУ ---
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)
self.layout.addSpacing(300)
self.text_label = QLabel("ВАС ЗАМЕТИЛИ", self)
self.text_label.setFont(QFont("Arial", 48, QFont.Weight.Bold))
self.text_label.setStyleSheet("color: white; letter-spacing: 2px; background: transparent;")
self.text_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.layout.addWidget(self.text_label)
# --- ТВОЙ ЗВУК КРИКА ---
# Программа пытается включить scream.wav. Если не найдет, то пикнет ошибкой.
try:
winsound.PlaySound("scream.wav", winsound.SND_FILENAME | winsound.SND_ASYNC | winsound.SND_LOOP)
except:
winsound.PlaySound("SystemHand", winsound.SND_ALIAS | winsound.SND_ASYNC | winsound.SND_LOOP)
QTimer.singleShot(4000, self.show_lock)
QTimer.singleShot(11000, self.show_prank)
# Рисуем глаза заново прямо кодом, чтобы не было черного экрана
def paintEvent(self, event):
if hasattr(self, 'prank_over') and self.prank_over:
return
painter = QPainter(self)
painter.setRenderHint(QPainter.RenderHint.Antialiasing)
eye_color = QColor(255, 0, 0) if hasattr(self, 'is_locked') else QColor(255, 255, 255)
painter.setBrush(QBrush(eye_color))
painter.setPen(Qt.PenStyle.NoPen)
center_x = self.width() // 2
center_y = self.height() // 2 - 100
painter.drawEllipse(center_x - 120, center_y, 70, 40)
painter.drawEllipse(center_x + 50, center_y, 70, 40)
painter.setBrush(QBrush(QColor(0, 0, 0)))
painter.drawEllipse(center_x - 95, center_y + 10, 20, 20)
painter.drawEllipse(center_x + 75, center_y + 10, 20, 20)
def add_hacker_logs(self):
hex_num1 = hex(random.randint(0x100000, 0xFFFFFF)).upper()
hex_num2 = hex(random.randint(0x100000, 0xFFFFFF)).upper()
fake_logs = [
f"Loading malicious payload...",
f"Injecting into explorer.exe -> status {hex_num1}",
f"Crashing memory bank at address [0x{hex_num2}]",
f"MFT tables corrupted successfully",
f"CRITICAL ERROR: Windows security bypassed!",
f"System status: BLOCKED"
]
self.log_text.append(fake_logs[self.log_counter % len(fake_logs)])
self.log_counter += 1
def show_lock(self):
self.is_locked = True
self.update()
self.text_label.setText("Упс, Windows заблокирован!")
self.text_label.setStyleSheet("color: #ff0000; font-size: 42px; font-weight: bold;")
def show_prank(self):
self.prank_over = True
self.update()
self.log_timer.stop()
self.log_text.hide()
winsound.PlaySound(None, winsound.SND_PURGE)
self.setCursor(Qt.CursorShape.ArrowCursor)
self.text_label.setText("РАССЛАБЬСЯ, ЭТО ПРАНК! ⚡\n\nТы попался. Твой компьютер в безопасности.\n\n(Для выхода нажми кнопку ESC)")
self.text_label.setStyleSheet("color: #00ff00; font-size: 36px;")
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())