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 вашего пакета перед подпиской.

Practical checklist for smooth viewing

Even the best CCCam or OSCam line needs two or three simple preparations. Update your receiver firmware, reset the ECM cache once a week and keep 15–20% free space on the USB stick or internal flash so that the reader can store keys without delays.

When tuning a dish, aim for MER/BER reserve: a two‑degree offset or a loose F‑connector often causes the “freezing” that users blame on cardsharing. Keep a short patch cord to test alternative routers, and save two profiles in OSCam — one for TCP, one for UDP — so you can switch instantly if your ISP starts filtering a protocol.

Utgard.tv monitors each hub 24/7, but you can speed up diagnostics by keeping a short log of your receiver actions. Note the time when you changed the channel, which CAID was active and whether you used Wi‑Fi or Ethernet. This tiny “journal” helps engineers reproduce your environment in the lab and return with a solution in minutes instead of hours.

  • Keep two line slots enabled: if the first server hits a maintenance window, the second one instantly takes over without re-entering credentials.
  • Run a monthly speed and latency test. Stable 1–2 Mbps with ping <80 ms is enough for SD/HD, but if jitter exceeds 20 ms, switch the router to wired mode.
  • Save the Utgard.tv status page and Telegram bot @utgard_tv_bot to bookmarks — they publish maintenance notices before SEMrush or uptime monitors raise alerts.