Кардшара ТВ: настройка CCcam и OScam с нуля
Если вы дошли до этой страницы, скорее всего у вас уже есть спутниковый ресивер, базовое понимание того, как работает условный доступ, и желание разобраться, что происходит под капотом. Кардшара тв — это не магия и не "взлом". Это конкретный протокол передачи данных, и разобраться в нём можно без воды. Весь материал ниже ориентирован на образовательные цели и предполагает, что у вас есть легально приобретённая карта или тестовая подписка, которую вы хотите использовать на нескольких собственных ресиверах.
Что такое кардшара ТВ и как она работает
Начнём с главного. Любой зашифрованный канал использует систему условного доступа (CAS). Контент передаётся в зашифрованном виде, а для расшифровки нужно так называемое контрольное слово — Control Word (CW). Именно его и передаёт кардшара тв между сервером и клиентом.
Принцип обмена контрольными словами (CW/DCW)
Схема простая: на сервере стоит физическая смарт-карта. Клиент присылает зашифрованный запрос ECM (Entitlement Control Message). Карта декодирует его и возвращает DCW — descrambling control word. Клиент использует этот ключ для расшифровки видеопотока в реальном времени.
Контрольное слово меняется каждые примерно 10 секунд. Это не случайная цифра — именно поэтому все проблемы со связью проявляются фризом строго раз в 10 секунд. Клиент не успел получить новый CW до смены цикла — картинка замёрзла.
Задержка сети здесь критична. Хорошее соединение — это ECM-ответ менее 200–300 миллисекунд. Уже при 500 мс начинаются подтормаживания, а свыше 800 мс фризы становятся постоянными.
Роль ECM и EMM в дескремблировании
ECM — это запрос на получение CW, который клиент отправляет каждый раз при смене цикла. EMM (Entitlement Management Message) — отдельный поток, через который оператор управляет правами доступа конкретной карты: активирует пакеты, продлевает подписку, добавляет каналы.
Для базовой работы кардшаринга нужен только ECM. EMM важен для AU (Automatic Updating) — когда карта на сервере должна обновлять свои права без ручного вмешательства. В OScam за это отвечает параметр au в файле oscam.user.
Чем отличается сервер (share) от клиента
Сервер — это машина с физическим картридером. Он принимает ECM-запросы, прогоняет их через карту и отдаёт CW. Клиент — ресивер или программный дескремблер, у которого карты нет. Он подключается к серверу по сети и получает CW на каждый цикл.
На одном устройстве можно иметь одновременно роль сервера (с локальным ридером) и клиента (подключённого к другому серверу). OScam умеет это из коробки через систему групп.
Легальные сценарии: тестовый стенд, своя карта, изучение протоколов
Самый очевидный легальный сценарий — у вас есть одна карта спутникового оператора и несколько собственных ресиверов в одной квартире. Вместо покупки нескольких карт один сервер раздаёт CW всем устройствам в локальной сети. Второй популярный случай — тестовый стенд для изучения протоколов условного доступа в учебных целях.
Протоколы CCcam, OScam и newcamd: в чём разница
Протоколов несколько, и выбор между ними реально влияет на удобство отладки и стабильность работы. Разберём каждый.
CCcam: проприетарный протокол, порт по умолчанию 12000
CCcam — наиболее распространённый протокол в экосистеме спутникового ТВ. Порт по умолчанию — TCP 12000. Протокол закрытый, спецификация не публиковалась официально, но де-факто стал стандартом — его поддерживают почти все современные ресиверы с Enigma2 и аппаратные дескремблеры.
Минус CCcam — сложность отладки. Логи скудные, вывод информации о состоянии соединения минимальный. Понять, почему клиент не получает CW, по логам CCcam значительно труднее, чем в OScam.
OScam: открытый эмулятор, гибкая конфигурация
OScam — open source, активно разрабатывается, поддерживает практически все известные CAS-системы. Умеет принимать подключения по CCcam-протоколу и одновременно раздавать их клиентам по newcamd или другим протоколам.
Главное преимущество — веб-интерфейс на порту 8888 и подробнейшие логи. Время ответа на каждый ECM-запрос видно прямо в браузере. Для диагностики это незаменимо.
newcamd (порт 15000) и mgcamd как клиентские протоколы
newcamd работает на TCP-порту 15000 по умолчанию и используется преимущественно как клиентский протокол на старых ресиверах. mgcamd — отдельный клиентский softcam, который умеет подключаться как к CCcam-серверам, так и к newcamd. На современных прошивках Enigma2 mgcamd уступил место OScam как клиентскому решению.
Когда выбирать OScam вместо CCcam
Если вы настраиваете сервер с нуля и важна диагностируемость — берите OScam. Если клиент работает на старом железе, которое поддерживает только CCcam-протокол на входе, можно настроить OScam в режиме сервера с listener на порту 12000 — он эмулирует CCcam без проблем.
Настройка сервера OScam: пошагово
Покажу реальные конфиги, а не заготовки из одной строчки. Всё проверено на актуальных сборках OScam 11.x.
Установка и структура каталога /etc/tuxbox/config или /var/keys
На Enigma2-ресиверах конфиги OScam живут обычно в /etc/tuxbox/config/. На отдельном Linux-сервере (например, Raspberry Pi с Debian) стандартный путь — /etc/oscam/. На некоторых прошивках (DreamElite, OpenATV) встречается /var/keys/. Проверьте через find / -name oscam.conf 2>/dev/null, если не уверены.
Основные файлы конфигурации: oscam.conf, oscam.server, oscam.user. Иногда добавляют oscam.services для фильтрации по CAID и SID.
Файл oscam.conf: секция [global] и [webif]
Минимальный рабочий oscam.conf:
[global]
logfile = /var/log/oscam.log
maxlogsize = 200
pidfile = /var/run/oscam.pid
usrfile = /var/log/oscam.user
cachedelay = 0
preferlocalcards = 1
[webif]
httpport = 8888
httpuser = admin
httppwd = yourpassword
httprefresh = 10
httphideidleclients = 1
Параметр preferlocalcards = 1 заставляет OScam сначала спрашивать локальный ридер, и только потом идти в сеть. Важно, если на одном ресивере одновременно стоит физическая карта и есть сетевой share.
Файл oscam.server: описание ридера карты
Пример ридера для физической карты через встроенный картридер:
[reader]
label = mycard
protocol = internal
device = /dev/sci0
caid = 1830
ident = 1830:000000
group = 1
emmcache = 1
cacheex = 0
Если карта через USB-ридер (Phoenix/Smartmouse), меняете protocol = mouse и device = /dev/ttyUSB0. Значение caid зависит от вашей CAS-системы: Viaccess — 0500, Nagravision — 1830, Irdeto — 0604, Conax — 0B00. Неверный CAID — карта не отвечает вообще.
Для подключения к удалённому CCcam-серверу вместо физической карты используйте:
[reader]
label = remote_share
protocol = cccam
device = server.example.com,12000
user = your_login
password = your_pass
caid = 1830
group = 1
reconnecttimeout = 30
Файл oscam.user: учётные записи клиентов и группы
Система групп в OScam связывает ридеры и пользователей. Ридер в group = 1 обслуживает только тех клиентов, у которых в group тоже указана 1.
[account]
user = client1
pwd = pass123
group = 1
au = mycard
caid = 1830
uniq = 0
monlevel = 0
[account]
user = client2
pwd = pass456
group = 1
au = mycard
Параметр au = mycard указывает, через какой ридер этот клиент получает EMM для обновления прав. Если AU не нужен — просто не пишите эту строку.
Проверка через веб-интерфейс на порту 8888
После запуска OScam открываете браузер на http://<ip-сервера>:8888. Там видно статус каждого ридера: connected/disconnected, количество обслуженных ECM-запросов, среднее время ответа в миллисекундах, текущих клиентов.
Запуск демона: oscam -b -c /etc/oscam/. Логи в реальном времени: tail -f /var/log/oscam.log. Перезапуск без потери соединений: kill -HUP $(cat /var/run/oscam.pid).
Настройка клиента CCcam: файл CCcam.cfg
Это самая частая точка входа для новичков. Конфиг минималистичный, но синтаксис важен — лишний пробел может сломать парсинг.
Синтаксис строки C: host port username password
Строка подключения к CCcam-серверу:
C: server.example.com 12000 myuser mypassword
Именно так: C с двоеточием, пробел, хост, пробел, порт, пробел, логин, пробел, пароль. Никаких кавычек, никаких лишних символов. Можно добавить несколько строк C: для разных серверов — CCcam будет использовать первый доступный.
F-line — это анонс локального ридера другим серверам в сети. Если вы только клиент и не хотите ничего раздавать, F-lines не нужны вообще.
Путь к config: /var/etc/CCcam.cfg или /etc/CCcam.cfg
На OpenATV и большинстве современных Enigma2-образов файл лежит по адресу /var/etc/CCcam.cfg. На OpenPLi встречается /etc/CCcam.cfg. На DreamElite и некоторых образах — /usr/keys/CCcam.cfg. Если не уверены: find / -name CCcam.cfg 2>/dev/null.
Параметры share: F-line и локальные ридеры
Полный пример CCcam.cfg для клиента с одной картой и одним удалённым сервером:
# Подключение к внешнему серверу
C: remote.example.com 12000 login1 pass1
# Анонс локальной карты (если хотите делиться)
# F: login pass 1 0 0 0 0
# Если не делитесь — закомментируйте F-line
DISABLE ANTI-CASCADE SHARING: yes
MINIMIZE RESSOURCES: no
SHARE RESTREAMER: no
LOG WARNINGS: yes
Перезапуск демона и проверка соединения
На Enigma2 перезапуск softcam делается через меню Softcam Manager или командой:
init 4 && sleep 2 && init 3
Либо напрямую: killall CCcam && sleep 1 && CCcam. Проверить подключение можно через веб-интерфейс CCcam на порту 16001 (если включён) или через telnet localhost 12000 — должен ответить баннер CCcam.
Диагностика и решение частых проблем
Большинство проблем с кардшаринг тв укладываются в несколько типовых сценариев. Вот таблица симптом → причина → решение:
| Симптом | Вероятная причина | Что проверить |
|---|---|---|
| Card not found | Неверный CAID или ident | Сверить CAID в oscam.server с фактической картой |
| Фриз каждые ~10 сек | Клиент не получает новый CW вовремя | Проверить ECM response time в логах OScam |
| Нет подключения к серверу | Закрытый порт или NAT | telnet host 12000, проверить firewall |
| HD фризит, SD ок | Высокий битрейт HD требует более быстрого CW | Снизить cachedelay, проверить пинг |
| Каналы не открываются при наличии сигнала | Несовпадение CAID/ident или нет прав в oscam.user | Добавить нужный CAID в разрешения пользователя |
Ошибка 'Card not found' и неверный CAID/ident
Это самая распространённая ошибка при первоначальной настройке. OScam показывает в логах строку вида ECM CAID: 1830 Ident: 000000 -- NOT FOUND. Значит, запрошенный CAID не обслуживается ни одним доступным ридером.
Проверьте: в oscam.server указан правильный CAID? Ридер находится в той же group, что и клиентский аккаунт в oscam.user? Карта реально поддерживает этот пакет? Если ридер — сетевой (remote CCcam), убедитесь, что upstream сервер вообще отдаёт этот CAID.
Фризы каждые 10 секунд: проблема со сменой CW
Классика. Картинка зависает ровно на несколько секунд и потом продолжается — и так повторяется с интервалом около 10 секунд. Это точное попадание в цикл смены контрольного слова.
Открываете tail -f /var/log/oscam.log и ищете строки с временем ответа ECM. Нормально выглядит так: ECM answer: 180 ms. Проблема начинается от 400–500 мс. Если видите 800 мс и выше — соединение слишком медленное или сервер перегружен. Проверьте ping до сервера. При пинге выше 150 мс уже есть риски, выше 250 мс — фризы почти гарантированы.
Проверка портов через telnet и firewall
Быстрая проверка доступности сервера:
telnet your.server.com 12000
Если соединение устанавливается и виден баннер — порт открыт. Если Connection refused — сервис не запущен или порт закрыт локально. Если timeout — файрвол на сервере или у провайдера.
Двойной NAT — частая проблема у тех, кто держит сервер за роутером и ещё одним роутером провайдера. В этом случае нужен проброс порта через оба устройства. Некоторые провайдеры блокируют исходящий трафик на нестандартных портах — попробуйте сменить порт на 80 или 443 в oscam.conf и CCcam.cfg.
Чтение логов OScam: строки ECM с временем ответа
В логах OScam каждый ECM-запрос выглядит примерно так:
2026/01/15 14:23:01 c (client1) ECM CAID: 1830 Ident: 000000 SID: 1234 -- found (180 ms) by mycard
Здесь: client1 — имя пользователя, 1830 — CAID, 1234 — ID сервиса, 180 ms — время ответа карты, mycard — имя ридера. Если вместо "found" стоит "not found" — смотрите на CAID и ident. Если время ответа растёт — проблема в карте или сети.
Обратите внимание: между версиями OScam 11.6 и 11.7 формат лог-строк менялся. Если у вас скрипты для парсинга логов — после обновления OScam их нужно перепроверить.
Как выбрать надёжный источник share: критерии без имён
Раз уж вы изучаете кардшара тв технически — значит, умеете читать логи и проверять соединение. Используйте эти навыки и при выборе внешнего сервера.
Стабильность аптайма и время ответа ECM
Единственный объективный критерий — время ответа на ECM в ваших реальных логах OScam. Любой сервер, который даёт средний ответ ECM выше 300 мс на вашем конкретном соединении, будет давать фризы на HD-каналах. Проверяйте это в тестовый период, а не верьте заявлениям об "аптайме 99.9%".
Пинг до сервера — первый индикатор. ping server.example.com — если стабильно ниже 50 мс, шансы на нормальную работу высокие. Географическая близость сервера реально важна.
Поддержка нужных CAID и пакетов
Перед тестом уточните конкретные CAID, которые вас интересуют. Попросите подтверждение, что сервер отдаёт именно их — и проверьте это через веб-интерфейс OScam в раздел "Readers" после подключения. Если CAID нет в списке обслуживаемых — сервер не подходит, независимо от его репутации.
Прозрачность условий и тестовый доступ
Нормальный сервер даёт тестовый период — обычно 24–72 часа. За это время реально оценить стабильность ECM, наличие нужных CAID и реакцию на разрыв связи. Если тестового доступа нет вообще — это красный флаг.
Красные флаги: завышенные обещания, отсутствие логов
Заявления типа "тысячи каналов без фризов" — бессмысленны без конкретики. Что за CAID? Какие hops от карты до вас? Какое среднее время ECM? Если ни один из этих вопросов не имеет конкретного ответа — не связывайтесь.
Ещё один признак ненадёжности: сервер не даёт никакой возможности проверить статус ридера. В нормальной схеме вы всегда видите hop count в веб-интерфейсе OScam или в логах CCcam. Если информация скрыта — значит, что-то скрывают намеренно.
Какой порт использует CCcam по умолчанию?
CCcam слушает на TCP-порту 12000 по умолчанию. newcamd работает на 15000, веб-интерфейс OScam — на 8888. Все три порта настраиваются в соответствующих конфигах, так что конкретный сервер может использовать любой другой порт — уточняйте при подключении.
Где находится файл конфигурации CCcam.cfg?
Зависит от прошивки. OpenATV и большинство современных образов Enigma2 хранят файл по адресу /var/etc/CCcam.cfg. OpenPLi использует /etc/CCcam.cfg. На некоторых кастомных сборках встречается /usr/keys/CCcam.cfg. Быстрый способ найти: find / -name CCcam.cfg 2>/dev/null.
Почему картинка фризит каждые 10 секунд?
Это классический признак проблемы со сменой контрольного слова. CW обновляется каждые ~10 секунд, и если клиент не успевает получить новый ключ до смены цикла — изображение замирает ровно на это время. Причина обычно в высоком ECM response time (проверьте логи OScam — ищите значения выше 400–500 мс) или нестабильном сетевом соединении.
Чем OScam лучше CCcam для новичка?
Открытый исходный код, подробные логи с временем ответа на каждый ECM-запрос, и веб-интерфейс на порту 8888, где всё это видно в браузере без доступа к консоли. Гибкая система групп позволяет точно управлять тем, какой ридер обслуживает каких клиентов. Диагностировать проблемы в OScam значительно проще, чем в CCcam.
Как проверить, что сервер отвечает на нужном порту?
Быстрее всего через telnet hostname 12000 — если видите ответ или баннер, порт доступен. Если timeout — проверьте файрвол на сервере (iptables -L) и проброс портов на роутере. В веб-интерфейсе OScam статус каждого ридера отображается как connected/disconnected в разделе Readers.
Что означает hop в кардшаринге?
Hop — это количество промежуточных серверов между вашим клиентом и физической смарт-картой. Hop 1 означает прямое подключение к серверу с картой — это идеально. Hop 2 — между вами и картой стоит ещё один сервер. Каждый дополнительный hop добавляет задержку к ECM-ответу и увеличивает риск фризов, особенно на HD-каналах.