Files
SuperVPN/Docs/COMPARISON_ANALYSIS.md
2025-10-12 11:06:25 +09:00

8.1 KiB
Raw Blame History

🔍 СРАВНИТЕЛЬНЫЙ АНАЛИЗ ДВУХ ВЕРСИЙ 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 (дополнительная форма)

🔗 ВОЗМОЖНОСТЬ ОБЪЕДИНЕНИЯ

ДА, ОБЪЕДИНЕНИЕ ВОЗМОЖНО!

Причины:

  1. Идентичная кодовая база (~95% совпадений)
  2. Одинаковые протоколы шифрования
  3. Схожая архитектура сетевого взаимодействия
  4. Единые библиотеки и зависимости

🎯 Стратегия объединения:

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); // Наш порт

💡 РЕКОМЕНДАЦИИ

Немедленные действия:

  1. Создать объединенную версию с поддержкой профилей
  2. Заменить внешние серверы на собственные
  3. Добавить веб-интерфейс для управления
  4. Улучшить безопасность (TLS, аутентификация)

🔄 Долгосрочные улучшения:

  1. WebRTC вместо TCP реле
  2. Cloud-native архитектура
  3. Мобильные приложения нового поколения
  4. AI-анализ видеопотоков

🎯 ЗАКЛЮЧЕНИЕ

ОБЪЕДИНЕНИЕ НА 100% ВОЗМОЖНО!

Обе версии имеют идентичную архитектуру и отличаются только:

  • URL серверов
  • Номерами портов
  • Каналами по умолчанию

Простая параметризация позволит создать универсальную версию, поддерживающую:

  • Оба существующих протокола
  • Собственные серверы
  • Расширенную функциональность
  • Улучшенную безопасность

Следующий шаг: Создание desktop_global с унифицированным кодом!