CCcam Server: настройка, конфиги и порты (2026)

Если вы дошли до этой статьи, то уже знаете, что такое cardsharing в общих чертах. Здесь — конкретика: как поднять cccam server на Linux или Enigma2-ресивере, разобраться с C-line/F-line, открыть правильные порты и прочитать лог когда что-то пошло не так. Без воды — только команды и конфиги.

Что такое CCcam server и как он работает

CCcam — это программное обеспечение для обмена ключами декодирования между спутниковыми ресиверами. Схема простая: ваш ресивер принимает зашифрованный поток, вычленяет ECM-пакет (Entitlement Control Message) и отправляет его на сервер. Сервер передаёт ECM на физическую смарт-карту или пиру, получает в ответ DCW (Decryption Control Word) — 16-байтный ключ — и возвращает его клиенту. Весь этот обмен занимает в норме 200–600 мс.

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

На одной стороне — CCcam в роли клиента: у вас есть C-line (Connection line), вы подключаетесь к чужому серверу и получаете ключи. На другой стороне — CCcam в роли сервера: у вас есть F-line (Friend line), вы принимаете подключения от других ресиверов. Один и тот же демон может работать в обоих режимах одновременно.

Один cccam server может обслуживать несколько клиентов параллельно. При этом карта физически одна — демон мультиплексирует ECM-запросы и кэширует DCW. Если один клиент уже запросил ключ для данного канала, остальные получат его из кэша без повторного запроса к карте.

Протокол CCcam поверх TCP порта 12000

CCcam использует собственный бинарный протокол поверх TCP. Порт по умолчанию — 12000. Протокол не стандартизирован публично, но хорошо изучен реверс-инжинирингом — именно поэтому OScam умеет эмулировать CCcam-клиент.

Рукопожатие при подключении включает XOR-обфускацию первых 16 байт с SHA1-хэшем от username+password. Это не шифрование в полном смысле — перехватить трафик tcpdump-ом и увидеть CAID/SID можно без особых усилий. Для реальной защиты нужен VPN поверх.

Роль ECM, EMM и DCW в обмене ключами

ECM (Entitlement Control Message) — зашифрованный пакет с ключом канала, меняется каждые 10–120 секунд в зависимости от провайдера. EMM (Entitlement Management Message) — сообщения для обновления прав на карте, нужны для поддержания авторизации. DCW — это собственно ключ, которым декодируется видеопоток прямо сейчас.

Если EMM не обрабатываются — карта через некоторое время "вываливается" из авторизации. Именно поэтому параметр DISABLE EMM в CCcam.cfg нужно трогать осторожно.

Отличие CCcam от OScam и newcamd

CCcam — монолитный, простой в настройке, но не очень гибкий. OScam — модульный, поддерживает newcamd, camd35, gbox, radegast и кучу других протоколов одновременно. На современных установках OScam чаще используется как сервер, а CCcam — как клиент на ресивере.

Newcamd (NDS Conditional Access System emulation) работает на портах типа 10000–10010 и использует Triple DES для шифрования трафика — это чуть безопаснее голого CCcam. camd35 проще и быстрее, но практически не используется в новых конфигурациях. По латентности все три протокола примерно одинаковы — разница в пределах 20–50 мс.

Установка CCcam server на Linux и Enigma2

Прежде чем лезть в конфиги — разберёмся с путями и способами установки. На разных системах они отличаются, и путать их не стоит.

Установка на Enigma2-ресивер (ipk-пакет)

На Enigma2 (Dreambox, Vu+, GigaBlue и прочие) CCcam устанавливается через opkg:

opkg install CCcam

Бинарник оказывается в /usr/bin/CCcam, конфиг ищется по пути /var/etc/CCcam.cfg. На части образов путь /etc/CCcam.cfg — симлинк на /var/etc/CCcam.cfg, но лучше проверить через ls -la /etc/CCcam.cfg.

После редактирования конфига ресивер не перечитывает его автоматически. Перезапуск:

killall -9 CCcam && CCcam -s

Без -9 CCcam иногда игнорирует SIGTERM и висит зомби-процессом.

Установка на Debian/Ubuntu VPS

На VPS бинарник CCcam нужно скачать и установить вручную — в официальных репозиториях Debian его нет. Скачиваете бинарник под архитектуру (x86_64 для большинства VPS), копируете в /usr/bin/CCcam, даёте права на исполнение:

chmod +x /usr/bin/CCcam
mkdir -p /etc/CCcam
touch /var/log/CCcam.log

Конфиг на Linux VPS обычно кладут в /etc/CCcam.cfg. Проверка запуска в режиме отладки:

CCcam -d

Флаг -s запускает в фоне (daemon mode), -d — в foreground с подробным логом в stdout. При первом запуске всегда используйте -d — сразу видно все ошибки конфига.

Права доступа и автозапуск через systemd

Запускать CCcam от root — плохая идея. Создайте отдельного пользователя:

useradd -r -s /bin/false cccam
chown cccam:cccam /var/log/CCcam.log
chown cccam:cccam /etc/CCcam.cfg

Обратите внимание: если вы меняете порт с дефолтного 12000 на что-то меньше 1024, демону нужны root-права или capability CAP_NET_BIND_SERVICE. На порту 12000 проблем нет — непривилегированный пользователь его биндит без вопросов.

Systemd unit-файл (/etc/systemd/system/cccam.service):

[Unit]
Description=CCcam cardsharing daemon
After=network.target

[Service]
Type=forking
User=cccam
ExecStart=/usr/bin/CCcam -s
ExecStop=/usr/bin/killall CCcam
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=multi-user.target

Активация:

systemctl daemon-reload
systemctl enable cccam
systemctl start cccam

Параметр Restart=on-failure важен — CCcam периодически падает при проблемах с картой или плохим пиром. Пусть systemd его поднимает автоматически.

Расположение бинарника и логов

Стандартные пути, которые стоит знать:

  • Бинарник: /usr/bin/CCcam
  • Конфиг (Enigma2): /var/etc/CCcam.cfg
  • Конфиг (Linux): /etc/CCcam.cfg
  • Лог: /var/log/CCcam.log или /tmp/CCcam.log на Enigma2
  • Веб-интерфейс (если включён): http://localhost:16001

Один важный баг, который я встречал несколько раз: CCcam падает с segfault сразу после старта, если в начале файла CCcam.cfg есть BOM-метка UTF-8 (три байта: EF BB BF). Это случается когда конфиг редактируется в Windows Notepad. Проверить и убрать:

file /etc/CCcam.cfg
# если видите "UTF-8 Unicode (with BOM)" — исправляйте
sed -i '1s/^\xEF\xBB\xBF//' /etc/CCcam.cfg

Структура файла CCcam.cfg: C-line, F-line, N-line

CCcam.cfg — plaintext, одна директива на строку, регистрозависимый, без табуляций (только пробелы). Ошибка в синтаксисе одной строки не ломает весь файл — CCcam просто пропускает непонятные строки, что иногда хуже: думаешь что настроил, а строка молча игнорируется.

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

C-line описывает исходящее подключение к чужому cccam server:

C: hostname.example.com 12000 myusername mypassword no { 0:0:1 }

Формат: C: хост порт логин пароль [получать_EMM] { CAID:provider:маска }

Последний параметр no — не получать EMM от этого сервера. Если у вас локальная карта, EMM должен обрабатываться локально. Фигурные скобки с CAID — фильтр: { 0:0:1 } означает "принимать всё". Для ограничения по конкретному CAID: { 0500:000000:1 }.

F-line — приём входящих подключений (friend)

F-line создаёт учётную запись для входящих подключений:

F: frienduser friendpass 1 0 0 { 0:0:1 }

Формат: F: логин пароль [reshare] [minimal_hop] [max_hops] { фильтр }

Первая цифра после пароля — это RESHARE: сколько уровней дальше этот пользователь может расшарить ключи. 0 — нельзя расшарить никому, 1 — может отдать своим клиентам, но не дальше. Рекомендую ставить 0 или 1 для внешних пользователей.

N-line — newcamd протокол

N-line подключается к newcamd-серверу (например OScam с включённым newcamd-модулем):

N: hostname.example.com 10000 user password 01 02 03 04 05 06 07 08 09 10 11 12 13 14 { 0:0:1 }

14 байт в середине — это DES-ключ для шифрования соединения. Они должны совпадать с тем что прописано на newcamd-сервере. Генерировать случайно: openssl rand -hex 14 | sed 's/../& /g'.

SERVER LISTEN PORT и WEBINFO LISTEN PORT

SERVER LISTEN PORT = 12000
WEBINFO LISTEN PORT = 16001
WEBINFO LISTEN IP = 127.0.0.1

Если на машине уже запущен OScam и он занял порт 12000 — CCcam стартует, но не принимает подключения. В логе будет что-то вроде bind failed: address already in use. Проверить: ss -tlnp | grep 12000. Решение — поменять порт в одном из конфигов.

HOP, RESHARE и DISABLE EMM

Это три параметра, которые большинство гайдов упоминают вскользь, а они реально влияют на стабильность.

HOP — максимальная глубина цепочки решарка, от которой CCcam будет принимать ключи. HOP 0 = только локальные карты, HOP 1 = локальные + прямые пиры, HOP 2 = + пиры пиров. Чем больше хопов — тем выше ECM time. Рекомендую не более 2.

RESHARE — сколько уровней вы передаёте дальше своим клиентам. Глобальный параметр для всего сервера, переопределяется в F-line для конкретных пользователей.

HOP = 2
RESHARE = 1
DISABLE EMM = no

DISABLE EMM = yes стоит ставить только если у вас нет локальной карты и вы чисто ретранслируете — тогда EMM вам не нужны и только создают трафик.

Настройка сети, портов и брандмауэра

Запустить cccam server на машине — половина дела. Вторая половина — чтобы клиенты могли до него достучаться.

Открытие TCP 12000 в iptables/ufw

На Ubuntu/Debian с ufw:

ufw allow 12000/tcp
ufw reload

Через iptables напрямую:

iptables -A INPUT -p tcp --dport 12000 -j ACCEPT
iptables-save > /etc/iptables/rules.v4

Проверка доступности извне (замените IP на реальный):

nc -zv 1.2.3.4 12000
# или
telnet 1.2.3.4 12000

Если соединение устанавливается (видите "Connected") — порт открыт. CCcam сразу закрывает соединение без валидного handshake — это нормально, важен сам факт TCP-соединения.

Диагностика трафика на сервере:

tcpdump -i any -n port 12000

Видите SYN-пакеты но нет SYN-ACK — мешает firewall. Видите SYN-ACK но нет дальнейшего трафика — CCcam не принимает подключение, проверяйте лог.

NAT и проброс портов на роутере

Если сервер стоит за роутером с серым IP (192.168.x.x / 10.x.x.x) — нужен проброс порта. В роутере создаёте правило: внешний TCP 12000 → внутренний IP сервера 12000.

Одна неочевидная проблема: NAT loopback (hairpin NAT) не работает на многих бытовых роутерах. Это значит, что устройства в вашей локальной сети не смогут подключиться к серверу через внешний IP — только через локальный. Если ресивер и сервер в одной сети — в C-line пишите локальный IP (192.168.1.100), а не внешний.

Динамический IP и DDNS

Если ваш провайдер выдаёт динамический IP — C-line у ваших пиров сломается при каждой смене адреса. Решение: DDNS-сервис (No-IP, DuckDNS и подобные). Создаёте домен типа myserver.duckdns.org, настраиваете клиент обновления на сервере, в C-line пишете домен вместо IP.

То же самое касается ваших пиров: если у пира динамический IP без DDNS — его C-line будет периодически ломаться. Стабильный статический IP у пира — один из ключевых критериев надёжности.

Webinfo на порту 16001 и защита паролем

Веб-интерфейс CCcam на порту 16001 показывает подключённых клиентов, статус карт, ECM time. Полезная вещь для мониторинга. Но открывать его на публичный интерфейс без пароля — это мгновенный слив всей вашей топологии любому кто просканирует ваш IP.

Обязательные настройки:

WEBINFO LISTEN IP = 127.0.0.1
WEBINFO LISTEN PORT = 16001
WEBINFO USERNAME = admin
WEBINFO PASSWORD = ваш_сложный_пароль

Если нужен доступ снаружи — поднимите SSH-туннель: ssh -L 16001:127.0.0.1:16001 user@server и открывайте http://localhost:16001 у себя.

Диагностика и чтение логов CCcam

Большинство проблем решается чтением лога. CCcam пишет достаточно подробно, главное — знать что искать.

Уровни логирования и -d debug режим

В CCcam.cfg управление логом:

DEBUG LEVEL = 4
LOG FILE = /var/log/CCcam.log

Уровень 4 — максимальный, пишет каждый ECM-запрос. Для продакшна лучше поставить 2–3, иначе лог разрастается быстро. При разборе проблем включайте 4 временно: killall -HUP CCcam (если поддерживается) или перезапуск с -d.

tail -f /var/log/CCcam.log

Расшифровка строк ECM: CAID, провайдер, SID

Типичная строка успешного обмена:

CWs from reader CARD on CAID 0500:032830 SID 1234 in 384 ms

Разбираем: CAID 0500 — это Viaccess. 032830 — provider ID. SID 1234 — Service ID (номер канала в транспондере). 384 ms — время получения ключа.

Основные CAID, которые встречаются:

  • 0500 — Viaccess
  • 0B00 — Conax
  • 0600 — Irdeto
  • 0100 — SECA/Mediaguard
  • 0D00 — Cryptoworks
  • 1800 — Nagravision
  • 0E00 — PowerVu

Типичные ошибки: 'no card available', 'timeout'

no card available for CAID XXXX — у вас нет ни локальной карты, ни подключённого пира с этим CAID. Проверьте C-line и статус подключения к серверу.

ECM timeout — пир не ответил в отведённое время. Причины: пинг до сервера >200 мс, сервер перегружен, цепочка хопов слишком длинная. Попробуйте ping хост_сервера — если >100 мс стабильно, это проблемный пир.

no matching provider — CAID совпадает, но provider ID отличается. Часто встречается с Viaccess (0500) где у одного оператора несколько provider ID. Нужно добавить конкретный provider в SERVICES или убрать фильтр.

ECM time >1000 мс и фризы каждые 10–30 секунд — классический признак деградации пира или перегруженной карты. Карта физически не успевает обрабатывать запросы от множества клиентов одновременно.

Мониторинг через CCcam.log и tail -f

Для мониторинга в реальном времени:

tail -f /var/log/CCcam.log | grep -E "(ECM|timeout|error|CAID)"

Если хотите видеть только проблемные строки:

tail -f /var/log/CCcam.log | grep -v "CWs from reader" | grep -v "^$"

Проверка что демон вообще слушает порт:

ss -tlnp | grep 12000
# или старый вариант:
netstat -tlnp | grep 12000

Обмен с пирами: критерии выбора и безопасность

Здесь скажу прямо: не буду называть конкретных провайдеров или сайты с C-line. Во-первых, они появляются и исчезают. Во-вторых, вы должны понимать что выбираете сами. Вот критерии.

Что проверять у потенциального пира (uptime, ECM time, локальные карты)

Главное — наличие локальной карты, а не цепочки решарка. Спросите напрямую: карта физическая или решаркнутая? Если пир сам получает ключи от третьего источника — это реселл, и при любых проблемах у источника вы останетесь без ключей.

Что смотреть перед тем как прописать чужую C-line:

  • ECM time в норме должен быть <500 мс. Если вам показывают скриншоты с 200–300 мс — хороший знак.
  • Uptime: сервер должен работать стабильно, а не падать раз в сутки.
  • Фиксированный IP или DDNS. Динамический IP без DDNS — гарантированные периодические разрывы.
  • Скорость ответа на вопросы. Если пир не отвечает на базовые технические вопросы — что будет когда реально что-то сломается?

Признаки нестабильного или ненадёжного источника

Бесплатные публичные C-line из интернета — это мусор. Не потому что жадность, а потому что к ним подключаются тысячи людей, карта перегружена, ECM time 2000+ мс, каналы фризят постоянно.

Признаки проблемного пира: ECM time скачет от 300 до 3000 мс, фризы каждые несколько минут, сервер периодически недоступен без предупреждения, в логе видно timeout чаще чем CWs from reader. Если HOP в ответах от пира показывает 3–4 — это многоуровневый решарк, и стабильности от него ждать не стоит.

Почему НЕ стоит публиковать свой C-line публично

Если вы опубликуете свою C-line на публичном форуме или в Telegram-канале — к вашему серверу подключатся сотни клиентов. Ваша карта перегрузится, каналы начнут фризить у всех включая вас, а ещё вы нарушите соглашения с вашими пирами (если они есть).

Кроме того, публичные C-line собирают боты, которые автоматически подбирают пароли. Fail2ban на порту 12000 — обязательная мера если ваш сервер доступен из интернета:

# /etc/fail2ban/filter.d/cccam.conf
[Definition]
failregex = CCcam.*wrong password.*from <HOST>
ignoreregex =

# /etc/fail2ban/jail.local
[cccam]
enabled = true
port = 12000
filter = cccam
logpath = /var/log/CCcam.log
maxretry = 3
bantime = 3600

Юридический контекст в разных странах

Честно о правовой стороне: обмен ключами для декодирования платных пакетов нарушает условия использования большинства операторов платного ТВ. В ряде стран ЕС (Германия, Великобритания, Франция) это прямо запрещено законодательством. В других странах правовая база размытая или правоприменение слабое.

Материал в этой статье подаётся в образовательных целях и применим к работе с открытыми тестовыми CAID, собственными картами в тестовой среде, и исследованию протокола CCcam. Перед использованием в продакшне — ознакомьтесь с законодательством вашей юрисдикции.

Часто задаваемые вопросы

Какой порт по умолчанию использует CCcam server?

TCP 12000 для основного протокола CCcam, TCP 16001 для веб-интерфейса (webinfo). Оба порта меняются в CCcam.cfg параметрами SERVER LISTEN PORT и WEBINFO LISTEN PORT. Если меняете на порт ниже 1024 — нужны root-права или capability CAP_NET_BIND_SERVICE.

Где находится файл конфигурации CCcam.cfg?

На Enigma2-ресиверах: /var/etc/CCcam.cfg (иногда /etc/CCcam.cfg как симлинк). На Linux VPS: /etc/CCcam.cfg. Бинарник CCcam при старте ищет конфиг по фиксированным путям — изменить через аргумент командной строки нельзя. Проверьте реальное расположение через strace CCcam 2>&1 | grep open если сомневаетесь.

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

C-line — исходящее подключение: вы клиент, подключаетесь к чужому cccam server и получаете ключи. F-line — входящее подключение: вы сервер, принимаете подключение от friend-пользователя. N-line — то же что C-line, но по протоколу newcamd с Triple DES шифрованием. Один демон может иметь несколько C-line и несколько F-line одновременно.

Что означает HOP и RESHARE в CCcam.cfg?

HOP — расстояние до карты: 0 = локальная карта, 1 = напрямую от пира, 2 = пир пира. Параметр HOP в глобальной конфигурации ограничивает максимальный хоп от которого CCcam принимает ключи. RESHARE определяет сколько уровней ваши клиенты могут передать дальше. RESHARE 0 запрещает любой дальнейший решарк — рекомендуется для внешних пользователей.

Почему ECM time больше 1000 мс и каналы фризят?

Основные причины: перегрузка пира (слишком много клиентов на одной карте), высокий пинг до сервера (>100 мс), длинная цепочка решарка (3+ хопов), перегруженная локальная карта, неправильный CAID/provider ID в фильтре. Диагностика: CCcam -d и tail -f /var/log/CCcam.log | grep "ECM". Если видите ECM time стабильно >800 мс — меняйте пира или уменьшайте нагрузку на карту.

Можно ли запустить CCcam server и OScam одновременно на одной машине?

Да, если используют разные порты. OScam обычно работает на 988 (camd35), 10000+ (newcamd) и других портах; CCcam на 12000. Конфликт возможен если оба пытаются занять один порт — проверяйте через ss -tlnp. Связать их можно через N-line в CCcam.cfg: CCcam будет получать ключи от OScam по newcamd-протоколу, что удобно когда OScam работает с картой а CCcam раздаёт ключи клиентам.

Как защитить CCcam server от несанкционированного доступа?

Несколько уровней защиты: сложные username/password в F-line (минимум 12 символов, буквы+цифры); ограничение подключений по IP через iptables (если у пира статический IP); webinfo только на 127.0.0.1 через параметр WEBINFO LISTEN IP; запуск демона от отдельного непривилегированного пользователя, а не root; fail2ban на порту 12000 с bantime 3600 секунд после 3 неудачных попыток.

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

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