Протокол CS378: настройка шаринга в OScam и CCcam

Главная Статьи Протокол CS378: настройка шаринга в OScam и CCcam

Дата публикации

09.06.2026

Протокол CS378: настройка шаринга в OScam и CCcam

Если вы занимаетесь настройкой кардшаринга больше недели, то наверняка уже встречали строки вида CWS = host 378 user pass 0102030405060708091011121314 и задавались вопросом — что такое этот CS378 протокол шаринга и чем он отличается от обычного newcamd. Отвечаю сразу: ничем. Но давайте по порядку.

Что такое протокол CS378 и его связь с newcamd

CS378 протокол шаринга — это не отдельный стандарт. Это просто устоявшееся сленговое название для подключения по протоколу newcamd (точнее, newcamd525) через порт 378. Когда-то давно большинство серверов слушали именно этот порт, название прилипло, и теперь "CS378" используется как синоним newcamd-подключения.

Путаница возникает потому, что некоторые сайты подают CS378 как самостоятельный протокол с отдельной спецификацией. Это неправда. Под капотом — всё тот же newcamd525 с 3DES-шифрованием.

CS378 как разновидность newcamd 525

Newcamd525 — это версия протокола newcamd, разработанная для обмена CW (Control Words) между клиентом и сервером. Протокол работает поверх TCP, шифрует трафик трёхключевым DES, и именно эта версия стала стандартом де-факто для большинства шаринг-систем: OScam, CCcam, MgCamd все умеют с ним работать.

Почему 378 — это номер порта, а не отдельный стандарт

378 — просто TCP-порт. Исторически сложилось, что первые публичные newcamd-серверы запускали именно на нём. Сегодня реальный порт может быть любым — 12000, 15000, 28000, что угодно. Название "CS378" осталось, а вот порт нужно смотреть в данных, которые вам выдал провайдер.

Так что когда кто-то говорит "у меня CS378-подключение на порту 15000" — это звучит немного оксюморонно, но все понимают, о чём речь.

Структура строки подключения CS378

Строка состоит из пяти полей. В MgCamd и некоторых других клиентах она выглядит так:

CWS = host port username password deskey

Пример с обезличенными данными:

CWS = myserver.example.com 378 myuser mypassword 0102030405060708091011121314

DES-ключ — это 14 байт, записанных в hex: ровно 28 символов, без пробелов, без переносов строк. Он должен быть одинаковым на сервере и на клиенте. Если хотя бы один символ отличается — соединение не поднимется.

Структура пакета и порты CS378

Понимать внутреннее устройство протокола полезно не для академического интереса, а для нормальной отладки. Когда знаешь, что происходит на уровне пакетов, намного проще читать логи.

Рукопожатие и обмен DES-ключом

Соединение начинается стандартно: клиент открывает TCP-сокет на нужный порт. После установки TCP-сессии клиент отправляет login-пакет, зашифрованный 3DES с заранее известным ключом. Сервер отвечает MSG_CLIENT_2_SERVER_LOGIN_ACK — это подтверждение успешной аутентификации.

Следом сервер присылает CARD_DATA — пакет с информацией о карте: CAID (идентификатор системы условного доступа) и провайдер. Если CARD_DATA пришёл — значит карта на месте и сервер готов обрабатывать ECM-запросы.

Формат ECM/EMM-пакетов в newcamd

ECM (Entitlement Control Message) — это запрос на расшифровку текущего CW. Клиент шлёт ECM серверу, сервер обращается к карте, карта возвращает CW, сервер отправляет его обратно клиенту. Весь этот обмен зашифрован 3DES. EMM (Entitlement Management Message) — управляющие сообщения, обновляющие права карты; для обычного декодирования они менее важны.

В логах OScam ECM-обмен виден как строки с временем ответа — то самое "ecm time", которое показывает, сколько миллисекунд ушло от запроса до получения CW.

Порт 378 и нестандартные порты

Протокол никак не привязан к порту 378. Это конвенция, а не требование спецификации. Реальный порт указывается в конфигурационной строке и должен совпадать с тем, на котором слушает сервер. Не угадывайте порт — берите его из учётных данных, которые дал провайдер.

Часто вижу ошибку: человек получает данные с портом 15000, а в конфиге прописывает 378 "потому что CS378". Ридер не поднимается, начинается поиск проблем там, где их нет.

Настройка CS378-ридера в OScam

OScam — наиболее распространённый клиент для работы с newcamd. Конфигурация ридера находится в файле oscam.server. Путь зависит от прошивки и сборки:

  • /etc/tuxbox/config/oscam.server — классический Enigma2
  • /var/keys/oscam.server — некоторые сборки под Dreambox
  • /usr/keys/oscam.server — другие варианты
  • /etc/oscam/oscam.server — Linux-установка через пакетный менеджер

Если не знаете, где у вас конфиги — find / -name oscam.server 2>/dev/null покажет за секунду.

Секция [reader] в oscam.server

Минимально рабочий блок выглядит так:

[reader]
label         = mycs378reader
protocol      = newcamd
device        = myserver.example.com,378
key           = 0102030405060708091011121314
user          = myuser
password      = mypassword
caid          = 0500
group         = 1
inactivitytimeout = 30
reconnecttimeout  = 15

Здесь device — это host и порт через запятую, без пробела. Некоторые забывают про запятую и пишут пробел — OScam это не переварит.

Параметры protocol = newcamd и key

protocol = newcamd — это прямое указание OScam использовать протокол newcamd525. Параметр key принимает 28 hex-символов без пробелов. Если сервер использует стандартный дефолтный ключ, то это 0102030405060708091011121314 — но у нормальных провайдеров ключ уникальный.

inactivitytimeout задаёт, через сколько секунд OScam считает соединение мёртвым при отсутствии активности. reconnecttimeout — пауза между попытками переподключения. Я обычно ставлю 30 и 15 соответственно — работает нормально в большинстве сетей.

Привязка CAID/ident и group

Параметр caid говорит OScam, какие системы условного доступа обслуживает этот ридер. Если сервер отдаёт, скажем, Irdeto и Viaccess — можно указать оба через запятую: caid = 0604,0500. Если не указать — OScam попробует определить сам из CARD_DATA, но это не всегда работает корректно.

Параметр ident уточняет провайдера внутри CAID. Именно расхождение здесь — самая частая причина статуса CONNECTED без декодирования. Про это подробнее ниже.

group должен совпадать с группами в oscam.user, иначе пользователи не увидят этот ридер.

Проверка статуса в веб-интерфейсе

Веб-интерфейс OScam по умолчанию доступен на порту 8888 (или 8080, зависит от конфига в oscam.conf). В разделе "Readers" видно статус каждого ридера: CONNECTED означает, что TCP-соединение установлено. CARD рядом — что карта ответила и CAID/провайдер определены. Колонка ECM Time показывает среднее время ответа в миллисекундах.

Если статус CONNECTED, но колонка ECM Time пустая или ноль — карта есть, но ECM-запросы либо не приходят, либо уходят к другому ридеру, либо не совпадает CAID/ident.

Настройка CS378 в CCcam и MgCamd

Не все используют OScam. CCcam до сих пор живёт на многих ресиверах, а MgCamd имеет свой синтаксис. Путаться в форматах не стоит — они разные, но логика одна.

Строка C: и N: в CCcam.cfg

Файл конфигурации CCcam: /var/etc/CCcam.cfg или /etc/CCcam.cfg в зависимости от прошивки.

Строка C: — это подключение к другому CCcam-серверу (протокол CCcam). Строка N: — подключение по newcamd. Для CS378 протокол шаринга используется именно N::

N: myserver.example.com 378 myuser mypassword 01 02 03 04 05 06 07 08 09 10 11 12 13 14

Обратите внимание: в CCcam.cfg DES-ключ пишется через пробел — каждый байт отдельно. Это отличие от OScam, где ключ идёт сплошной строкой. Перепутать легко, и ошибка будет немой — CCcam просто не поднимет ридер.

Файл newcamd.list для MgCamd

MgCamd использует отдельный файл /var/keys/newcamd.list (путь может отличаться в зависимости от прошивки). Формат:

CWS = myserver.example.com 378 myuser mypassword 0102030405060708091011121314 { 0500:000000 }

Блок в фигурных скобках — необязательный, но полезный: он указывает CAID и ident для фильтрации. В MgCamd конфигурация может также лежать в файле mg_cfg — зависит от версии.

Отличия синтаксиса от OScam

Главное отличие — формат DES-ключа. В OScam: 28 hex-символов без пробелов. В CCcam: 14 пар через пробел. В MgCamd: 28 символов без пробелов, как в OScam. Это самый частый источник копипаст-ошибок, когда данные переносят между клиентами.

И ещё: в CCcam нет тонкой настройки CAID/ident прямо в строке N: — фильтрация делается через другие механизмы конфига, либо сервер сам ограничивает share.

Диагностика и типичные ошибки CS378

Когда ридер не работает, нужна методичная отладка, а не случайное тыкание настроек. Вот реальные сценарии, которые встречаются постоянно.

CONNECTED без ECM: проблема CAID/ident

Статус CONNECTED означает только одно: TCP-рукопожатие прошло, логин принят, карта ответила. Это не значит, что декодирование работает. Если каналы не открываются — смотрите в сторону несовпадения CAID или ident.

Частый случай: CAID в конфиге указан правильно (например, 0500 для Viaccess), но провайдер (ident) другой. ECM уходит на сервер, но сервер не находит нужного share для этого конкретного провайдера и возвращает ошибку. В логах OScam это выглядит как no matching reader или not found рядом с ECM-запросом.

Решение: уточнить у провайдера полный список CAID:ident, которые он отдаёт, и прописать их явно в параметре ident в oscam.server.

Ошибка bad DES key length

OScam прямо пишет в лог: bad DES key length. Причина одна — ключ не равен 28 hex-символам. Самые частые источники:

  • Лишний пробел в начале или конце — часто появляется при копировании из письма или веб-формы
  • Перенос строки — если ключ скопирован с переносом, nano или другой редактор может добавить символ \n
  • Ключ скопирован в формате CCcam (через пробелы) прямо в поле OScam

Проверяйте длину: echo -n "0102030405060708091011121314" | wc -c — должно быть 28.

Постоянные реконнекты и timeout

Если ридер постоянно переподключается — смотрите в две стороны. Первая: сервер разрывает соединение из-за лимита сессий. Большинство провайдеров разрешают одно одновременное подключение на аккаунт. Если вы запустили OScam и CCcam с одними и теми же данными — сервер будет кикать одно из соединений.

Вторая: фаервол или роутер режет TCP keepalive. Newcamd — долгоживущее TCP-соединение. Если между клиентом и сервером стоит NAT с агрессивным таймаутом (часто 30-60 секунд на дешёвых роутерах), соединение рвётся на уровне сети, а OScam об этом узнаёт только через inactivitytimeout. Решение — уменьшить inactivitytimeout до 15-20 секунд или включить TCP keepalive на уровне ОС.

Чтение логов OScam (loghistory, debug 255)

Нормально отлаживать CS378 без логов невозможно. Запустить OScam с максимальным дебагом:

oscam -b -d 65535 -l /tmp/oscam_debug.log

Или через веб-интерфейс: раздел Config → Debug, установить Debug Level в 255 или 65535. Лог пишется в /var/log/oscam/oscam.log или по пути из oscam.conf → параметр logfile.

Что искать в логе:

grep -E "login|ECM|CAID|reader|DES" /var/log/oscam.log | tail -50

Строки с login покажут успех или отказ авторизации. Строки с ECM покажут, приходят ли запросы и что с ними происходит. no matching reader — CAID/ident не совпадает. timeout — сетевая проблема или сервер не отвечает.

Как выбрать сервер CS378: критерии без рекламы

Когда нужно оценить качество подключения — не верьте никаким обещаниям на сайтах. Всё проверяется только практикой, и инструменты для этого уже встроены в OScam.

Стабильность и uptime соединения

Хороший сервер держит TCP-соединение без обрывов. Если ридер реконнектится чаще одного раза в несколько часов — это тревожный знак. В веб-интерфейсе OScam в разделе Readers видна статистика реконнектов. Нормальный показатель — ноль или единицы за сутки.

Тестовый период важен именно для этого. Один день — мало, смотрите поведение минимум 48-72 часа в разное время суток, включая прайм-тайм вечером.

Среднее ECM time и расстояние до сервера

ECM time — главный практический показатель. До 200 мс — отлично, переключение каналов мгновенное. 200-400 мс — приемлемо, небольшая задержка иногда заметна. Выше 500 мс — начинаются проблемы: зависания при переключении, иногда потеря кадров.

На ECM time влияет физическое расстояние до сервера, загрузка сервера и качество маршрутизации. Сервер в соседней стране обычно даёт меньше задержек, чем сервер на другом континенте. Но это не правило — маршрутизация интернета нелинейна.

Смотреть ECM time в OScam: веб-интерфейс → Readers → колонка Avg. ECM Time. Или в разделе Services для каждого конкретного канала.

Поддержка нужных CAID и локального экранирования

Перед тем как платить — убедитесь, что сервер реально отдаёт нужные вам CAID и ident. Уточните список у провайдера и сопоставьте с тем, что вам нужно декодировать. Несовпадение CAID — это не проблема настройки, это проблема выбора сервера.

Также стоит проверить, нет ли у провайдера ограничений по количеству одновременных подключений или по конкретным каналам. Это напрямую влияет на то, можно ли смотреть несколько каналов одновременно на разных ресиверах с одним аккаунтом.

CS378 — это отдельный протокол или newcamd?

Это подключение по протоколу newcamd525 на исторически закрепившемся порту 378. Самостоятельным стандартом CS378 не является — это просто устоявшееся название в сообществе. Под капотом всегда newcamd с 3DES-шифрованием.

Какой длины должен быть DES-ключ для CS378?

14 байт — это 28 шестнадцатеричных символов. Записывается без пробелов единой строкой. Ключ должен быть идентичным на сервере и клиенте. Пример правильного формата для OScam и MgCamd: 0102030405060708091011121314.

Ридер в статусе CONNECTED, но каналы не открываются — почему?

Чаще всего это несовпадение CAID или ident между тем, что запрашивает клиент, и тем, что реально есть на сервере. Также возможен лимит одновременных соединений — если аккаунт уже используется где-то ещё. Смотрите ECM time в веб-интерфейсе и grep по логам на no matching reader.

Можно ли использовать порт, отличный от 378?

Да, 378 — просто историческая конвенция. В параметре device в oscam.server или в строке подключения указывается фактический порт сервера. Это может быть 12000, 15000, 28000 или любой другой. Смотрите в данных доступа, которые выдал провайдер.

Где в OScam прописывается CS378-подключение?

В файле oscam.server, в секции [reader]. Параметры: protocol = newcamd, device = host,port, key = ваш DES-ключ. Путь к файлу зависит от прошивки: /etc/tuxbox/config/oscam.server, /var/keys/oscam.server или /etc/oscam/oscam.server.

Почему OScam пишет bad DES key length?

Ключ не равен ровно 28 hex-символам. Самая частая причина — лишний пробел или перенос строки при копировании. Проверьте: echo -n "ваш_ключ" | wc -c — результат должен быть 28. Также убедитесь, что ключ не в формате CCcam (14 пар через пробел) — в OScam такой формат не работает.

О статье

  • Практические советы и инструкции
  • Материалы по спутниковому ТВ
  • Поддержка и помощь 24/7