init commit

This commit is contained in:
2025-10-09 09:57:24 +09:00
commit 4d551bd74f
6636 changed files with 1218703 additions and 0 deletions

196
SECURITY_ANALYSIS_REPORT.md Normal file
View File

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