Mirage Desktop - это современная кроссплатформенная система удаленного доступа и администрирования, разработанная для системных администраторов. Система обеспечивает безопасное подключение к рабочим столам сотрудников без необходимости запроса разрешения в момент подключения (unattended access).
Хотите начать работу прямо сейчас? Смотрите QUICKSTART.md
- Удаленный рабочий стол: Полный контроль над удаленным компьютером с минимальной задержкой
- Unattended Access: Подключение без запроса разрешения пользователя
- Передача файлов: Двусторонний файловый менеджер с поддержкой Drag-and-Drop
- Безопасность: Шифрование всего трафика с использованием AES-256-GCM
- Мультимониторная поддержка: Работа с несколькими мониторами на стороне клиента
- Кроссплатформенность: Поддержка Windows, macOS и Linux
Система состоит из двух компонентов:
- Графический интерфейс на Qt6/QML
- Управление списком контактов
- Инициирование подключений
- Просмотр удаленного рабочего стола
- Передача файлов
- Работает как системная служба/демон
- Автоматический запуск при загрузке системы
- Минимальный интерфейс (системный трей)
- Прием входящих подключений
- Захват экрана и обработка ввода
- Язык: C++17
- GUI Framework: Qt 6 (QML + Qt Quick Controls)
- Шифрование: OpenSSL (AES-256-GCM, TLS 1.3)
- Сборка: CMake 3.21+
- Захват экрана:
- Windows: DirectX Desktop Duplication API
- macOS: Core Graphics
- Linux: X11/Wayland
- Инъекция ввода:
- Windows: SendInput API
- macOS: CGEvent API
- Linux: X11/XTest
- CMake 3.21 или выше
- Qt 6.2 или выше (Core, Quick, Network, Widgets, QuickControls2, Concurrent)
- OpenSSL 1.1.1 или выше
- Компилятор с поддержкой C++17 (GCC 7+, Clang 5+, MSVC 2017+)
- Windows: Windows 10/11 (64-bit)
- macOS: macOS 10.15 (Catalina) или выше
- Linux: Ubuntu 20.04+ / Fedora 32+ или аналогичные
Mirage Desktop/
├── src/
│ ├── admin/ # Код модуля администратора
│ ├── client/ # Код модуля клиента
│ └── common/ # Общие компоненты
│ ├── network/ # Сетевые классы
│ ├── crypto/ # Шифрование
│ ├── protocol/ # Протокол связи
│ ├── capture/ # Захват экрана
│ ├── input/ # Инъекция ввода
│ ├── compression/ # Сжатие видео
│ └── utils/ # Утилиты
├── qml/
│ └── admin/ # QML интерфейс администратора
│ ├── views/ # Экраны приложения
│ └── components/ # UI компоненты
├── resources/ # Ресурсы (иконки, шрифты)
├── docs/ # Документация
├── build/ # Директория сборки
└── CMakeLists.txt # Главный файл CMake
Проект настроен для сборки с использованием Ninja и MSVC 19.50 (Visual Studio 2025 Preview).
- Visual Studio 2022/2025 с MSVC компилятором
- Qt 6.8.3 (установлен в
C:\Qt\6.8.3\msvc2022_64) - OpenSSL 3.6.0 (установлен в
C:\Program Files\OpenSSL-Win64) - Ninja 1.12.1 или выше
- CMake 3.31 или выше
- Inno Setup 6 (для создания установщиков)
# Полная сборка с созданием установщиков
BUILD-ALL.batЭтот скрипт выполнит:
- Сборку приложений с помощью CMake и Ninja
- Развертывание Qt зависимостей (windeployqt)
- Копирование OpenSSL DLL
- Создание установщиков с Inno Setup
# Только сборка приложений
build-ninja.bat
# Развертывание Qt для Admin
cd build-ninja\src\admin
"C:\Qt\6.8.3\msvc2022_64\bin\windeployqt.exe" --qmldir "../../../qml/admin" --no-translations mirage-admin.exe
cd ..\..\..
# Развертывание Qt для Client
cd build-ninja\src\client
"C:\Qt\6.8.3\msvc2022_64\bin\windeployqt.exe" --no-translations mirage-client.exe
cd ..\..\..
# Копирование OpenSSL DLL
copy "C:\Program Files\OpenSSL-Win64\bin\libcrypto-3-x64.dll" build-ninja\src\admin\
copy "C:\Program Files\OpenSSL-Win64\bin\libssl-3-x64.dll" build-ninja\src\admin\
copy "C:\Program Files\OpenSSL-Win64\bin\libcrypto-3-x64.dll" build-ninja\src\client\
copy "C:\Program Files\OpenSSL-Win64\bin\libssl-3-x64.dll" build-ninja\src\client\
# Создание установщиков
cd installers
build-installers.bat
cd ..- Исполняемые файлы:
build-ninja\src\admin\mirage-admin.exebuild-ninja\src\client\mirage-client.exe
- Установщики:
installers\output\Mirage-Admin-Setup-1.0.0.exeinstallers\output\Mirage-Client-Setup-1.0.0.exe
# Установите Qt 6 и OpenSSL
# Настройте переменные окружения Qt6_DIR и OPENSSL_ROOT_DIR
mkdir build
cd build
cmake -G "Visual Studio 17 2022" -A x64 ..
cmake --build . --config Release# Установите зависимости
sudo apt install qt6-base-dev qt6-declarative-dev libssl-dev libx11-dev libxtst-dev
mkdir build
cd build
cmake ..
make -j$(nproc)# Установите зависимости через Homebrew
brew install qt@6 openssl@3 cmake
mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=/opt/homebrew/opt/qt@6 ..
make -j$(sysctl -n hw.ncpu)- Запустите
Mirage-Admin-Setup-1.0.0.exe - Следуйте инструкциям мастера установки
- Установщик автоматически:
- Установит все необходимые Qt библиотеки
- Установит OpenSSL DLL
- Создаст ярлыки в меню "Пуск" и на рабочем столе
- Приложение готово к использованию
- Запустите
Mirage-Client-Setup-1.0.0.exe - Следуйте инструкциям мастера установки
- В процессе установки можно выбрать:
- ☑ Установить как службу Windows (рекомендуется)
- ☑ Автоматический запуск службы при загрузке системы
- Служба будет установлена и запущена автоматически
- Запустите
mirage-clientна компьютере сотрудника (или установите через инсталлятор) - При первом запуске будет сгенерирован уникальный ID и пароль
- ID и пароль отображаются в интерфейсе системного трея
- Передайте эти данные администратору
Управление службой вручную:
# Установка службы
mirage-client.exe --install-service
# Запуск службы
sc start MirageClient
# Остановка службы
sc stop MirageClient
# Удаление службы
mirage-client.exe --uninstall-service- Запустите
mirage-admin(или установите через инсталлятор) - Добавьте новый контакт: имя, ID клиента и пароль
- Дважды кликните на контакт для подключения
- После успешной аутентификации откроется окно удаленного рабочего стола
- Шифрование: Весь трафик шифруется с использованием AES-256-GCM
- Аутентификация: Пароли хранятся в виде PBKDF2 хешей
- Ключи: 32-байтные ключи, генерируемые через PBKDF2 с 100,000 итераций
- Защита от перехвата: Используется TLS 1.3 для транспортного уровня
Система использует собственный бинарный протокол поверх TCP/IP:
Структура пакета:
[4 байта - размер payload][2 байта - тип пакета][N байт - данные]
Типы пакетов:
- Управление соединением (Handshake, Authentication, Disconnect)
- Передача экрана (Screen Frame, Screen Update)
- Управление вводом (Mouse, Keyboard)
- Передача файлов (File Transfer)
- Служебные (Heartbeat, Status)
- Базовая архитектура проекта
- Протокол связи
- Система шифрования (AES-256-GCM)
- Захват экрана (Windows)
- Инъекция ввода (Windows)
- GUI администратора (QML)
- Клиентская служба Windows
- Установщики (Inno Setup)
- Сжатие видео (JPEG progressive) - H.264/VP9 в следующей фазе
- Сетевое взаимодействие (TCP с шифрованием AES) - TLS опционально
- Функциональное тестирование
- NAT Traversal / Relay сервер
- Передача файлов
- Буфер обмена
- Полная поддержка macOS
- Полная поддержка Linux
- Аудио передача
- Чат между администратором и пользователем
- Запись сессий
- Статистика использования
- Многопользовательский режим
Проект открыт для вклада сообщества! Пожалуйста, ознакомьтесь с CONTRIBUTING.md для получения информации о том, как внести свой вклад.
Проприетарное программное обеспечение. Все права защищены.
Подробности в файле LICENSE.
- GitHub Issues: Для багрепортов и запросов функций
- Discussions: Для общих вопросов и обсуждений
Разработано Andrew_Dumin.