196 lines
8.4 KiB
Markdown
196 lines
8.4 KiB
Markdown
# ДЕТАЛЬНЫЙ АНАЛИЗ СИСТЕМЫ 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**
|
||
|
||
---
|
||
|
||
**📋 ИТОГ:** Система функциональна, но требует серьезной доработки для продакшн использования из-за критических зависимостей от внешних сервисов и слабой системы безопасности. |