Card sharing: что это, как работает, настройка CCcam/OScam
Что такое card sharing простыми словами
Определение и базовый принцип
Card sharing — это технология сетевого обмена ключами дешифрования между ресивером, у которого нет физической смарт-карты, и сервером, который эту карту держит. Клиент отправляет зашифрованный запрос (ECM), сервер его расшифровывает через карту и возвращает control word (DCW) — ключ, которым ресивер открывает картинку.
Цепочка выглядит так: спутник → DVB-TS поток с зашифрованным видео → ресивер принимает сигнал → в потоке находит ECM-пакет → шлёт его по TCP на сервер → сервер через CAM и смарт-карту получает DCW → возвращает DCW клиенту → ресивер дешифрует MPEG-TS и показывает картинку.
Всё это происходит каждые ~10 секунд, потому что ключ регулярно меняется. Именно поэтому задержка сети критична — если DCW не пришёл вовремя, канал замерзает.
Откуда взялась технология: DVB-CA и условный доступ
Архитектура DVB-CA (Conditional Access) изначально строилась так: CAM-модуль в слоте CI ресивера получает ECM из потока, передаёт карте, та возвращает CW. Всё это происходит по стандарту EN 50221 через CI-интерфейс.
Когда появились ресиверы с сетевыми интерфейсами и программными эмуляторами CAM (softcam), кто-то догадался вынести этот диалог за пределы одного устройства. Вместо того чтобы карта сидела локально — она может сидеть на сервере в 500 километрах. Протокол тот же, только транспорт — TCP/IP вместо CI-шины.
Кто и зачем использует card sharing
Типичный сценарий — владелец одной карты хочет смотреть одновременно на нескольких телевизорах или ресиверах. Или пользователь покупает доступ к серверу, где уже есть карты с нужными пакетами каналов.
Технически подкованные пользователи поднимают собственный OScam-сервер с физической картой и подключают к нему несколько STB в домашней сети. Это легальное использование технологии в рамках лицензии на карту.
Как технически работает обмен ECM и DCW
Структура запроса: ECM пакет в DVB-потоке
В DVB-TS потоке каждая зашифрованная программа сопровождается двумя типами специальных пакетов: ECM (Entitlement Control Message) и EMM (Entitlement Management Message). ECM — это зашифрованный control word плюс метаданные о том, какая система условного доступа нужна для расшифровки.
В ECM зашит CAID (Conditional Access Identifier) — например, 0x0500 для Viaccess, 0x0600 для Irdeto, 0x0963 для VideoGuard. Рядом идёт Provider ID, который уточняет конкретного оператора внутри системы. Softcam на ресивере перехватывает эти пакеты через PMT программы и формирует запрос к серверу.
Роль control word (CW) и его ротация каждые 10 секунд
DVB-CSA (Common Scrambling Algorithm) шифрует транспортный поток с помощью 8-байтного ключа — это и есть control word. В реальности используются два CW попеременно (odd и even), чтобы обеспечить плавный переход при смене ключа.
Стандартный crypto period — 10 секунд. Некоторые операторы ставят 7 секунд или даже меньше. Это означает: каждые N секунд ресивер должен получить свежий DCW от сервера. Если не успел — картинка замерзает ровно в момент смены CW.
Именно поэтому при crypto period 7 секунд пограничный ECM time 400 мс, который раньше работал нормально, начинает давать фризы. Буфер прежнего CW иссякает быстрее.
Цепочка сервер → CAM → смарт-карта → ответ
Сервер получает ECM-запрос от клиента по TCP. OScam передаёт этот ECM в reader — либо через USB phoenix reader (устройство типа /dev/ttyUSB0), либо через встроенный CI-слот ресивера, либо через другой сетевой сервер (cascading).
Phoenix reader работает на скорости ATR (Answer To Reset), обычно 9600 или 115200 baud в зависимости от карты. Встроенный слот быстрее — нет USB-задержки. Разница небольшая, 5-20 мс, но при нестабильном сервере это иногда имеет значение.
Карта получает ECM, проверяет права (из EMM, которые обновляются отдельно), вычисляет CW и возвращает его reader. OScam упаковывает DCW в ответный пакет и шлёт клиенту. Весь этот путь и есть ECM time.
Понятие ECM time и почему важна задержка <400 мс
ECM time — время от момента отправки ECM-запроса клиентом до получения DCW. Смотреть можно в веб-интерфейсе OScam: Status → Clients, колонка "last ecm".
Ориентиры такие: до 200 мс — отлично, запас большой. 200-400 мс — рабочее, при crypto period 10 секунд проблем нет. 400-600 мс — пограничная зона, при 10-секундном периоде чаще всего работает, при 7-секундном — уже нет. Больше 600 мс — гарантированные фризы при любом стандартном провайдере.
Если использовать card sharing через VPN, к ECM time добавляется latency туннеля (обычно +20-80 мс) плюс overhead шифрования. При стабильном сервере это терпимо, при пограничных значениях — нет.
Протоколы card sharing: CCcam, OScam, Newcamd, MGcamd
CCcam — простой протокол с hop-системой
CCcam — это закрытый проприетарный протокол, разработанный группой энтузиастов и доминировавший в 2005-2012 годах. Стандартный порт — 12000, хотя конфиги с 12001-12099 тоже встречаются повсеместно.
Главная концепция — hop. Hop 1 означает прямое подключение к серверу с картой. Hop 2 — через один промежуточный сервер-реселлер. Каждый hop добавляет задержку. F-line описывает карту, которую сервер раздаёт: F: username password hop noreshare { caid:providerid }.
Минус CCcam — закрытый код, разработка давно заморожена, ограниченная диагностика. Но как протокол он до сих пор повсеместно поддерживается клиентами.
OScam — современный форк с расширенной диагностикой
OScam (Open Source Cam) — это форк Oscam-svn, активно развивается, открытый исходный код. Поддерживает одновременно несколько протоколов: CCcam, Newcamd, CS378x, Gbox. Веб-интерфейс по умолчанию на порту 8888.
Ключевое преимущество — детальная диагностика. В Status → Readers видно какие CAID покрыты, среднее ECM time, количество hits и misses. В Status → Clients — что запрашивают подключённые пользователи. Это делает OScam незаменимым инструментом для отладки.
Типичная продакшн-сборка сегодня: OScam как сервер с физической картой, клиенты подключаются по CCcam-протоколу или Newcamd. OScam на стороне клиента тоже возможен — он умеет быть и клиентом, и сервером одновременно.
Newcamd — протокол на базе TCP/AES
Newcamd (также известный как newcs или ncd) использует TCP с шифрованием на базе Triple-DES. Стандартный порт — 15000, но часто настраивают 15001-15099. В конфиге это N-line: N: hostname port username password DESkey.
DES-ключ — 28 hex-символов, генерируется при настройке сервера. Протокол считается чуть более защищённым по сравнению с CCcam, поэтому некоторые операторы серверов предпочитают его для внешних подключений.
MGcamd — клиент для ресиверов с поддержкой нескольких протоколов
MGcamd — это softcam-клиент, а не самостоятельный протокол. Работает на Enigma2, поддерживает Newcamd через /var/keys/newcamd.list и CCcam через /var/keys/cccam.cfg. Лёгкий, хорошо подходит для старых ресиверов с ограниченной памятью.
Важно: MGcamd и OScam-emu не должны работать одновременно на одном STB — они конфликтуют за доступ к CI-слоту и к /dev/sci. Если стоят оба, один из них нужно полностью выключить через blue panel или убрать из автозагрузки.
Что выбрать для сервера и что для клиента
Для сервера — однозначно OScam. Гибкость, диагностика, поддержка нескольких протоколов одновременно, активное сообщество. CCcam как серверный демон в 2026 году — это просто ностальгия.
Для клиента на STB — зависит от образа. На современных Enigma2 (OpenATV, OpenPLi, OpenVision) OScam работает и как клиент. На старых ресиверах с ограниченной памятью MGcamd легче. Dreambox DM800 с оригинальным образом — CCcam клиент через /etc/CCcam.cfg.
Настройка OScam-сервера: пошагово
Сборка из исходников: oscam-svn, ./config.sh, make
Актуальные исходники берутся через SVN или зеркало на GitHub. Стандартная последовательность на Debian/Ubuntu:
apt-get install build-essential libssl-dev libpcsclite-dev
svn co http://streamboard.tv/svn/oscam/trunk oscam-svn
cd oscam-svn
./config.sh --enable READER_INTERNAL --enable READER_SMARTREADER --enable MODULE_CCCAM --enable MODULE_NEWCAMD --enable WEBIF
make
cp oscam /usr/local/bin/
Флаги --enable выбираются под конкретные нужды. Если phoenix reader USB — добавить READER_PHOENIX. Если нужен CS378x (CCcam-over-OScam) — MODULE_CS378X.
Файл oscam.conf: секции [global], [webif], [cs378x]
Минимальный рабочий /usr/local/etc/oscam.conf:
[global]
logfile = /var/log/oscam.log
maxlogsize = 512
pidfile = /var/run/oscam.pid
usrfile = /var/log/oscam.user
[webif]
httpport = 8888
httpuser = admin
httppwd = changeme
httpallowed = 127.0.0.1,192.168.0.0-192.168.255.255
[cccam]
port = 12000
reshare = 1
stealth = 1
[newcamd]
port = 15000@0500:000000
Параметр stealth = 1 в секции [cccam] убирает fingerprint OScam из ответов — клиент думает, что говорит с обычным CCcam-сервером. Некоторые клиентские реализации это требуют.
Файл oscam.server: подключение reader для смарт-карты
Файл /usr/local/etc/oscam.server описывает физические и виртуальные ридеры. Для USB phoenix reader:
[reader]
label = phoenix_usb
protocol = phoenix
device = /dev/ttyUSB0
detect = cd
mhz = 357
cardmhz = 357
caid = 0500
ident = 0500:000000
group = 1
emmcache = 1
Для встроенного CI-слота Enigma2 ресивера — protocol = internal, device = /dev/sci0. Параметр mhz = 357 соответствует 3.57 MHz — стандартная частота для большинства карт. Некоторые карты требуют 600 (6 MHz) — нужно смотреть по ATR карты в логе при первом подключении.
Файл oscam.user: создание клиентских аккаунтов с правами
Каждый клиент описывается в /usr/local/etc/oscam.user:
[account]
user = client1
pwd = secretpass
group = 1
au = 1
uniq = 1
monlevel = 0
caid = 0500
ident = 0500:000000
Параметр au = 1 означает, что клиент будет получать EMM-обновления через этот аккаунт — нужно если карта у клиента, а сервер обновляет права. uniq = 1 запрещает параллельные входы с одними кредами. monlevel = 0 закрывает доступ к веб-мониторингу для этого пользователя.
Запуск как systemd-сервис и автозапуск
Создать /etc/systemd/system/oscam.service:
[Unit]
Description=OScam Softcam
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/oscam -b -c /usr/local/etc -t /tmp/oscam
PIDFile=/var/run/oscam.pid
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Затем: systemctl daemon-reload && systemctl enable oscam && systemctl start oscam. Флаг -b запускает OScam в фоне, -c указывает путь к конфигам.
Веб-интерфейс на http://server-ip:8888
После запуска открывается в браузере по адресу http://192.168.1.100:8888 (IP вашего сервера). В разделе Readers видно статус карты: OK, CARD DETECTED, или ошибку. В Clients — подключённые пользователи, их ECM time, количество запросов. В Files — прямое редактирование конфигов через браузер без SSH.
Настройка клиента: CCcam.cfg, oscam.user, MGcamd
Формат F-line для CCcam: F: user pass hop noreshare
F-line описывает карту, которую сервер предоставляет клиенту (используется в конфиге сервера для описания того, что он раздаёт, или в старых реализациях для peer-to-peer обмена). Синтаксис:
F: username password 1 0 { 0500:000000 }
Здесь: 1 — hop, 0 — noreshare (0 = разрешён реселл, 1 = запрещён). В фигурных скобках — разрешённые CAID:ProviderID. Если скобки пустые или отсутствуют — разрешены все CAID от этой карты.
Формат C-line: C: hostname port user pass
C-line — это то, что прописывают в клиентском /etc/CCcam.cfg или в аналогичном файле. Клиент по этой строке подключается к серверу:
C: myserver.example.com 12000 myusername mypassword
Самые частые ошибки в C-line: лишние пробелы в конце строки, BOM-маркер в начале файла (если редактировали на Windows), неверный регистр имени пользователя (протокол чувствителен к регистру), и табы вместо пробелов между полями.
Формат N-line для Newcamd на MGcamd
Файл /var/keys/newcamd.list на MGcamd:
N: myserver.example.com 15000 myuser mypass 01 02 03 04 05 06 07 08 09 10 11 12 13 14
Длинная строка hex-значений в конце — DES-ключ (14 байт = 28 символов). Этот ключ должен точно совпадать с тем, что прописан в oscam.conf на стороне сервера в секции [newcamd]. Ошибка в одном символе — и авторизация не пройдёт, причём без внятного сообщения об ошибке на клиенте.
Куда класть конфиги на Enigma2/AZBox/Dreambox
Enigma2 (OpenATV, OpenPLi): CCcam.cfg лежит в /etc/CCcam.cfg. MGcamd: /var/keys/. OScam: /etc/tuxbox/config/oscam/ или /usr/keys/ — зависит от образа, смотреть в настройках softcam плагина.
Dreambox DM800/DM8000 с оригинальным образом: /etc/CCcam.cfg. AZBox с OpenSPA: OScam конфиги в /etc/tuxbox/config/. Vuplus (Ultimo, Solo): путь аналогичен OpenATV, /etc/tuxbox/config/oscam/.
Перезапуск softcam после правки конфига
На большинстве Enigma2 образов: /etc/init.d/softcam restart или через голубую кнопку пульта → Softcam-менеджер → выбрать активный → Restart. OScam умеет перечитывать конфиги без полного перезапуска: в веб-интерфейсе Files → нажать Save после изменения — конфиг применяется горячо.
Если после перезапуска клиент не подключается — первым делом проверить tail -f /var/log/oscam.log на сервере. Там будет видно попытку подключения и причину отказа: неверный пароль, неразрешённый IP, или CAID не совпадает.
Диагностика и типичные проблемы
Канал не открывается: проверка CAID и provider ID
Это самая частая причина, и почти всегда решается за 5 минут через веб OScam. Открываем Status → Readers — видим какие CAID:ProviderID активны на reader. Открываем Status → Clients — видим что именно запрашивает клиент, какой CAID шлёт в ECM.
Если CAID в запросе не совпадает ни с одним reader — ответ будет "not found". Это может означать: канал использует другую систему условного доступа, или в F-line/C-line прописан фильтр CAID который блокирует нужный. Также проверить что в oscam.server в параметре ident не стоит слишком узкий фильтр ProviderID.
Freeze каждые 10 секунд: ECM time слишком высокий
Фризы с периодичностью ровно 10 секунд (или 7, если провайдер сменил crypto period) — это классический признак того, что DCW не приходит вовремя. Проверяем ECM time в OScam Status → Clients.
Если ECM time > 600 мс — проблема в сети: высокий пинг до сервера, перегруженный канал, или сам сервер тормозит под нагрузкой. Если ECM time нормальный, но фризы есть — смотреть на стороне клиента: возможно, softcam не передаёт CW в дескремблер. На Enigma2 это иногда лечится перезапуском enigma2 (/etc/init.d/enigma2 restart), а не только softcam.
'Card not found' в логе клиента
Строка "not found" в oscam.log на сервере (или "card not found" на клиенте) означает одно из: reader не видит карту, CAID/ProviderID не совпадает, у клиентского аккаунта нет прав на этот CAID (caid или ident в oscam.user слишком ограничен).
Проверить reader статус: в веб-интерфейсе Readers должно быть "CARD DETECTED" и зелёный индикатор. Если "NO CARD" — физическая проблема: карта не вставлена, контакты, или неправильный device в oscam.server.
Авторизация прошла, но каналы чёрные
Это отдельный и неочевидный сценарий. Клиент подключился, DCW приходит, ECM time нормальный — но экран чёрный. Чаще всего причина: PMT канала изменился (провайдер обновил пакет), и ресивер не обновил информацию о SID. Помогает force-scan или ручной поиск каналов.
Второй вариант — CW приходит, но ресивер его не передаёт в аппаратный дескремблер. На некоторых старых STB это лечится переключением режима дескремблирования в настройках образа.
Анализ oscam.log: ecm replies, cache hits, reader stats
Включить детальный лог: запустить OScam с флагом -d 64 (debug level 64 = полный ECM trace). В логе искать строки вида:
2026/05/18 14:23:01 client1 (192.168.1.50) found (143 ms) by phoenix_usb
2026/05/18 14:23:11 client1 (192.168.1.50) not found (0 ms) for 0500:000001:1234
"found (143 ms)" — DCW выдан, время ответа 143 мс. "not found" с CAID:ProviderID:SID — точный адрес проблемы, смотреть совпадает ли ProviderID с тем, что есть на reader. tail -f /var/log/oscam.log | grep -i "not found" покажет только ошибки в реальном времени.
Как выбрать сервер: критерии оценки
Стабильность аптайма и резервирование
Главное — не средний аптайм, а поведение во время сбоев. Хороший сервер либо имеет резервный reader (вторая карта), либо быстро восстанавливается. Попросить статистику downtime за последние 30 дней — нормальный сервер может её предоставить.
Два C-line на разные серверы с настройкой приоритета в OScam (prio в oscam.server) или fallback в oscam.srvid — правильная архитектура для критически важного просмотра.
Географическая близость и пинг до сервера
Пинг напрямую влияет на ECM time. Сервер в той же стране — обычно 20-50 мс пинга, итоговый ECM time 100-200 мс. Сервер на другом континенте — 150+ мс пинга плюс время обработки карты — легко получить 400-500 мс ECM time.
Проверить пинг до сервера: ping hostname или mtr hostname. Если пинг > 80 мс — ECM time будет пограничным при любом качестве сервера.
ECM time как объективная метрика качества
Это единственная объективная цифра. Пинг — необходимое условие, но недостаточное: сервер с низким пингом и перегруженной картой даст плохой ECM time. Хорошие серверы показывают ECM time в своей статистике — либо через открытый веб-интерфейс OScam, либо через собственный мониторинг.
Стоит запросить скриншот Status → Readers из OScam перед подпиской. Там видно load карты (количество запросов в секунду) и среднее время ответа. Reader под нагрузкой 10+ запросов в секунду с одной картой — это уже перегруз.
Поддержка нужных CAID и provider ID
Перед подпиской нужно знать CAID и ProviderID каналов, которые вас интересуют. Запрашиваете у сервера список поддерживаемых CAID — если не могут ответить конкретно, это плохой знак. Нормальный ответ: "покрываем 0500:000000, 0600:000000, 0963:000000" — конкретные числа.
Тестовая линия на 24-48 часов — стандартная практика на нормальных серверах. Это позволяет реально проверить все нужные каналы до оплаты, а не верить на слово.
Прозрачность: тестовый период, логи, веб-доступ
Дешевле не значит лучше — это аксиома для card sharing серверов. Стабильный ECM time 150 мс стоит дороже нестабильного на 80 мс в среднем и 1200 мс в пике. Один вечер фризов во время финала — и экономия на подписке кажется неудачной идеей.
Доступ к статистике reader (хотя бы read-only веб OScam) означает, что оператор не боится показывать реальную загрузку. Отсутствие любой статистики и "просто доверяйте нам" — повод искать другой вариант.
Чем отличается CCcam от OScam?
CCcam — закрытый протокол с простой hop-моделью, разработка заморожена много лет назад. OScam — открытый форк, поддерживает CCcam-протокол плюс Newcamd и CS378x одновременно, имеет веб-интерфейс на порту 8888, детальную диагностику и активно развивается. Типичная рабочая сборка сегодня: OScam как сервер с физической картой, клиенты подключаются по CCcam-протоколу — получают гибкость OScam на сервере и совместимость CCcam на клиенте.
Какой порт использовать для card sharing?
Зависит от протокола: CCcam — стандартно 12000, часто используют диапазон 12001-12099 в разных конфигурациях. Newcamd — 15000 и выше. CS378x (CCcam-over-OScam) — 28000. Веб-интерфейс OScam — 8888. Всё это настраивается в oscam.conf в секциях [cccam], [newcamd], [cs378x] и [webif] соответственно. Порты произвольные — главное совпадение между сервером и клиентом.
Что такое ECM time и какое значение нормальное?
ECM time — время от отправки ECM-запроса клиентом до получения DCW от сервера. До 200 мс — отлично. 200-400 мс — рабочее, при стандартном crypto period 10 секунд фризов не будет. 400-600 мс — пограничная зона, работает при 10-секундном периоде, но уже нет при 7-секундном. Больше 600 мс — фризы гарантированы. Смотреть в веб-интерфейсе OScam: Status → Clients, колонка "last ecm".
Почему канал не открывается, хотя клиент подключён к серверу?
Чаще всего причина — CAID или ProviderID канала не покрыт reader на сервере. Проверить в OScam Status → Readers какие CAID активны. Второй вариант — у клиентского аккаунта в oscam.user прописан ограничительный фильтр по caid или ident, который блокирует нужный канал. Третий — hop в F-line недостаточен: канал доступен через hop 2, а в конфиге стоит hop 1. Ещё один вариант — авторизация прошла, DCW приходит, но ресивер не передаёт CW в дескремблер (проблема на стороне STB, не сервера).
Где находятся конфигурационные файлы OScam?
При сборке из исходников — /usr/local/etc/: там лежат oscam.conf, oscam.server, oscam.user, oscam.services. На Enigma2 image — обычно /etc/tuxbox/config/oscam/ или /etc/tuxbox/config/. Путь к конфигам задаётся при запуске флагом -c /path/to/config, так что посмотреть аргументы запущенного процесса: ps aux | grep oscam покажет текущий путь. Логи по умолчанию — /var/log/oscam.log.
Можно ли использовать card sharing без своего сервера?
Да, большинство пользователей именно так и работают — подключаются к чужому серверу как клиент. Для этого нужна только C-line (CCcam) или N-line (Newcamd) от оператора сервера, которую прописывают в /etc/CCcam.cfg или /var/keys/newcamd.list. Свой сервер имеет смысл поднимать только если есть собственная смарт-карта с активной подпиской, физический CAM или phoenix reader, и желание раздавать доступ на несколько своих устройств.
Что такое hop и зачем он нужен?
Hop — количество промежуточных серверов между клиентом и исходной смарт-картой. Hop 1 — прямое подключение к серверу с картой. Hop 2 — один сервер-реселлер между клиентом и картой. Каждый hop добавляет задержку, потому что каждый сервер в цепочке добавляет своё время обработки. Параметр noreshare в F-line (значение 1) запрещает клиенту дальше перепродавать доступ, то есть клиент не может стать промежуточным сервером для третьих лиц.
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.