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 неудачных попыток.

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.