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 или внешние мониторы.