Cardsharing: что это, как работает CCcam и OScam
Cardsharing — это технология совместного использования смарт-карты платного телевидения через сеть. Один ресивер с реальной картой подключён к серверу, остальные клиенты получают от него зашифрованные ключи для декодирования потока. Звучит просто, но под капотом — цепочка ECM/EMM-запросов, Control Words и точного тайминга. Если где-то задержка — картинка замерзает. Разберём, как это устроено технически.
Что такое cardsharing и как он работает технически
Спутниковый сигнал передаётся в зашифрованном виде — scrambled поток. Для расшифровки ресиверу нужен Control Word (CW) — 8-байтный ключ, который меняется каждые 7–10 секунд. Сам CW зашифрован в ECM (Entitlement Control Message) и расшифровать его может только авторизованная смарт-карта с правами на данный пакет каналов.
При cardsharing клиентский ресивер отправляет ECM на удалённый сервер, там смарт-карта расшифровывает ключ и возвращает CW клиенту. Клиент декодирует поток. Всё это происходит за 100–400ms — незаметно для зрителя. Трафик минимален: около 1–2 KB/s на канал.
Принцип обмена ECM/EMM между сервером и клиентом
ECM (Entitlement Control Message) — запрос на получение CW для конкретного канала. EMM (Entitlement Management Message) — сообщения для обновления прав карты, управления подпиской. При нормальной работе EMM идут от провайдера напрямую к карте через reader, ECM — от клиентов к серверу и обратно.
Каждый раз, когда ресивер переключает канал или истекает текущий CW, он отправляет новый ECM-запрос. Сервер получает запрос, передаёт ECM на физическую карту, карта возвращает CW, сервер отправляет его клиенту. Весь цикл должен уложиться до смены следующего CW — иначе freeze.
Роль смарт-карты, CAM-модуля и DVB-ресивера
Смарт-карта — физический токен с чипом, на котором хранятся ключи и права подписки. CAM-модуль (Conditional Access Module) — это интерфейс между картой и ресивером, вставляется в Common Interface слот. DVB-ресивер — аппаратная часть, которая принимает спутниковый сигнал и передаёт ECM на обработку.
При cardsharing CAM и карта находятся на стороне сервера. Клиентский ресивер работает в режиме softcam — программного эмулятора, который перехватывает ECM и отправляет по сети вместо локального CAM.
Разница между локальной картой и удалённым sharing
С локальной картой весь процесс происходит внутри одного устройства — ECM идёт в CAM, CW возвращается немедленно. Задержка около 20–50ms. При удалённом sharing добавляется сетевая задержка, нагрузка на сервер, возможные потери пакетов. Поэтому ECM time 100–400ms считается нормой, а выше 800ms — уже проблема.
Протоколы CCcam и OScam: ключевые отличия
Два главных стандарта в мире cardsharing — CCcam и OScam. Они решают одну задачу, но по-разному. Понимать разницу важно, если вы настраиваете сервер с нуля или выбираете, что поставить на ресивер.
CCcam: проприетарный протокол, простота настройки
CCcam разработан командой Dream Multimedia и долгое время был стандартом de facto для Dreambox. Протокол проприетарный, бинарники распространялись для конкретных платформ (mips, arm, x86). Развитие остановилось примерно на версии 2.3.x — новых релизов нет.
Плюсы: простая конфигурация через единый файл CCcam.cfg, понятная логика F-line/C-line/N-line. Минусы: закрытый код, нет поддержки новых типов reader'ов, под высокой нагрузкой (50+ клиентов) потребляет больше CPU, чем OScam. Тем не менее CCcam-протокол остаётся стандартом для межсерверного обмена — большинство сетей используют C-line именно для этого.
OScam: open-source, гибкость, поддержка newcamd/cccam/camd35
OScam — open-source проект, активно развивается. Последние билды доступны на официальном SVN-репозитории. Поддерживает reader'ы: PCSC, smartreader+, internal (встроенный слот Dreambox), phoenix, mouse. Протоколы для клиентов: newcamd, cccam, camd35, gbox, radegast.
Для серверной стороны OScam значительно гибче: можно настроить лимиты на пользователя, cache-exchange между серверами, приоритизацию CAID. Потребление CPU ниже при той же нагрузке. WebIF на порту 8888 даёт полную видимость того, что происходит — активные клиенты, ECM time, статус карты в реальном времени.
Когда использовать MGcamd, Gbox, NewCS
MGcamd — lightweight softcam, хорошо работает на старых ресиверах с ограниченным CPU (Dreambox 500S, TM-5402). Потребляет меньше памяти, чем OScam. Gbox — протокол для peer-to-peer обмена картами между серверами, используется в крупных сетях. NewCS — ещё один card server, проще OScam, но значительно менее гибкий.
На современных ресиверах (Zgemma, VU+, Edision) с OpenATV или OpenPLi — OScam через dvbapi. На старых девайсах с 64MB RAM — MGcamd. Для чистого peer-to-peer без клиентов — Gbox.
Настройка CCcam-сервера на Linux (Debian/Ubuntu)
Для сервера нужен Linux x86_64, минимум Debian 10 или Ubuntu 20.04. Бинарник CCcam нужно скачать нужной версии под архитектуру. Для ARM-серверов (RPi, Odroid) — ARM-бинарник. MIPS — только для роутеров с OpenWRT, не рекомендуется для продакшна.
Установка бинарника и структура /var/etc/CCcam.cfg
# Копируем бинарник
cp CCcam.x86 /usr/bin/CCcam
chmod +x /usr/bin/CCcam
# Создаём директорию конфига
mkdir -p /var/etc/
# Основной конфиг
touch /var/etc/CCcam.cfg
Лог пишется в /tmp/CCcam.log по умолчанию. Для продакшна лучше переопределить: LOGFILE = /var/log/CCcam.log.
Конфигурация F-line, C-line, N-line, R-line
Структура файла /var/etc/CCcam.cfg:
# F-line — добавить пользователя (сервер принимает подключения)
# F: username password reshare au { caid:provider }
F: client1 password123 1 0 0 { 0:0:1 }
F: client2 pass456 0 0 0 { 0:0:1 }
# C-line — подключение к другому CCcam-серверу (клиентская сторона)
# C: hostname port username password reconnect
C: remote.server.example 12000 myuser mypass 1
# N-line — подключение через Newcamd-протокол
# N: hostname port username password DES_KEY
N: newcamd.server 10000 user pass 01 02 03 04 05 06 07 08 09 10 11 12 13 14
# R-line — локальный reader
R: /dev/ttyUSB0 serial 357600 SECA,VIACCESS
Параметр reshare в F-line: 0 = не resharing, 1 = resharing без ограничений. AU (auto-update) — передача EMM клиенту для обновления прав карты, обычно 0 для клиентов.
Открытие порта 12000/TCP и проброс через iptables
# Открыть порт в iptables
iptables -A INPUT -p tcp --dport 12000 -j ACCEPT
# Для постоянного сохранения
iptables-save > /etc/iptables/rules.v4
# Проверка что CCcam слушает
netstat -tlnp | grep 12000
# или
ss -tlnp | grep 12000
Если сервер за NAT — нужен проброс порта 12000/TCP на маршрутизаторе. Клиенты подключаются к внешнему IP. Для динамического IP — обязательно DDNS (duckdns.org, no-ip.com): иначе при смене IP все C-line у клиентов перестанут работать.
Запуск как systemd-сервис и автостарт
# /etc/systemd/system/cccam.service
[Unit]
Description=CCcam Card Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/CCcam
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable cccam
systemctl start cccam
systemctl status cccam
Настройка OScam: oscam.conf, oscam.server, oscam.user
OScam хранит конфиги в нескольких файлах, каждый отвечает за свою часть. Основная директория на большинстве систем: /etc/tuxbox/config/oscam/ или /etc/oscam/. На Enigma2-дистрибутивах чаще встречается первый путь.
Структура /etc/tuxbox/config/oscam/
/etc/tuxbox/config/oscam/
├── oscam.conf # глобальные настройки, WebIF
├── oscam.server # reader'ы (карты, ридеры)
├── oscam.user # пользователи/клиенты
├── oscam.services # группировка сервисов по SID/CAID
└── oscam.srvid # база сервисов (название канала по SID)
Минимальный рабочий oscam.conf:
[global]
nice = -1
WaitForCards = 1
logfile = /var/log/oscam.log
maxlogsize = 1024
[webif]
httpport = 8888
httpuser = admin
httppwd = adminpass
httprefresh = 10
[dvbapi]
enabled = 1
au = 1
pmt_mode = 0
request_mode = 0
Reader-секции для PCSC, internal, smartreader+
Пример oscam.server для USB-ридера (Smartreader+ или phoenix):
[reader]
label = my_card
protocol = smartreader
device = /dev/ttyUSB0
caid = 0500
detect = cd
mhz = 357
cardmhz = 357
group = 1
emmcache = 1,3,15
Для встроенного слота Dreambox (internal reader):
[reader]
label = internal_card
protocol = internal
device = /dev/sci0
caid = 1702
group = 1
Для PCSC (компьютер с USB-ридером типа Omnikey, ACR38):
[reader]
label = pcsc_card
protocol = pcsc
device = 0
caid = 0604
group = 1
WebIF на порту 8888 и dvbapi для Enigma2
WebIF доступен по адресу http://ip-сервера:8888. В нём видно: список активных клиентов, ECM time по каждому запросу, статус reader'а, очередь запросов. Если ECM time стабильно выше 600ms — проблема либо в нагрузке на карту, либо в сети.
Секция [dvbapi] нужна для прямой работы с Enigma2 — OScam подключается к demux ресивера и подаёт CW напрямую, минуя CCcam-протокол. Это стабильнее и быстрее. Для Dreambox и VU+ — стандартное решение.
Cache-exchange и peer-to-peer обмен
OScam поддерживает cache-exchange (CSP — CacheEX, Peer-to-Peer) — серверы обмениваются уже расшифрованными CW, снижая нагрузку на физические карты. Конфигурируется в oscam.conf:
[cacheex]
mode = 1
cacheex_wait_time = 120
cacheex_enable_stats = 1
И в oscam.server для peer-сервера:
[reader]
label = cacheex_peer
protocol = cccam
device = peer.server.com,12000
user = peeruser
password = peerpass
cacheex = 2
group = 2
Подключение клиента: ресивер, OpenATV, Dreambox
На клиентской стороне настройка проще — нужно только прописать C-line и убедиться, что сервер доступен. Но мелкие детали — hostname, порт, права файла — часто становятся источником проблем.
Установка CCcam plugin через feed или ipk
На OpenATV/OpenPLi CCcam устанавливается через Package Manager или вручную:
# Через opkg
opkg update
opkg install enigma2-plugin-softcams-cccam
# Или вручную через ipk
opkg install /tmp/CCcam_2.3.2_mipsel.ipk
После установки бинарник появляется в /usr/bin/CCcam, конфиг — /etc/CCcam.cfg.
Редактирование /etc/CCcam.cfg на клиенте (C-line)
# C-line — подключение к серверу
# C: hostname port username password reconnect
C: myserver.duckdns.org 12000 client1 password123 1
# Логирование на клиенте
LOGFILE = /tmp/CCcam.log
DEBUG = 0
Важно: hostname должен резолвиться с ресивера. Проверить: nslookup myserver.duckdns.org. Если провайдер выдаёт динамический IP — настроить DDNS клиент на сервере (ddclient, inadyn). При CGNAT (carrier-grade NAT) — прямое подключение невозможно, нужен VPS-релей с проксированием через stunnel или SSH-туннель.
Проверка через telnet и WebIF на порту 16001
# Telnet к CCcam Info
telnet localhost 16001
# Или через netcat
echo -e "card list\r\n" | nc localhost 16001
CCcam WebIF (если включён в конфиге через PORT = 16001) показывает список подключённых серверов, карт и их CAID. Если список карт пустой — сервер не передаёт карты: неправильный C-line, неверный пароль или сервер заблокировал подключение.
Перезапуск enigma2 и init.d скрипты
# Перезапуск softcam
/etc/init.d/softcam restart
# Или через init.d напрямую
/etc/init.d/CCcam stop
/etc/init.d/CCcam start
# Проверка лога в реальном времени
tail -f /tmp/CCcam.log
# Перезапуск enigma2 (только если нужно)
/etc/init.d/enigma2 restart
Troubleshooting: freeze, FTA only, channel not found
Большинство проблем сводится к трём сценариям: карта не отдаёт нужный CAID, ECM time слишком высокий, или ресивер вообще не видит softcam. Разберём каждый случай по логам.
Диагностика через лог: rejected, no card found, timeout
Типичные записи в /tmp/CCcam.log:
# Нет карты с нужным CAID
no card found for SID 0x1234 CAID 0x0500
# Запрос отклонён сервером (нет прав у пользователя)
ECM rejected for user client1
# Таймаут — сервер не ответил вовремя
ECM timeout after 5000ms for CAID 0x0604
# Успешный ответ с нормальным ECM time
ECM answered in 187ms for CAID 0x0500
"no card found" — сервер не имеет карты с нужным CAID. Либо провайдер не поддерживает данный пакет, либо карта не авторизована для канала. "ECM rejected" — пользователь подключён, но у него нет прав на resharing или на данный CAID.
Проблемы с ECM time >800ms и причины
Если ECM time стабильно выше 800ms — картинка будет замерзать каждые 7–10 секунд. Причины по убыванию частоты:
- Высокий пинг между клиентом и сервером (>200ms) — выбирать географически близкий сервер
- Перегружен reader на сервере — слишком много клиентов на одной карте (норма ~5–8 одновременных потоков)
- Потери пакетов в сети — проверить
ping -c 100 server-ip, смотреть packet loss - Медленный ридер — Phoenix и clone-ридеры иногда медленнее Smartreader+ при больших нагрузках
При высоком пинге помогает cache-exchange — OScam может получить уже расшифрованный CW от соседнего сервера быстрее, чем дождаться карты.
Конфликты CAID, provider ID, SID
Некоторые каналы доступны через несколько CAID (например, один и тот же канал может идти через 0500 и 0604). Если ресивер пытается расшифровать через неправильный CAID — запрос уйдёт на сервер без нужной карты.
В OScam можно задать приоритет CAID через oscam.conf: секция [camd35] или через услугу preferlocalcards = 1. В CCcam — через R-line с указанием CAID. Provider ID и SID конфликты чаще всего видны в логе как "wrong provider" или "SID not in service list".
Два softcam одновременно (CCcam + OScam) на одном ресивере — гарантированный конфликт. Оба пытаются захватить /dev/dvb и dvbapi. Всегда оставляйте только один активный softcam.
Сетевые проблемы: NAT, firewall, MTU
CGNAT — распространённая проблема у мобильных и некоторых кабельных провайдеров. Внешний IP принадлежит провайдеру, прямое входящее подключение невозможно. Решение: VPS с публичным IP, на нём запускается stunnel или SSH-туннель, клиент подключается через него.
MTU по умолчанию 1500, но некоторые провайдеры режут до 1452 (PPPoE) или 1400 (VPN). Если пакеты фрагментируются — ECM time вырастет. Проверить: ping -M do -s 1472 server-ip. Если нет ответа — MTU нужно снизить на интерфейсе.
Корпоративные firewall часто блокируют порты 12000, 10000–15000. Решение — перенести CCcam на порт 443 или 80 через PORT = в CCcam.cfg. Легитимный HTTPS-трафик обычно пропускается.
Как выбрать cardsharing-провайдера: критерии без рекламы
Рынок cardsharing-провайдеров непрозрачен. Много сервисов, которые берут оплату и исчезают. Разберём технические и организационные критерии — то, что реально влияет на качество.
Технические показатели: ECM time, uptime, локация серверов
Хороший провайдер декларирует SLA с uptime ≥99% и средним ECM time <500ms. Но декларации — одно, реальность — другое. Запросите тестовый период (минимум 24 часа) и проверьте ECM time в WebIF OScam или в логе CCcam в разное время суток: в прайм-тайм нагрузка на карты максимальна.
Для Европы оптимальная локация серверов — Германия или Нидерланды. Пинг из большинства европейских стран 20–50ms. Серверы в Азии или США дадут пинг 150–300ms — ECM time будет на грани.
Поддержка нужных пакетов и CAID
Провайдер должен явно указывать список поддерживаемых CAID и пакетов. Sky Germany — CAID 0x09C4 (NDS/Videoguard), Canal+ — 0x0500 (Viaccess), Sky UK — 0x0963. Если провайдер пишет "все каналы мира" без конкретики — это красный флаг.
Уточните поддержку конкретного пакета до оплаты. Карты V14 и V15 Sky требуют специфической настройки reader — не все провайдеры корректно их поддерживают.
Условия подключения: количество подключений, freeze policy
Стандарт — 1 подключение = 1 одновременный поток. Некоторые провайдеры предлагают multi-connection (2–5 потоков на один аккаунт). Уточните политику по freeze: нормальный провайдер компенсирует время downtime или предоставляет кредит. "Без гарантий" в условиях — уже сигнал.
Также спросите о reconnect политике — сколько раз в сутки можно переподключаться. Некоторые провайдеры банят аккаунт за слишком частые переподключения (это индикатор шаринга аккаунта между пользователями).
Тестовый период и техподдержка
Провайдер без тестового доступа — либо не уверен в качестве, либо работает на схеме "взял деньги и пропал". Норма — от 24 до 48 часов тестового периода. За это время можно проверить ECM time, стабильность, работу нужных пакетов.
Техподдержка должна отвечать в течение нескольких часов, а не дней. Проверьте это до оплаты — напишите вопрос в чат. Если ответ через 12 часов или через бота — так же будет и при реальной проблеме.
Признаки мошенников: оплата только за год без теста, обещания "все пакеты мира" без деталей, отсутствие реальной техподдержки, контакт только через анонимные мессенджеры.
Законно ли использовать cardsharing?
Зависит от юрисдикции. В большинстве стран ЕС и СНГ обмен Control Words без лицензии оператора нарушает условия подписки и может квалифицироваться как нарушение авторских прав (directive 98/84/EC в ЕС). Технически легальный вариант — использовать только собственную смарт-карту с действующей подпиской и не передавать доступ третьим лицам.
В чём разница между CCcam и OScam?
CCcam — проприетарный протокол, проще в первоначальной настройке, развитие остановлено на версии 2.3.x. OScam — open-source, активно развивается, поддерживает больше протоколов (newcamd, camd35, cccam-клиент, gbox), гибче в настройке reader'ов и cache-exchange. Для продакшн-сервера сегодня выбирают OScam. CCcam-протокол используют для C-line между серверами — как стандарт де-факто для обмена.
Какой порт нужно открыть для CCcam?
По умолчанию 12000/TCP для CCcam-сервера. Для OScam: 8888/TCP для WebIF, порт для cccam-server или newcamd-server задаётся в oscam.conf в соответствующих секциях (обычно 10000–15000). Для работы dvbapi с Enigma2 — сокет-файл, не TCP-порт. При использовании за корпоративным firewall CCcam можно перевести на порт 443.
Что такое ECM time и какое значение нормальное?
ECM time — время от отправки ECM-запроса до получения Control Word от сервера. Норма для комфортного просмотра: 100–500ms. При значениях 500–800ms уже могут быть редкие freeze. Выше 800ms — freeze будут регулярными. ECM time зависит от пинга до сервера, нагрузки на карту, скорости reader'а и потерь пакетов в сети.
Можно ли поднять собственный cardsharing-сервер?
Да, при наличии легальной смарт-карты с действующей подпиской и физического ридера (Smartreader+, Phoenix, Omnikey 3121). Нужен Linux-сервер (x86 или ARM), OScam, USB-ридер, статический IP или DDNS. Конфигурируется reader-секция под конкретный CAID провайдера, создаётся oscam.user для клиентов.
Почему появляется freeze каждые 10 секунд?
Control Word меняется каждые 7–10 секунд. Freeze именно в этом интервале — классический симптом того, что новый CW не успевает прийти до смены. Причины: высокий ECM time (>800ms), перегруженный сервер, потери пакетов, неправильный CAID в C-line, или сервер отклоняет ECM (проверить лог на "rejected" и "timeout").
Что лучше — CCcam plugin или OScam на ресивере?
Для современных Enigma2-приёмников (OpenATV, OpenPLi, OpenVix) — OScam через dvbapi. Активно поддерживается, стабильнее, даёт полный WebIF для диагностики. CCcam plugin проще для первичной настройки и совместим со старыми образами, но не получает обновлений с ~2013 года. На ARM-ресиверах с ограниченным CPU и памятью (64MB) — MGcamd как альтернатива.
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.