Cardsharing: настройка CCcam и OScam сервера в 2026

Cardsharing — это технология совместного использования смарт-карты спутникового ТВ через сеть. Звучит просто, но за этим стоит довольно интересная цепочка протоколов, конфигов и типовых ошибок, о которых мало кто пишет подробно. В этом руководстве разберём всё по-настоящему: с реальными путями к файлам, примерами конфигов и командами для диагностики.

Что такое cardsharing и как работает протокол

Начнём с основ, потому что без понимания архитектуры настраивать что-либо бессмысленно.

Принцип работы: ECM-запросы и DCW-ответы

Ваш ресивер получает зашифрованный DVB-поток от спутника. Внутри потока — ECM-пакеты (Entitlement Control Messages). Это зашифрованные контейнеры, которые содержат Control Word (CW) — ключ для декодирования текущего сегмента видео.

Без валидной смарт-карты ресивер не может расшифровать ECM и получить CW. Именно здесь подключается шаринг: клиент отправляет ECM-пакет на удалённый сервер по TCP, сервер обрабатывает его на реальной физической карте и возвращает расшифрованный CW (DCW — Decoded Control Word). Весь цикл занимает миллисекунды — если сервер близко.

EMM-пакеты (Entitlement Management Messages) работают иначе — они обновляют права на карте. Без доставки EMM ключи на карте устареют через несколько недель, и каналы перестанут открываться. Это одна из частых причин проблем при плохой конфигурации.

Роль сервера, клиента и оригинальной смарт-карты

Сервер — это машина (чаще всего Debian/Ubuntu или Enigma2-ресивер) с физической смарт-картой, подключённой через PC/SC-ридер или встроенный слот. На сервере запущен CCcam или OScam, который слушает входящие ECM-запросы.

Клиент — ваш ресивер или компьютер с эмулятором CAM. Он подключается к серверу по TCP, авторизуется через логин/пароль и начинает отправлять ECM. Физическая карта клиенту не нужна — он работает через виртуальный CAM.

Отличия CCcam, OScam, NewCamd, MgCamd

CCcam — закрытый проприетарный протокол, разработан Christoph Kausch. Простой в настройке, один конфиг, стабильно работает на большинстве спутниковых ресиверов. Минус — разработка заброшена, последняя версия 2.3.2.

OScam (Open Source Cam) — открытый эмулятор с активной разработкой. Поддерживает одновременно несколько протоколов: cccam, newcamd, camd35, gbox. Гибче, но требует больше времени на конфигурацию. Для новых установок рекомендую именно его.

NewCamd — старый протокол, TCP-порт 15000 по умолчанию. Шифрует трафик DES. Используется как клиентский протокол в связке с OScam-сервером.

MgCamd — клиентский эмулятор (не сервер), работает как CAM-плагин на Enigma2. Умеет подключаться к CCcam и NewCamd серверам одновременно.

Что такое C-line и N-line

C-line — строка подключения в формате CCcam-протокола:

C: hostname 12000 username password

N-line — то же самое, но для NewCamd-протокола:

N: hostname 15000 username password 01 02 03 04 05 06 07 08 09 10 11 12 13 14

Последние 14 байт в N-line — DES-ключ для шифрования сессии. Сервер и клиент должны использовать идентичный ключ.

Настройка CCcam-сервера на Linux

Установка CCcam на Debian/Ubuntu

CCcam — бинарник, не собирается из исходников. Скачиваем подходящую версию под архитектуру (x86_64 или ARM для ресиверов), копируем в /usr/bin/CCcam, делаем исполняемым:

chmod +x /usr/bin/CCcam
mkdir -p /var/etc/
touch /var/etc/CCcam.cfg

Для автозапуска создаём init-скрипт или systemd unit. Проверяем что процесс поднялся:

ps aux | grep CCcam

Структура файла /var/etc/CCcam.cfg

Полный рабочий конфиг сервера выглядит так:

# Порт для входящих клиентских подключений
SERVER LISTEN PORT = 12000

# Максимум одновременных клиентов
MAX HOPS = 1
RESHARE = 0

# Включить кэш ECM между клиентами
CACHE EX = 0

# Эмуляция — только если используется SoftCAM
EMU ACTIVE = OFF

# Локальные клиенты (F-line)
F: client1 password123 1 0 0 { 0:0:2 }
F: client2 secret456 1 0 0 { 0:0:1 }

RESHARE = 0 означает что клиент не может пересдавать карту дальше. MAX HOPS = 1 ограничивает глубину ретрансляции. Это важно для контроля нагрузки.

Параметры F-line для локальных клиентов

Формат F-line:

F: <username> <password> <reshare> <ignore_cache> <allow_emm> { <caid:provid:services> }

Параметр { 0:0:2 } означает: разрешить все CAID, все провайдеры, но только 2 одновременных стрима. Если нужно ограничить конкретным CAID: { 0500:032830:0 } — только Viaccess от Canal+.

Настройка SERVER LISTEN PORT

Стандартный порт — 12000. Можно менять, но клиенты должны знать актуальный порт. Если сервер за NAT, нужен проброс этого порта на роутере. Проверить что порт слушается:

ss -tlnp | grep 12000

Логи: /tmp/CCcam.log и уровни отладки

По умолчанию лог пишется в /tmp/CCcam.log. Уровень отладки задаётся в конфиге:

DEBUG LEVEL = 0    # минимум
DEBUG LEVEL = 12   # подробный, включая ECM/DCW
DEBUG LEVEL = 64   # максимум, трафик

Для мониторинга в реальном времени:

tail -f /tmp/CCcam.log | grep -E "(ECM|DCW|CAID)"

Перезапуск демона:

/etc/init.d/cccam restart

Настройка OScam — современная альтернатива

Структура /etc/tuxbox/config/oscam/

На Enigma2-ресиверах конфиги OScam лежат в /etc/tuxbox/config/oscam/. На обычном Linux-сервере — чаще всего /etc/oscam/. Оба пути корректны, зависит от того, как собран бинарник.

ls /etc/oscam/
# oscam.conf  oscam.server  oscam.user  oscam.dvbapi  oscam.srvid

Файлы oscam.conf, oscam.server, oscam.user, oscam.dvbapi

oscam.conf — глобальные настройки:

[global]
logfile = /var/log/oscam/oscam.log
maxlogsize = 1000
nice = -1
waitforcards = 1

[webif]
httpport = 8888
httpuser = admin
httppwd = yourpassword
httpallowed = 127.0.0.1,192.168.1.0/24

oscam.server — описание ридеров (физических карт или upstream-серверов):

[reader]
label = local_viaccess
protocol = mouse
device = /dev/ttyUSB0
caid = 0500
ident = 0500:032830
group = 1
emmcache = 1,3,2

Если нужно подключиться к upstream CCcam-серверу как клиент:

[reader]
label = upstream_server
protocol = cccam
device = hostname,12000
user = myuser
password = mypass
group = 1
caid = 0500,1800
reconnecttimeout = 30

oscam.user — клиенты, подключающиеся к вашему серверу:

[account]
user = client1
pwd = password123
group = 1
caid = 0500,1800
ident = 0500:032830
maxconn = 1

oscam.dvbapi — интеграция с DVB-стеком, нужен на ресиверах:

[dvbapi]
enabled = 1
au = 1
pmt_mode = 0
request_mode = 0
listen_port = 9000

Протоколы: cccam, newcamd, camd35, gbox

OScam поддерживает несколько протоколов одновременно. Для CCcam-клиентов нужен listener в oscam.conf:

[cs357x]
port = 15000@1800:000000

[cccam]
port = 12001

camd35 работает на UDP-порту 33333. gbox — legacy-протокол, используется редко, но OScam его поддерживает.

WebIF на порту 8888 для мониторинга

WebIF — это главное преимущество OScam перед CCcam. Открываем браузер:

http://192.168.1.100:8888

Там видны: все активные ридеры, ECM time в реальном времени, cache hits, EMM count, статус каждого клиента. Если ECM time постоянно выше 600ms — проблема либо в сети, либо ридер перегружен.

Важно: WebIF без пароля и без ограничения по IP — дыра в безопасности. Обязательно настройте httpallowed и httppwd.

Reader-секция для физической карты (mouse/smartreader)

Протокол mouse — для карт через последовательный порт (ISO 7816). Smartreader — USB-ридер от TBS или аналогичный. Если карта не определяется:

lsmod | grep ftdi_sio
# Если пусто:
modprobe ftdi_sio

На новых ядрах Linux (5.15+) Smartreader может не определяться без явной загрузки модуля ftdi_sio. Добавьте его в /etc/modules.

Диагностика проблем: freeze, no signal, FFFFFFFF

FFFFFFFF в логах — карта не отвечает

FFFFFFFF в ECM-ответе означает: расшифровать не удалось. Сервер вернул пустой CW. Причины по убыванию частоты:

  • Неверный CAID или PROVID в конфиге ридера
  • Контракт на карте истёк или приостановлен
  • Канал не входит в пакет этой карты
  • Ошибка в ident-параметре — карта отвергает ECM
  • Карта заморожена из-за отсутствия EMM несколько недель

Проверить CAID канала можно через лог OScam в момент попытки открыть канал. Там будет строчка вроде: ECM received for CAID 0500, PROVID 032830, SID 1234. Сравните с тем, что прописано в ридере.

ECM time > 1000ms — задержка сети

Freeze при просмотре почти всегда вызван высоким ECM time. Допустимо 200–400ms. При 800ms начинаются кратковременные подвисания. При 1500ms канал не открывается вообще.

Скачущий пинг (200ms → 2000ms → 200ms) — признак проблем с маршрутизацией между вами и сервером. Проверьте:

mtr --tcp -P 12000 server.hostname

Это покажет где именно теряются пакеты или растёт latency.

Code 28 / E1 / E2 — ошибки авторизации

Code 28 в CCcam-логах — клиент отключён из-за неверного пароля или превышения лимита одновременных подключений. E1 и E2 в OScam — ошибки авторизации на уровне протокола карты.

При Code 28 сначала проверьте: не открыт ли этот же аккаунт с другого IP. CCcam по умолчанию разрешает только одно соединение на пользователя.

Каналы кодируются периодически — EMM не доходят

Симптом: канал открывается нормально, но через 20–40 минут появляется FFFFFFFF. Через 30 секунд снова открывается. Это классика при проблемах с EMM.

Broadcaster периодически меняет ключи шифрования. Новые ключи доставляются через EMM. Если EMM не доходят до карты (заблокированы в конфиге или сервер их фильтрует), карта не знает новых ключей и начинает возвращать FFFFFFFF.

В OScam проверьте: в ридере должно быть emmcache = 1,3,2 и au = 1 в секции dvbapi. В CCcam — убедитесь что EMM ACTIVE = ON.

Проверка через tcpdump на порту 12000

Когда не понятно вообще ничего — tcpdump спасает:

tcpdump -i eth0 tcp port 12000 -nn -v

Если пакеты идут от клиента, но сервер не отвечает — проблема на стороне сервера. Если пакеты вообще не доходят до сервера — проблема в сети или NAT. Двойной NAT у провайдера интернета (CGNAT) полностью блокирует входящие TCP-соединения — в этом случае нужен VPS как relay или VPN-туннель.

# Посмотреть только SYN-пакеты (попытки подключения):
tcpdump -i eth0 'tcp port 12000 and tcp[tcpflags] & tcp-syn != 0' -nn

Как выбрать провайдера cardsharing — критерии

Аптайм сервера и SLA

Реальный аптайм проверяется только логами OScam за несколько дней тестового периода. Заявленные 99.9% — маркетинг. Смотрите на количество reconnect в логах и на провалы ECM time.

Простой способ мониторинга аптайма:

while true; do
  ping -c 1 -W 2 server.host > /dev/null 2>&1 || echo "$(date): DOWN"
  sleep 60
done >> /var/log/server_uptime.log

ECM response time < 400ms как стандарт

Это жёсткое требование. Сервер с ECM time 600ms — уже на грани. При пиковой нагрузке вечером он будет давать 1000ms+, и у вас появятся freeze.

Геолокация сервера напрямую влияет на ECM time. Если ваш пакет идёт с французского спутника — сервер должен быть в Западной Европе. Сервер в Азии добавит 150–200ms только на маршруте.

Количество локальных карт vs реселл

Реселл — это когда провайдер сам является клиентом чьего-то сервера и перепродаёт доступ. Цепочка: физическая карта → сервер A → реселлер B → вы. Каждый hop добавляет latency и точку отказа.

Уточняйте прямо: есть ли у провайдера физические карты или они перепродают доступ. Провайдеры с локальными картами дают стабильно низкий ECM time.

Поддержка нужных CAID (Viaccess, Nagravision, Irdeto, Conax)

CAID — идентификатор системы условного доступа:

  • 0500 — Viaccess (Canal+, телеканалы Франции)
  • 1800 — Nagravision (Sky Italia, Viasat)
  • 0604 — Irdeto (многие кабельные операторы)
  • 0B00 — Conax (скандинавские пакеты)
  • 0100 — Seca/Mediaguard
  • 1700 — BetaCrypt

Перед оплатой уточняйте конкретный CAID и PROVID нужного вам пакета — не просто "поддерживаем Nagravision", а "поддерживаем 1800:000000 с такими-то каналами".

Тестовый период перед оплатой

48-часового теста достаточно чтобы оценить стабильность. За это время проверьте ECM time в разное время суток — особенно вечером с 19:00 до 23:00 по вашему времени, когда нагрузка максимальна.

Геолокация сервера относительно вашего ТВ-пакета

Это недооценённый критерий. Некоторые системы условного доступа делают гео-проверку: если ECM приходит из региона, где пакет не распространяется, карта может отвергать запросы. Уточняйте где физически расположен сервер.

Безопасность и конфигурация роутера

Проброс порта 12000 только при необходимости

Порт 12000 нужно пробрасывать только если вы хотите принимать входящие подключения от клиентов снаружи. Если вы сами клиент — проброс не нужен, инициатива исходящая.

При пробросе порта убедитесь что на сервере настроен firewall — иначе к вашему CCcam-серверу может подключиться кто угодно.

iptables правила для ограничения IP клиентов

Базовое правило: разрешить только конкретные IP клиентов:

# Разрешить конкретный IP
iptables -A INPUT -p tcp --dport 12000 -s 203.0.113.45 -j ACCEPT

# Запретить все остальные подключения на этот порт
iptables -A INPUT -p tcp --dport 12000 -j DROP

# Если клиенты с динамическими IP — разрешить подсеть
iptables -A INPUT -p tcp --dport 12000 -s 192.168.1.0/24 -j ACCEPT

Сохранить правила:

iptables-save > /etc/iptables/rules.v4

Использование DDNS для динамического IP

Если у вас нет статического IP — настройте DDNS. DuckDNS бесплатный и работает надёжно. После регистрации:

# Обновление записи через curl (запускать по cron):
curl "https://www.duckdns.org/update?domains=yourname&token=your-token&ip="

В конфиге клиента вместо IP прописываете доменное имя: C: yourname.duckdns.org 12000 user pass. При смене IP роутер обновит DNS-запись автоматически.

Если провайдер интернета использует CGNAT (двойной NAT) — динамический IP вам не поможет. Входящие соединения физически невозможны. Решение: арендовать VPS в Европе, настроить туннель (WireGuard или SSH), и принимать клиентов через VPS.

Шифрование трафика через stunnel или VPN-туннель

CCcam-трафик передаётся без шифрования по умолчанию. Если это принципиально — можно завернуть в stunnel.

Конфиг stunnel на сервере (/etc/stunnel/stunnel.conf):

[cccam-ssl]
accept = 12443
connect = 127.0.0.1:12000
cert = /etc/stunnel/server.crt
key = /etc/stunnel/server.key

На клиенте stunnel перенаправляет локальный порт 12000 на зашифрованный 12443 сервера. Клиент подключается к 127.0.0.1:12000, stunnel шифрует и отправляет.

WireGuard проще в настройке и быстрее. Если у вас есть VPS — WireGuard-туннель между сервером и VPS решает одновременно и проблему CGNAT, и шифрование.

Защита WebIF OScam паролем

WebIF без пароля — это открытый доступ к управлению всем сервером. Любой в вашей сети может перезапустить ридер, добавить пользователей или посмотреть логи со всеми данными клиентов.

Минимальная конфигурация в oscam.conf:

[webif]
httpport = 8888
httpuser = admin
httppwd = StrongPassword2026!
httpallowed = 127.0.0.1,192.168.1.0/24
httpdyndns = 0

Параметр httpallowed ограничивает доступ к WebIF по IP. Если WebIF недоступен снаружи, но открыт локально — это нормально и правильно. Если нужен удалённый доступ — добавьте конкретный IP или используйте SSH-туннель:

ssh -L 8888:localhost:8888 [email protected]

После этого WebIF открывается в браузере на localhost:8888, трафик зашифрован SSH.

В чём разница между CCcam и OScam?

CCcam — закрытый протокол, один конфиг, простая настройка, разработка остановлена на версии 2.3.2. OScam — open-source, поддерживает cccam, newcamd, camd35 и gbox одновременно, активно развивается, имеет WebIF для мониторинга. OScam гибче и лучше диагностируется — для новых установок выбирайте его. CCcam оправдан только если ваш ресивер не поддерживает OScam нативно.

Какой порт использует cardsharing по умолчанию?

CCcam — TCP 12000. NewCamd — TCP 15000. Camd35 — UDP 33333. Это де-факто стандарты, но любой из портов можно изменить в конфиге. Важно чтобы сервер и клиент использовали одинаковый порт, и он не был заблокирован firewall или роутером.

Что означает ECM time и какое значение нормальное?

ECM time — интервал от отправки ECM-запроса до получения Control Word обратно. Норма: 200–400ms. При 800ms начинаются кратковременные freeze. При значениях выше 1500ms канал не открывается вообще. Смотрите ECM time в WebIF OScam в реальном времени — это главный показатель качества соединения с сервером.

Почему в логах появляется FFFFFFFF?

FFFFFFFF — сервер не смог расшифровать ECM и вернул пустой Control Word. Основные причины: неверный CAID или PROVID в конфиге ридера, истёкший контракт на смарт-карте, канал не входит в подписанный пакет, карта давно не получала EMM и не знает актуальных ключей. Смотрите в логах OScam CAID и PROVID запроса — сравните с тем, что прописано в reader-секции.

Можно ли использовать cardsharing без статического IP?

Да, через DDNS. DuckDNS, No-IP и аналоги обновляют DNS-запись при смене IP. В конфиге клиента прописываете доменное имя вместо IP. Роутер запускает DDNS-клиент и автоматически обновляет запись при изменении адреса. Если провайдер использует CGNAT — DDNS не поможет, входящие соединения физически недоступны. Нужен VPS с туннелем.

Какие CAID поддерживают современные провайдеры?

Основные системы условного доступа: 0500 (Viaccess), 1800 (Nagravision), 0604 (Irdeto), 0B00 (Conax), 0100 (Seca/Mediaguard), 1700 (BetaCrypt/Cryptoworks). Какие CAID поддерживает конкретный провайдер — зависит от того, какие физические карты у него есть. Всегда уточняйте конкретный CAID и PROVID вашего пакета перед подпиской.

Практические советы для стабильного просмотра

Даже самая стабильная линия CCCam или OSCam требует пары простых подготовительных шагов. Обновляйте прошивку ресивера, раз в неделю очищайте ECM‑кеш и держите 15–20% свободного места на USB‑накопителе или во встроенной памяти, чтобы кардридер записывал ключи без задержек.

При настройке антенны оставляйте запас по MER/BER: смещение на два градуса или ослабленный F‑коннектор чаще становится причиной “фризов”, чем сам кардшаринг. Держите под рукой короткий патч‑корд для проверки другого роутера и сохраните два профиля в OSCam — под TCP и под UDP — чтобы мгновенно переключиться, если провайдер начнёт фильтровать протокол.

Utgard.tv следит за каждым хабом 24/7, однако вы можете ускорить диагностику, если будете вести небольшой журнал действий. Записывайте время переключения канала, активный CAID и то, использовали ли вы Wi‑Fi или Ethernet. Такой мини‑отчёт позволит инженерам воспроизвести вашу конфигурацию в лаборатории и предложить решение не за часы, а за минуты.

  • Держите активными две линии: если первый сервер уходит на обслуживание, второй тут же подхватывает поток без повторного ввода логина.
  • Раз в месяц делайте замер скорости и задержек. Стабильных 1–2 Мбит/с при пинге до 80 мс достаточно для SD/HD, но если джиттер превышает 20 мс — переведите роутер на провод.
  • Сохраните в закладки страницу статуса Utgard.tv и Telegram‑бота @utgard_tv_bot — там появляются уведомления о работах раньше, чем успеют среагировать SEMrush или внешние мониторы.