# ДЕТАЛЬНЫЙ АНАЛИЗ СИСТЕМЫ VIDEOREADER **Дата анализа:** 9 октября 2025 г. **Статус:** ✅ ПОЛНЫЙ АНАЛИЗ ЗАВЕРШЕН --- ## 🎯 КРАТКОЕ РЕЗЮМЕ Обнаружена **система удаленного видеонаблюдения** состоящая из: - **PC-клиент** (VideoReader.exe) - приемник видео - **Android-приложение** (com.nvav.srv.recorder) - источник видео - **Центральный сигналинг-сервер** (vidser.top) - координация подключений **⚠️ КРИТИЧНО:** Система использует жестко зашитые серверы третьих лиц! --- ## 🌐 ОБНАРУЖЕННЫЕ СЕРВЕРНЫЕ ПОДКЛЮЧЕНИЯ ### 1. Основной сигналинг сервер ``` 🔗 Домен: vidser.top 📍 IP получение: https://vidser.top/ip/get-ip-kr.php?port={canal} 🔌 Порт данных: 3033 TCP 📊 Фолбек IP: 158.247.241.191 ``` ### 2. Детали подключения - **PC приложение:** Получает IP через HTTP запрос к vidser.top - **Android приложение:** Аналогично получает IP и подключается - **Канал связи:** Номер канала (45-55) для идентификации пары устройств - **Протокол:** Зашифрованный TCP с AES шифрованием --- ## 🔐 КРИПТОГРАФИЧЕСКАЯ СИСТЕМА ### Ключи шифрования (одинаковые в обеих платформах): ```csharp // PC (C#) keyByte = MD5("73!2#qweaSdzxc4r") ivByte = MD5("0_=op[l:',./vf73") // Android (Java) - ИДЕНТИЧНО keyByte = MD5("73!2#qweaSdzxc4r"); ivByte = MD5("0_=op[l:',./vf73"); ``` ### Алгоритм шифрования: - **Алгоритм:** AES-128-CBC - **Padding:** PKCS5/PKCS7 - **Все данные** (кроме служебных) шифруются --- ## 📡 ПРОТОКОЛ ВЗАИМОДЕЙСТВИЯ ### Структура подключения: 1. **Получение IP адреса:** - HTTP GET: `https://vidser.top/ip/get-ip-kr.php?port={channel}` - Ответ: 4 байта - IP адрес в бинарном виде 2. **TCP подключение к серверу:** - **PC:** port 3033, первый байт = 0, второй байт = номер канала - **Android:** port 3033, первый байт = 1, второй байт = номер канала ### Формат пакетов: ``` [1 байт: длина заголовка] [N байт: размер данных] [Зашифрованные данные] [1 байт: тип] ``` ### Типы сообщений: - **Тип 0:** Heartbeat/ping сообщения - **Тип 2+:** Видеоданные и команды --- ## 🏗️ АРХИТЕКТУРА СИСТЕМЫ ``` ┌─────────────────┐ HTTPS ┌─────────────────┐ │ PC Client │◄────────────┤ vidser.top │ │ VideoReader │ Get IP │ Signaling │ └─────────────────┘ │ Server │ │ └─────────────────┘ │ ▲ │ TCP:3033 │ HTTPS │ Channel:XX │ Get IP │ Type:0 (receiver) │ ▼ │ ┌─────────────────┐ ┌─────────────────┐ │ Media Relay │ │ Android Client │ │ Server │◄────────────┤ NVAV Recorder │ │ (Unknown IP) │ TCP:3033 │ │ └─────────────────┘ Channel:XX └─────────────────┘ Type:1 (sender) ``` --- ## 📱 ANDROID ПРИЛОЖЕНИЕ - ДЕТАЛИ ### Пакет: `com.nvav.srv.recorder` ### Основные классы: - **`InOut.java`** - Сетевое взаимодействие (аналог InOutSocket.cs) - **`MActivity.java`** - Главная активность - **`ChenalC.java`** - Хранение номера канала - **`ICameraRecord.java`** - Интерфейс записи камеры - **`Camera*.java`** - Реализации для разных производителей ### Каналы связи: ```java static int[] chenals = {0, 55, 54, 53, 51, 49, 48, 52, 50, 47, 46, 45}; static final String[] key_ch = {"0000", "1111", "533D", "9A32", "DC8F", "1095", "4167", "2E43", "701B", "2BA9", "2BB4", "1F0E"}; ``` ### Функциональность: - Запись видео с камеры - Сжатие и шифрование - Передача через TCP сокет - Поддержка различных производителей Android устройств --- ## 💻 PC ПРИЛОЖЕНИЕ - ДЕТАЛИ ### Основные компоненты: - **`Form1.cs`** (3941 строка) - Главная форма с UI - **`InOutSocket.cs`** - Сетевой клиент - **`Decoder.cs`** - Декодирование видео - **`SaveVideo.cs`** - Сохранение на диск ### Возможности: - Прием зашифрованного видеопотока - Декодирование через FFmpeg - Отображение в реальном времени - Сохранение записей - Работа с QR-кодами (для настройки?) --- ## ⚠️ УЯЗВИМОСТИ И РИСКИ ### 🔴 Критические риски: 1. **Зависимость от внешнего сервера** (vidser.top) 2. **Жестко зашитые ключи шифрования** 3. **Отсутствие аутентификации пользователей** 4. **Нет проверки сертификатов SSL** ### 🟡 Потенциальные проблемы: 1. Сервер может логировать все соединения 2. Отсутствие end-to-end шифрования между устройствами 3. Простой канальный алгоритм (подбор каналов) 4. Нет защиты от подключения посторонних --- ## 🔧 ТЕХНИЧЕСКОЕ ЗАКЛЮЧЕНИЕ ### Принцип работы: 1. Android устройство запускает приложение-рекордер 2. PC приложение запускается для просмотра 3. Оба получают IP медиа-сервера через vidser.top 4. Устанавливается прямое соединение через промежуточный сервер 5. Видеопоток передается в зашифрованном виде ### Используемые технологии: - **C# .NET Framework 4.7.2** (PC) - **Java Android SDK** (мобильное) - **FFmpeg** (кодирование/декодирование) - **AES шифрование** - **TCP сокеты** --- ## 🚀 РЕКОМЕНДАЦИИ ПО УЛУЧШЕНИЮ ### Немедленные действия: 1. **Заменить внешний сигналинг сервер** на собственный 2. **Реализовать динамические ключи** шифрования 3. **Добавить аутентификацию** пользователей 4. **Использовать TLS** для всех соединений ### Архитектурные улучшения: 1. **WebRTC** вместо прямых TCP соединений 2. **P2P соединения** для снижения нагрузки на сервер 3. **Микросервисная архитектура** 4. **Kubernetes deployment** --- **📋 ИТОГ:** Система функциональна, но требует серьезной доработки для продакшн использования из-за критических зависимостей от внешних сервисов и слабой системы безопасности.