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 перед обновлением прошивки — апдейт может перезаписать файл дефолтным.

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.