8.1 KiB
8.1 KiB
🔍 СРАВНИТЕЛЬНЫЙ АНАЛИЗ ДВУХ ВЕРСИЙ 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 | Отсутствует |
🔧 Технические отличия
Шифрование (ИДЕНТИЧНО):
// Оба варианта используют одинаковые ключи
keyByte = MD5("73!2#qweaSdzxc4r")
ivByte = MD5("0_=op[l:',./vf73")
Массивы каналов:
// Обычная версия: каналы берутся из 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 (дополнительная форма)
🔗 ВОЗМОЖНОСТЬ ОБЪЕДИНЕНИЯ
✅ ДА, ОБЪЕДИНЕНИЕ ВОЗМОЖНО!
Причины:
- Идентичная кодовая база (~95% совпадений)
- Одинаковые протоколы шифрования
- Схожая архитектура сетевого взаимодействия
- Единые библиотеки и зависимости
🎯 Стратегия объединения:
1. Конфигурационный подход
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: Создание базовой структуры
mkdir -p /home/data/decompile/desktop_global
Этап 2: Унификация кода
- Параметризация серверных подключений
- Создание системы профилей
- Добавление поддержки собственных серверов
Этап 3: Улучшения безопасности
- Динамические ключи шифрования
- Аутентификация пользователей
- TLS/SSL соединения
📋 КОНКРЕТНЫЕ ИЗМЕНЕНИЯ ДЛЯ УНИФИКАЦИИ
1. Модифицированный InOutSocket.cs:
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. Система конфигурации:
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)
// 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)
// 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); // Наш порт
💡 РЕКОМЕНДАЦИИ
✅ Немедленные действия:
- Создать объединенную версию с поддержкой профилей
- Заменить внешние серверы на собственные
- Добавить веб-интерфейс для управления
- Улучшить безопасность (TLS, аутентификация)
🔄 Долгосрочные улучшения:
- WebRTC вместо TCP реле
- Cloud-native архитектура
- Мобильные приложения нового поколения
- AI-анализ видеопотоков
🎯 ЗАКЛЮЧЕНИЕ
ОБЪЕДИНЕНИЕ НА 100% ВОЗМОЖНО!
Обе версии имеют идентичную архитектуру и отличаются только:
- URL серверов
- Номерами портов
- Каналами по умолчанию
Простая параметризация позволит создать универсальную версию, поддерживающую:
- ✅ Оба существующих протокола
- ✅ Собственные серверы
- ✅ Расширенную функциональность
- ✅ Улучшенную безопасность
Следующий шаг: Создание desktop_global с унифицированным кодом!