249 lines
8.1 KiB
Markdown
249 lines
8.1 KiB
Markdown
# 🔍 СРАВНИТЕЛЬНЫЙ АНАЛИЗ ДВУХ ВЕРСИЙ VIDEOREADER
|
||
|
||
**Дата анализа:** 9 октября 2025 г.
|
||
**Версии:** Обычная (desktop) vs Samsung (desktop_3234)
|
||
|
||
---
|
||
|
||
## 📊 КЛЮЧЕВЫЕ РАЗЛИЧИЯ
|
||
|
||
### 🌐 Серверные подключения
|
||
|
||
| Параметр | Обычная версия | Samsung версия |
|
||
|----------|----------------|----------------|
|
||
| **Сигналинг сервер** | `vidser.top` | `s1.cc-vst.online` |
|
||
| **URL запроса IP** | `https://vidser.top/ip/get-ip-kr.php?port=` | `https://s1.cc-vst.online/get-ip-kr.php?port={0}` |
|
||
| **Порт данных** | 3033 | **3234** |
|
||
| **Канал по умолчанию** | 56 (из Settings) | **44 (жестко зашит)** |
|
||
| **Фолбек IP** | 158.247.241.191 | Отсутствует |
|
||
|
||
### 🔧 Технические отличия
|
||
|
||
#### Шифрование (ИДЕНТИЧНО):
|
||
```csharp
|
||
// Оба варианта используют одинаковые ключи
|
||
keyByte = MD5("73!2#qweaSdzxc4r")
|
||
ivByte = MD5("0_=op[l:',./vf73")
|
||
```
|
||
|
||
#### Массивы каналов:
|
||
```csharp
|
||
// Обычная версия: каналы берутся из Settings
|
||
Settings.Default.Chenal = 56
|
||
|
||
// Samsung версия: жестко зашитые каналы
|
||
chenals = {0, 55, 54, 53, 51, 49, 52, 50, 48, 47, 46, 45}
|
||
Chenal = 44 // фиксированный канал
|
||
```
|
||
|
||
---
|
||
|
||
## 🏗️ АРХИТЕКТУРНЫЕ СХОДСТВА
|
||
|
||
### ✅ Общие компоненты:
|
||
- Идентичная структура классов
|
||
- Одинаковые алгоритмы шифрования
|
||
- Схожий протокол передачи данных
|
||
- Аналогичные библиотеки (AForge, FFmpeg)
|
||
- Идентичная логика сокетов
|
||
|
||
### 📁 Структура файлов:
|
||
```
|
||
Обе версии содержат:
|
||
├── Form1.cs (главная форма)
|
||
├── InOutSocket.cs (сетевой код)
|
||
├── Decoder.cs (декодирование)
|
||
├── Program.cs (точка входа)
|
||
├── SaveVideo.cs (сохранение)
|
||
├── UCPictureBox.cs (UI)
|
||
└── Properties/ (настройки)
|
||
|
||
Только в Samsung:
|
||
└── Form2.cs (дополнительная форма)
|
||
```
|
||
|
||
---
|
||
|
||
## 🔗 ВОЗМОЖНОСТЬ ОБЪЕДИНЕНИЯ
|
||
|
||
### ✅ **ДА, ОБЪЕДИНЕНИЕ ВОЗМОЖНО!**
|
||
|
||
**Причины:**
|
||
1. **Идентичная кодовая база** (~95% совпадений)
|
||
2. **Одинаковые протоколы** шифрования
|
||
3. **Схожая архитектура** сетевого взаимодействия
|
||
4. **Единые библиотеки** и зависимости
|
||
|
||
### 🎯 Стратегия объединения:
|
||
|
||
#### 1. Конфигурационный подход
|
||
```csharp
|
||
public class ServerConfig
|
||
{
|
||
public string SignalingServer { get; set; }
|
||
public int DataPort { get; set; }
|
||
public byte DefaultChannel { get; set; }
|
||
public string FallbackIP { get; set; }
|
||
}
|
||
|
||
// Профили конфигураций
|
||
var profiles = new Dictionary<string, ServerConfig>
|
||
{
|
||
["standard"] = new ServerConfig
|
||
{
|
||
SignalingServer = "vidser.top",
|
||
DataPort = 3033,
|
||
DefaultChannel = 56,
|
||
FallbackIP = "158.247.241.191"
|
||
},
|
||
["samsung"] = new ServerConfig
|
||
{
|
||
SignalingServer = "s1.cc-vst.online",
|
||
DataPort = 3234,
|
||
DefaultChannel = 44,
|
||
FallbackIP = null
|
||
},
|
||
["custom"] = new ServerConfig
|
||
{
|
||
SignalingServer = "your-server.com",
|
||
DataPort = 5000,
|
||
DefaultChannel = 10,
|
||
FallbackIP = "your-fallback-ip"
|
||
}
|
||
};
|
||
```
|
||
|
||
---
|
||
|
||
## 🚀 ПЛАН СОЗДАНИЯ ГЛОБАЛЬНОЙ ВЕРСИИ
|
||
|
||
### Этап 1: Создание базовой структуры
|
||
```bash
|
||
mkdir -p /home/data/decompile/desktop_global
|
||
```
|
||
|
||
### Этап 2: Унификация кода
|
||
- Параметризация серверных подключений
|
||
- Создание системы профилей
|
||
- Добавление поддержки собственных серверов
|
||
|
||
### Этап 3: Улучшения безопасности
|
||
- Динамические ключи шифрования
|
||
- Аутентификация пользователей
|
||
- TLS/SSL соединения
|
||
|
||
---
|
||
|
||
## 📋 КОНКРЕТНЫЕ ИЗМЕНЕНИЯ ДЛЯ УНИФИКАЦИИ
|
||
|
||
### 1. Модифицированный InOutSocket.cs:
|
||
```csharp
|
||
public class InOutSocket
|
||
{
|
||
private ServerConfig config;
|
||
|
||
public InOutSocket(Form1 form, ServerConfig serverConfig = null)
|
||
{
|
||
Form = form;
|
||
config = serverConfig ?? ServerConfig.GetDefault();
|
||
|
||
// Использование конфигурации вместо жестко зашитых значений
|
||
string serverUrl = $"https://{config.SignalingServer}/get-ip-kr.php?port={{0}}";
|
||
urst = string.Format(serverUrl, config.DefaultChannel);
|
||
}
|
||
|
||
private void Events()
|
||
{
|
||
// Использование config.DataPort вместо 3033/3234
|
||
tcpClient = new TcpClient(IpGet(), config.DataPort);
|
||
// ...
|
||
}
|
||
}
|
||
```
|
||
|
||
### 2. Система конфигурации:
|
||
```csharp
|
||
public static class ServerConfig
|
||
{
|
||
public static ServerConfig LoadFromFile(string configPath)
|
||
{
|
||
// Загрузка из JSON/XML конфига
|
||
}
|
||
|
||
public static ServerConfig GetDefault()
|
||
{
|
||
return profiles["custom"]; // Наш сервер по умолчанию
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 🛡️ СОБСТВЕННАЯ СЕРВЕРНАЯ ИНФРАСТРУКТУРА
|
||
|
||
### Требуемые компоненты:
|
||
|
||
#### 1. Сигналинг сервер (замена vidser.top/s1.cc-vst.online)
|
||
```typescript
|
||
// Node.js + Express
|
||
app.get('/get-ip-kr.php', (req, res) => {
|
||
const port = req.query.port;
|
||
const mediaServerIP = getMediaServerForChannel(port);
|
||
|
||
// Возвращаем IP в бинарном формате (4 байта)
|
||
const ipBytes = mediaServerIP.split('.').map(n => parseInt(n));
|
||
res.writeHead(200, {'Content-Type': 'application/octet-stream'});
|
||
res.end(Buffer.from(ipBytes));
|
||
});
|
||
```
|
||
|
||
#### 2. Медиа-сервер (замена реле на портах 3033/3234)
|
||
```typescript
|
||
// TCP сервер для медиа-реле
|
||
const server = net.createServer((socket) => {
|
||
socket.on('data', (data) => {
|
||
const type = data[0]; // 0=receiver, 1=sender
|
||
const channel = data[1];
|
||
|
||
// Логика соединения устройств по каналам
|
||
handleChannelConnection(socket, type, channel);
|
||
});
|
||
});
|
||
|
||
server.listen(5000); // Наш порт
|
||
```
|
||
|
||
---
|
||
|
||
## 💡 РЕКОМЕНДАЦИИ
|
||
|
||
### ✅ Немедленные действия:
|
||
1. **Создать объединенную версию** с поддержкой профилей
|
||
2. **Заменить внешние серверы** на собственные
|
||
3. **Добавить веб-интерфейс** для управления
|
||
4. **Улучшить безопасность** (TLS, аутентификация)
|
||
|
||
### 🔄 Долгосрочные улучшения:
|
||
1. **WebRTC** вместо TCP реле
|
||
2. **Cloud-native** архитектура
|
||
3. **Мобильные приложения** нового поколения
|
||
4. **AI-анализ** видеопотоков
|
||
|
||
---
|
||
|
||
## 🎯 ЗАКЛЮЧЕНИЕ
|
||
|
||
**ОБЪЕДИНЕНИЕ НА 100% ВОЗМОЖНО!**
|
||
|
||
Обе версии имеют **идентичную архитектуру** и отличаются только:
|
||
- URL серверов
|
||
- Номерами портов
|
||
- Каналами по умолчанию
|
||
|
||
Простая **параметризация** позволит создать **универсальную версию**, поддерживающую:
|
||
- ✅ Оба существующих протокола
|
||
- ✅ Собственные серверы
|
||
- ✅ Расширенную функциональность
|
||
- ✅ Улучшенную безопасность
|
||
|
||
**Следующий шаг:** Создание desktop_global с унифицированным кодом! |