CCcam: что это, как работает протокол card sharing

CCcam — это проприетарный протокол card sharing, работающий поверх TCP/IP. Если вы только разбираетесь в теме или мигрируете с Newcamd на что-то более современное, это руководство даёт техническое понимание архитектуры, конфигурации и диагностики. Без воды — только то, что реально нужно для настройки.

Что такое CCcam и как работает протокол

Смысл card sharing прост: одна физическая смарт-карта обслуживает несколько ресиверов по сети. CCcam реализует это через TCP-соединение, где сервер держит карту в ридере, а клиенты запрашивают расшифровку в реальном времени.

История и назначение протокола

Протокол появился в середине 2000-х как решение для спутникального сообщества. Последняя официальная версия — 2.3.2, выпущена в 2014 году. С тех пор разработка полностью остановилась. Тем не менее протокол до сих пор живёт — благодаря OScam, который умеет работать с CCcam как клиент и как сервер.

Исходного кода никто никогда не видел. Это закрытый бинарник, и именно поэтому сообщество постепенно перешло на OScam.

Архитектура клиент-сервер

Архитектура стандартная: один сервер с картой, много клиентов. Сервер слушает на порту 12000 (по умолчанию). Клиент подключается, аутентифицируется через логин/пароль, и дальше начинается обмен зашифрованными данными.

Соединение держится постоянно — не сессионно, а как долгоживущий TCP-стрим. Это важно для понимания проблем с дисконнектами.

Обмен ECM и контрольными словами (CW)

Вот как это работает на уровне протокола. DVB-поток содержит зашифрованные пакеты и ECM (Entitlement Control Message) — это зашифрованный контейнер с ключами. Ресивер-клиент вытаскивает ECM из потока и отправляет его на CCcam-сервер. Сервер передаёт ECM в смарт-карту через CAM или PCSC-ридер. Карта возвращает CW (Control Word) — 8-байтный ключ, которым расшифровывается видео. Сервер отправляет CW обратно клиенту. Клиент расшифровывает поток в реальном времени.

Весь этот цикл должен укладываться в ~300-500 мс, иначе будут артефакты или чёрный экран. CW меняются каждые ~10 секунд (cryptoperiod), поэтому запросы идут постоянно.

Hop-уровни и реселлинг карт

Hop — количество промежуточных серверов между физической картой и конечным клиентом. H0 — карта прямо в ридере на сервере. H1 — карта через один сервер (оптимально). H2 и выше — цепочка серверов, и тут начинаются проблемы: ECM time растёт, стабильность падает.

Сервер может разрешать или запрещать reshare через параметры в F-line. Если вы получаете карту с h0 и раздаёте клиентам как h1 — это нормальная схема. Но если кто-то берёт вашу h1 и перепродаёт как h2 без разрешения — это и есть несанкционированный реселлинг.

Структура файла CCcam.cfg и основные параметры

Весь конфиг CCcam-сервера живёт в одном файле. Синтаксис прямолинейный, но нюансов достаточно.

Расположение файла на разных прошивках (Enigma2, OpenATV, VTi)

На большинстве Enigma2-прошивок (OpenATV, VTi, OpenPLi) стандартный путь — /usr/keys/CCcam.cfg. На некоторых сборках файл лежит в /var/etc/CCcam.cfg. Перед правкой всегда проверяйте через find / -name CCcam.cfg 2>/dev/null — чтобы не редактировать не тот файл.

На чистом Linux-сервере путь определяете сами — можно класть в /etc/CCcam.cfg или рядом с бинарником.

Строка C: line — подключение к серверу

C-line — это клиентское подключение к удалённому серверу. Формат:

C: hostname.example 12000 mylogin mypassword no { 0:0:2 }

Разбор полей: hostname.example — адрес сервера (IP или домен). 12000 — порт. mylogin mypassword — учётные данные. no — запрет на передачу EMM (обычно no, если не нужна запись прав на карту). { 0:0:2 } — максимальный hop, который принимать от этого сервера (здесь — до h2). Можно указать несколько C-line — CCcam будет использовать первый доступный сервер.

Строка F: line — раздача клиентам

F-line создаёт аккаунт для клиента:

F: clientlogin clientpassword 1 0 1 0 { 0:0:2 }

Поля: логин, пароль, uphops (сколько hop принимать от клиента — обычно 0), downhops (сколько hop отдавать — 1 означает только прямые карты), флаг reshare (1 = разрешить, 0 = запретить), флаг suppress_cardsharing. Последний параметр { 0:0:2 } — ограничение по CAID.

Параметры SERVER LISTEN PORT, WEBINFO LISTEN PORT

В файле CCcam.cfg несколько глобальных параметров:

SERVER LISTEN PORT: 12000
WEBINFO LISTEN PORT: 16001
WEBINFO USERNAME: admin
WEBINFO PASSWORD: strongpass123

Порт 12000 — основной, для card sharing. Порт 16001 — веб-интерфейс со статусом карт, подключённых клиентов и ECM-таймингами. Менять оба от дефолтных — хорошая практика.

ALLOW TELNETINFO, SHOW TIMING

Ещё два полезных параметра:

ALLOW TELNETINFO PORT: 16000
SHOW TIMING: yes
DEBUG: yes

ALLOW TELNETINFO PORT открывает telnet-консоль для диагностики на порту 16000. SHOW TIMING добавляет в лог время ECM-ответов. DEBUG: yes делает лог подробным — включать только при диагностике, иначе лог раздувается быстро.

Установка CCcam на Linux-сервер и Enigma2-ресивер

Требования к железу и ОС

На Enigma2 — любой ресивер с поддержкой softcam. На Linux нужен x86_64 или ARM (соответственно разные бинарники). Для работы с физической смарт-картой нужен PCSC-совместимый ридер и пакеты pcscd + ccid. Без физической карты — только C-line к другому серверу.

Установка бинарника через ipk/opkg на Enigma2

На OpenATV и OpenPLi:

opkg update
opkg install enigma2-plugin-softcams-cccam-2.3.2

После установки softcam появится в меню управления. Перед запуском — положите CCcam.cfg в /usr/keys/ с заполненными C-line. Запуск через GUI: Setup → System → Softcam → выбрать CCcam → Start.

Важно: на ARM-ресиверах используется бинарник CCcam.arm, на MIPS — CCcam.mips. Бинарник x86_64 на них не запустится — получите cannot execute binary file.

Запуск как systemd-сервис на Debian/Ubuntu

Копируем бинарник и даём права:

cp CCcam.x86_64 /usr/bin/CCcam
chmod +x /usr/bin/CCcam

Создаём unit-файл /etc/systemd/system/cccam.service:

[Unit]
Description=CCcam Card Sharing
After=network.target

[Service]
ExecStart=/usr/bin/CCcam
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Включаем и запускаем:

systemctl daemon-reload
systemctl enable cccam
systemctl start cccam

Подключение PCSC-ридера для физической карты

Если есть физическая смарт-карта:

apt install pcscd ccid
systemctl start pcscd
pcsc_scan

pcsc_scan покажет, видит ли система карту. CCcam автоматически подхватит карту через PCSC-интерфейс при запуске. Если карта не определяется — проверьте lsusb на наличие ридера и journalctl -u pcscd на ошибки.

Проверка через webinfo на порту 16001

После запуска открываем http://server-ip:16001 в браузере. Там видим: список подключённых C-line с hop-уровнями, список активных клиентов (F-line соединения), CAID доступных карт и ECM-тайминги. Если webinfo не открывается, а CCcam работает — проверьте iptables и параметр WEBINFO LISTEN PORT в конфиге.

CCcam vs OScam vs Newcamd: технические отличия

Часто задают вопрос: что выбрать в 2026? Давайте по-честному, с реальными отличиями.

Параметр CCcam 2.3.2 OScam Newcamd
Открытость кода Закрытый бинарник Open-source (SVN) Open-source
Последнее обновление 2014 год (мёртв) Активная разработка Устарел
Простота настройки Высокая Средняя (больше параметров) Высокая
Поддержка протоколов Только CCcam CCcam, Newcamd, CS378X, Radegast Только Newcamd
Эмуляторы Ограниченно SoftEMU, GBOX и другие Только локальные
Стабильность Приемлемо при h1 Лучше, настраивается Хорошо для локального

Открытость кода и поддержка

OScam разрабатывается открыто — любой может посмотреть исходники, собрать под свою платформу, предложить патч. CCcam — закрытый бинарник 12-летней давности. Это не просто философское отличие: когда появляются новые системы условного доступа, OScam адаптируется, а CCcam — нет.

Производительность и стабильность

В моём опыте OScam с протоколом CCcam стабильнее под нагрузкой. У чистого CCcam бывают утечки памяти при большом количестве клиентов (50+). OScam управляет ресурсами лучше, поддерживает лимиты на количество соединений, приоритизацию по CAID.

Поддержка протоколов (DVB-CSA, AES, Nagra)

OScam поддерживает несколько протоколов одновременно. Можно принимать клиентов по CCcam-протоколу, а подключаться к аплинку по Newcamd — в одном конфиге. CCcam так не умеет.

Когда выбрать какой softcam

CCcam 2.3.2 стоит выбирать только если вы устанавливаете на старый ресивер с минимальным железом и хотите максимально простой конфиг с одним C-line. Для всего остального — OScam с модулем protocol = cccam в oscam.server. Вы получаете совместимость с CCcam-серверами плюс все преимущества открытого проекта.

Newcamd в 2026 году — только если работаете с локальными эмуляторами на совсем старом оборудовании.

Диагностика и решение типичных проблем CCcam

Чёрный экран на закодированных каналах

Первое что делать — смотреть лог:

tail -f /tmp/CCcam.log

Или на Linux: journalctl -u cccam -f. Чёрный экран при подключённом сервере обычно означает одно из: CW не приходит вовремя, неправильный CAID в C-line, или конфликт двух softcam запущенных одновременно. Если видите строки can't decode — проблема на стороне сервера. Если лог вообще пустой — CCcam не запустился.

Конфликт CCcam + OScam одновременно — классическая ошибка. Проверьте через ps aux | grep -i cam и отключите лишний через /etc/init.d/softcam stop.

Сервер виден но карты не открываются (00 hops)

В webinfo колонка hops показывает 00. Причины: неверный логин/пароль (сервер принял соединение, но не авторизовал), ограничение по IP на стороне сервера, hop-лимит в F-line исчерпан, или сервер просто не имеет карт с нужным CAID.

Проверьте через telnet-консоль:

telnet localhost 16000

Команда l покажет список C-line и их статус. Команда rc перечитает конфиг без рестарта.

Постоянные дисконнекты и replay-проблемы

Replay detected в логе означает, что один аккаунт используется с нескольких IP одновременно. Сервер это видит и сбрасывает соединение. Исправление со стороны сервера — добавить в F-line ограничение по количеству одновременных соединений или привязать к IP. Со стороны клиента — убедитесь, что один аккаунт используется только на одном ресивере.

ECM time превышает 1000 мс

В webinfo колонка ecm показывает время ответа в миллисекундах. Норма — до 500 мс, желательно до 300. Больше 1000 мс — будут артефакты. Причины: высокий hop (h2+), перегрузка аплинк-сервера, проблемы с сетью. Если SHOW TIMING: yes в конфиге — тайминги пишутся и в лог.

Решение: попробуйте другой C-line с h1, проверьте пинг до сервера командой ping hostname.example. Пинг выше 150 мс уже проблематичен для стабильного card sharing.

Логи: /tmp/CCcam.log и telnet на порт 16000

Полный набор диагностических команд в telnet-консоли (порт 16000): l — список C-line. f — список F-line и подключённых клиентов. rs — полный рестарт CCcam. rc — reload конфига. debug — включить дополнительный вывод.

Безопасность CCcam-сервера и защита от утечки

Открытый порт 12000 на публичном IP — это приглашение для сканеров. Боты постоянно перебирают стандартные порты card sharing. Несколько мер, которые стоит применить сразу.

Изменение портов по умолчанию

В CCcam.cfg:

SERVER LISTEN PORT: 23456
WEBINFO LISTEN PORT: 28001

Нестандартный порт не защищает от целенаправленных атак, но отсеивает 90% автоматических сканеров, которые бьют только по дефолтным портам.

Ограничение по IP через iptables

Webinfo никогда не должен быть доступен из интернета. Только из локальной сети:

iptables -A INPUT -p tcp --dport 28001 -s 192.168.0.0/16 -j ACCEPT
iptables -A INPUT -p tcp --dport 28001 -j DROP

Для основного порта card sharing — если знаете IP клиентов, тоже ограничьте. Или хотя бы заблокируйте диапазоны известных сканеров через ipset.

Защита webinfo паролем

WEBINFO USERNAME: myuser
WEBINFO PASSWORD: randomstring42

Без этих строк webinfo открыт всем без пароля. Пароль не сложный, но без него — вообще никакой защиты.

Fail2ban для блокировки перебора

Создайте фильтр /etc/fail2ban/filter.d/cccam.conf:

[Definition]
failregex = .* wrong login from <HOST>
ignoreregex =

И jail в /etc/fail2ban/jail.local:

[cccam]
enabled = true
filter = cccam
logpath = /tmp/CCcam.log
maxretry = 3
bantime = 3600
findtime = 600

После трёх неверных попыток авторизации за 10 минут — IP блокируется на час. Перезапустите fail2ban: systemctl restart fail2ban.

Какой стандартный порт у CCcam?

Три порта: 12000 — основной протокол card sharing (SERVER LISTEN PORT), 16001 — веб-интерфейс статуса (WEBINFO LISTEN PORT), 16000 — telnet-консоль для диагностики. Все три меняются в CCcam.cfg. Рекомендуется менять от дефолтных.

Чем отличается C-line от F-line в CCcam.cfg?

C-line — это исходящее подключение: вы как клиент подключаетесь к чужому серверу и получаете CW. F-line — входящее: вы раздаёте карты своим клиентам с указанием логина, пароля, uphops/downhops и уровня reshare. На чисто клиентском ресивере нужна только C-line.

Что означает hop 1, hop 2 в CCcam?

Hop — количество промежуточных серверов между физической картой и вашим ресивером. Hop 0 — карта стоит прямо в ридере на сервере, к которому вы подключены. Hop 1 — оптимально: быстро, стабильно. Hop 2 и выше — цепочка серверов, ECM time растёт, стабильность падает. Старайтесь работать только с h1.

Почему CCcam показывает 00 в колонке cards?

Сервер принял TCP-соединение, но карты не передал. Типичные причины: неверный логин или пароль, ограничение по IP на сервере, сервер не имеет карт с вашим CAID, или hop-лимит в F-line не позволяет передать карту. Диагностируйте через webinfo и лог — там будут строки с описанием причины.

CCcam или OScam — что выбрать в 2026?

OScam с протоколом CCcam — однозначно лучший выбор. Открытый код, активная разработка, поддержка новых CAM-систем, гибкая конфигурация. Чистый CCcam 2.3.2 не обновлялся с 2014 года и технически мёртв. Единственный аргумент за CCcam — немного проще первоначальная настройка, но это преимущество исчезает после первого прочтения документации OScam.

Можно ли запустить CCcam на обычном Linux-сервере без ресивера?

Да. Бинарник CCcam.x86_64 работает на Debian, Ubuntu, CentOS. Для работы с физической смарт-картой нужен USB PCSC-ридер и пакеты pcscd + ccid. Без физической карты сервер работает как ретранслятор — принимает карты через C-line и раздаёт клиентам через F-line. Запуск через systemd-юнит описан выше.

Где лежит CCcam.cfg на Enigma2-ресивере?

Стандартный путь — /usr/keys/CCcam.cfg на большинстве прошивок (OpenATV, VTi, OpenPLi). На некоторых сборках — /var/etc/CCcam.cfg. Проверьте через find / -name CCcam.cfg. После правки файла нужен рестарт softcam — через GUI или командой rc в telnet-консоли на порту 16000. И обязательно делайте бэкап CCcam.cfg перед обновлением прошивки — апдейт может перезаписать файл дефолтным.

Практические советы для стабильного просмотра

Даже самая стабильная линия 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 или внешние мониторы.