Cardsharing CCcam: настройка сервера и клиента 2026

Если вы занимаетесь cardsharing cccam хоть сколько-нибудь серьёзно, рано или поздно придётся разобраться в деталях: как именно работает протокол, где лежат конфиги, что значат эти hops и почему периодически всё замерзает. Эта статья — конкретная техническая инструкция без маркетинга и воды.

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

Принцип работы card sharing через CCcam

CCcam — это демон, который принимает ECM (Entitlement Control Message) от клиентского ресивера, пересылает его на сервер с физической смарт-картой, получает в ответ DCW (De-scrambling Control Word) и возвращает его клиенту. Весь цикл должен уложиться в 300–400 мс, иначе начнутся заморозки.

На стороне сервера CCcam общается с CAM-модулем через CI-слот или встроенный кардридер. CAM расшифровывает ECM с помощью реальной карты и возвращает 16-байтовый DCW. Клиент получает этот ключ и дешифрует видеопоток в реальном времени.

Протокол CCcam: порт 12000 и обмен ECM/DCW

По умолчанию CCcam слушает TCP-порт 12000. Это основной канал обмена ECM/DCW между клиентом и сервером. Соединение постоянное — клиент подключается при старте и держит сессию открытой.

Первые байты обмена — согласование версии протокола и аутентификация. Логин и пароль из C-линии хешируются, соединение шифруется примитивным XOR-алгоритмом. Серьёзной криптографией это не назовёшь, отсюда — обязательная фильтрация по IP на уровне фаервола.

Отличия CCcam от OScam, NewCamd и MGcamd

CCcam — закрытый бинарник. Последняя официальная версия 2.3.x; дальше только форки и самосборки. Настройка простая, работает стабильно на старых ресиверах Dreambox 800/7080/8000 с ограниченным железом.

OScam — open source, написан на C, поддерживает одновременно CCcam, NewCamd, CAMD35, MGcamd-протоколы. Конфиг разбит на несколько файлов: /etc/oscam/oscam.conf, oscam.server, oscam.user. Гибкость выше, порог входа тоже. NewCamd работает на порту 15050 и чаще встречается в старых европейских шаринг-сетях. MGcamd — клиент-ориентированный демон, сам по себе сервер не поднимает.

Если у вас современный ресивер на Enigma2 и нужна гибкость — смотрите в сторону OScam. Если старый Dreambox и нужна простота — CCcam всё ещё рабочий вариант.

Понятия hops, reshare, локальные карты и пиры

Hops — количество промежуточных узлов между клиентом и реальной картой. Hops 0 означает, что карта подключена непосредственно к этому серверу. Hops 1 — сервер сам является клиентом другого сервера с картой. Hops 2 и выше — цепочка реселлеров.

Каждый дополнительный хоп добавляет задержку ECM. С hops 0 реальный ECM time обычно 50–150 мс. С hops 2+ легко получить 300–600 мс и периодические фризы.

Reshare — параметр, определяющий, может ли клиент передавать полученный DCW своим клиентам дальше. Значение 0 блокирует пробрасывание. Значение 1 разрешает передать ещё одному уровню. Параметр downhops в F-линии ограничивает глубину распространения со стороны сервера.

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

Требования: процессор, RAM, стабильный канал

Минимум для сервера с реальной картой: 256 MB RAM, любой ARM или x86 процессор от 400 МГц, стабильный аплинк от 1 Мбит/с. На каждого активного клиента уходит примерно 5–10 kbit/s трафика ECM/DCW.

50 клиентов — это около 0.5 Мбит/с постоянного трафика. Но важнее не пропускная способность, а стабильность: пакетные потери выше 1% или джиттер выше 20 мс напрямую вызывают фризы у клиентов.

Установка бинарника CCcam на Debian/Ubuntu

Бинарник CCcam для Linux x86/x64 распространяется отдельно. После получения файла:

cp CCcam /usr/bin/CCcam
chmod 755 /usr/bin/CCcam
chown root:root /usr/bin/CCcam

Конфиг создаётся вручную в /etc/CCcam.cfg. Директории для логов:

mkdir -p /var/log/CCcam
touch /var/log/CCcam/CCcam.log

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

На ресиверах с Enigma2 (Dreambox, VU+, Gigablue) установка через opkg:

opkg update
opkg install CCcam

Если пакет недоступен в репозитории вашего образа, IPK устанавливается вручную:

opkg install /tmp/CCcam_2.3.x_mipsel.ipk

После установки конфиг будет ожидаться в /var/etc/CCcam.cfg.

Расположение файлов: /usr/bin/CCcam, /var/etc/CCcam.cfg

На Linux-серверах стандартные пути:

  • Бинарник: /usr/bin/CCcam
  • Конфиг: /etc/CCcam.cfg
  • Лог: /var/log/CCcam/CCcam.log

На Enigma2-ресиверах пути немного другие:

  • Бинарник: /usr/bin/CCcam
  • Конфиг: /var/etc/CCcam.cfg

Важный момент: если права на бинарник выставлены неверно (например 644 вместо 755), после обновления прошивки Enigma2 CCcam молча не стартует. Это одна из самых частых проблем после апдейтов.

Запуск как systemd-сервис и автостарт

На Debian/Ubuntu создаём unit-файл /etc/systemd/system/cccam.service:

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

[Service]
Type=simple
ExecStart=/usr/bin/CCcam -c /etc/CCcam.cfg
Restart=on-failure
RestartSec=5s
StandardOutput=append:/var/log/CCcam/CCcam.log
StandardError=append:/var/log/CCcam/CCcam.log

[Install]
WantedBy=multi-user.target

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

systemctl daemon-reload
systemctl enable cccam
systemctl start cccam

Логи смотрим через:

journalctl -u cccam -f

На Enigma2 запуск через softcam-скрипт:

/etc/init.d/softcam.CCcam start

Настройка файла CCcam.cfg: C-линии, F-линии, параметры сервера

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

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

C: hostname port username password

Реальный пример (хост и данные вымышленные):

C: my.server.example 12000 mylogin mypassword

Несколько C-линий можно добавить последовательно. CCcam будет пробовать их по порядку. Если нужно принудительно задать приоритет при наличии дублирующихся CAID, используется параметр PRIO перед блоком C-линий:

PRIO
C: primary.server.example 12000 user1 pass1
C: backup.server.example 12000 user2 pass2

F-линия: создание собственного клиента

F-линия создаёт учётную запись клиента на вашем сервере:

F: username password uphops downhops reshare

Разбор параметров:

  • uphops — максимальное количество хопов карт, которые клиент может получать
  • downhops — сколько хопов можно добавить при пробросе (обычно 0 или 1)
  • reshare — разрешить ли клиенту пробрасывать карты своим клиентам (0 = запрет)

Пример создания клиента без права пробрасывать карты дальше:

F: clientuser strongpassword12 2 1 0

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

Основные параметры сервера в начале CCcam.cfg:

SERVER LISTEN PORT = 12000
WEBINFO LISTEN PORT = 16001
TELNETINFO LISTEN PORT = 23
TELNETINFO LISTEN PORT PASSWD = telnetpass
WEBINFO SHOW CLIENT NAMES = yes
LOG FILE = /var/log/CCcam/CCcam.log
ALLOW LEVEL = 3

Порт 12000 — основной, его меняют редко. Веб-интерфейс на 16001 удобен для мониторинга в браузере. Если сервер публичный — порт 16001 лучше либо закрыть фаерволом, либо сменить на нестандартный.

Опции ALLOW TELNETINFO, SHOW TIMING и логирование

Несколько полезных опций для диагностики и мониторинга:

SHOW TIMING = yes
ALLOW TELNETINFO = yes
SHOW PROVIDERINFO = yes
SHOW ECMINFO = yes
LOG DESTINATION = FILE

SHOW TIMING добавляет время обработки ECM в лог — незаменимо при диагностике медленных серверов. На продакшн-сервере с большим количеством клиентов лог может разрастаться быстро, поэтому стоит настроить ротацию через logrotate.

Reshare и hops: ограничение распространения

Reshare 0 в F-линии — клиент получает карты, но не может передать их своим клиентам. Это стандарт для конечных пользователей.

Reshare 1 — клиент может пробросить карту ещё одному уровню вниз. Используется для авторизованных реселлеров.

Параметр downhops в F-линии дополнительно ограничивает: даже если reshare разрешён, downhops 0 означает что клиент видит карты как hops 0 (локальные) и не может пробросить их дальше по логике CCcam. Это тонкий момент, который часто путают.

Настройка CCcam-клиента на ресивере

Получение C-линии от провайдера: что должно быть указано

Провайдер cardsharing cccam должен выдать строку вида:

C: server.example 12000 yourlogin yourpassword

Если в C-линии нет порта, или вместо порта стоит 0 — это ошибка. Если hostname указан как IP-адрес — нормально, лучше даже, меньше зависимость от DNS. Убедитесь что логин и пароль не содержат пробелов и специальных символов без экранирования.

Прописывание C-линии в CCcam.cfg клиента

Открываем файл клиента на ресивере (обычно /var/etc/CCcam.cfg) и добавляем строку:

C: server.example 12000 yourlogin yourpassword

Никаких F-линий на чисто клиентской машине не нужно — F-линии нужны только если вы сами раздаёте доступ своим клиентам. Также убедитесь что в конфиге нет старых C-линий к несуществующим серверам — CCcam будет пытаться подключиться к каждой и тратить время.

Перезапуск CCcam и проверка подключения через telnet

На Enigma2:

/etc/init.d/softcam restart

Или жёстче, если softcam-скрипт не реагирует:

killall -9 CCcam
sleep 2
CCcam -c /var/etc/CCcam.cfg &

Проверка через telnet на порту 23:

telnet 192.168.1.100 23

После ввода пароля телнета доступны команды: s — общий статус, r — readers (подключённые серверы), c — clients, p — providers (доступные CAID), g — general info с аптаймом.

Веб-интерфейс CCcam на порту 16001

Открываем браузер и идём на http://192.168.1.100:16001. Там четыре основных раздела:

  • Server — аптайм, версия, количество ECM за сессию
  • Clients — кто подключён, ECM time каждого клиента
  • Shares — доступные карты с их CAID, Provider ID, hops
  • Providers — полный список CAID которые отдаёт сервер

Раздел Shares особенно важен при диагностике — если нужный CAID там есть, но канал всё равно не открывается, проблема в Provider ID.

Привязка пакета к каналу (ECM PID, CAID, Provider ID)

Каждый зашифрованный канал имеет свой набор: CAID (идентификатор системы шифрования), Provider ID (идентификатор провайдера внутри системы) и ECM PID (идентификатор потока ECM в транспортном мультиплексе).

Если сервер отдаёт CAID 0x0500 (Viaccess), но ваш канал использует Provider ID 0x042800, а в Shares на сервере этот Provider ID отсутствует — канал не откроется, хотя CAID совпадает. Это типичная ситуация при подключении к серверу реселлера с неполным набором карт.

Как выбирать провайдера CCcam: критерии без имён

Стабильность и аптайм сервера

Минимальный приемлемый аптайм — 99%. Это примерно 7 часов даунтайма в месяц. Всё что ниже — проблема. Хороший провайдер должен показывать историю аптайма за последние 30 дней. Если такой статистики нет — это уже сигнал.

И да, "мы переезжаем на новый сервер" — не объяснение даунтайма, а признак плохого планирования.

Скорость отдачи DCW (ms) и количество freeze

Ориентиры по ECM time:

  • До 150 мс — отлично, локальная карта или очень близкий сервер
  • 150–300 мс — нормально для рабочей системы
  • 300–500 мс — на грани, уже могут быть редкие фризы
  • Выше 500 мс — заморозки будут регулярными

Попросите тестовый доступ и смотрите ECM time через telnet команду s в течение суток в разное время — вечерний пик нагрузки всегда хуже чем утро.

Локальные карты vs реселлеры (hops 0 vs hops 2+)

Сервер с hops 0 — карта подключена физически. Скорость максимальная, зависимость от сторонних серверов отсутствует. Это то, что нужно.

Сервер с hops 2+ — реселлер реселлера. Цена ниже, но каждый дополнительный узел в цепочке — это дополнительный риск и задержка. При падении любого узла цепочки ваш доступ тоже падает, причём без вашего ведома.

Тестовый период и условия возврата

Нормальная практика — тестовый доступ на 24–48 часов. Этого достаточно чтобы проверить: все ли нужные CAID доступны, нет ли просадок в вечерние часы, какой реальный ECM time.

Никаких денег вперёд без теста. Если провайдер не даёт тест — следующий.

Поддержка нужных CAID для ваших пакетов

Перед покупкой выясните точные CAID ваших каналов. Для Viaccess — 0x0500, для Nagravision — 0x1801/0x1830, для Irdeto — 0x0600/0x0602, для Conax — 0x0B00. Сервер должен явно поддерживать ваши пакеты — не просто "поддерживаем всё", а конкретный CAID и Provider ID.

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

Ошибка `card not found` и пустой список Providers

Причина: Сервер подключён, авторизация прошла, но нужного CAID нет в доступных картах.

Проверка: Telnet → команда p → смотрим список Providers. Если список пустой или нет нужного CAID — сервер не отдаёт нужные карты.

Решение: Связаться с провайдером и уточнить поддерживаемые CAID, либо сменить сервер. Если список Providers есть, но канал всё равно не открывается — смотрим Provider ID.

Чёрный экран и freeze: проблемы с ECM-ответом

Самая частая проблема в настройке cardsharing cccam. Сервер технически отвечает, но ECM не успевают дешифроваться до того, как канал требует следующий ключ.

Проверка: Telnet → s → поле ECM time. Если скачет от 50 мс до 800 мс с интервалами — проблема маршрутизации между вами и сервером, а не сам сервер.

Решение: Попробовать сервер в другое время суток. Если проблема системная — менять сервер или выбирать с меньшим количеством хопов.

`connection refused` на порту 12000

Причина: Либо CCcam на сервере не запущен, либо порт закрыт фаерволом.

Проверка на сервере:

iptables -L -n | grep 12000
ss -tlnp | grep 12000

Решение: Если процесс запущен, но порт закрыт — добавить правило iptables:

iptables -A INPUT -p tcp --dport 12000 -j ACCEPT

Высокий пинг и таймауты ECM

ECM time 600–1200 мс при нормальном пинге до сервера — признак перегрузки сервера или проблем с самой картой/CAM-модулем на стороне провайдера.

Проверить базовый пинг до сервера:

ping -c 20 server.example
traceroute server.example

Если пинг 30 мс, а ECM time 600 мс — проблема на стороне сервера, не у вас. Если же пинг 300 мс — проблема в маршрутизации, и смена сервера на более близкий географически может помочь.

Анализ логов CCcam через telnet команду `g`

Команда g в telnet-сессии показывает общую информацию: версию CCcam, аптайм, количество ECM за сессию, количество активных клиентов и readers. Команда r показывает детали по каждому reader — статус подключения, CAID, аптайм соединения, среднее ECM time.

Если reader показывает статус OFFLINE или RECONNECTING в цикле — проблема с сетью до родительского сервера или неверные данные авторизации в C-линии.

Безопасность CCcam-сервера

Изменение портов по умолчанию (12000, 16001, 23)

Порт 12000 сканируют автоматически. Смена на нестандартный (например 15337) снизит количество мусорных подключений. В CCcam.cfg:

SERVER LISTEN PORT = 15337
WEBINFO LISTEN PORT = 18442
TELNETINFO LISTEN PORT = 24501

Не забудьте обновить C-линии всех клиентов после смены порта.

Сильные пароли в C-линиях и F-линиях

Минимум 12 символов, смесь букв, цифр, спецсимволов. Никаких user/12345, admin/admin, имён, дат рождения. Пароли в CCcam.cfg хранятся открытым текстом, поэтому доступ к файлу должен быть ограничен:

chmod 600 /etc/CCcam.cfg
chown root:root /etc/CCcam.cfg

Ограничение доступа через iptables по IP

Самая эффективная мера — whitelist по IP. Если клиенты подключаются с фиксированных адресов:

iptables -A INPUT -p tcp --dport 12000 -s 1.2.3.4 -j ACCEPT
iptables -A INPUT -p tcp --dport 12000 -s 5.6.7.8 -j ACCEPT
iptables -A INPUT -p tcp --dport 12000 -j DROP

Веб-интерфейс и telnet — только с локальной сети или через VPN:

iptables -A INPUT -p tcp --dport 16001 -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 16001 -j DROP
iptables -A INPUT -p tcp --dport 23 -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 23 -j DROP

Отключение ALLOW TELNETINFO в публичных конфигах

Большинство гайдов в сети оставляют ALLOW TELNETINFO = yes и не меняют пароль. Это открывает всю статистику сервера любому кто найдёт порт.

Если telnet нужен только для локальной диагностики:

ALLOW TELNETINFO = yes
TELNETINFO LISTEN PORT = 23
TELNETINFO LISTEN PORT PASSWD = V3ryStr0ngP@ss!

И закрыть порт 23 фаерволом для внешних адресов как показано выше.

Регулярные бэкапы CCcam.cfg

Конфиг с F-линиями клиентов — это ваша база пользователей. Бэкап перед каждым изменением:

cp /var/etc/CCcam.cfg /var/etc/CCcam.cfg.bak.$(date +%Y%m%d_%H%M%S)

Для автоматизации через cron (ежедневно в 3:00):

0 3 * * * cp /var/etc/CCcam.cfg /var/etc/CCcam.cfg.bak.$(date +\%Y\%m\%d)

В чём разница между CCcam и OScam?

CCcam — закрытый бинарник с простой настройкой и поддержкой только собственного протокола. Последняя официальная версия 2.3.x, дальнейшее развитие остановлено. OScam — open source, активно разрабатывается, поддерживает CCcam, NewCamd, CAMD35, MGcamd как на стороне клиента, так и сервера. Конфиг OScam разбит на несколько файлов: oscam.conf, oscam.server, oscam.user. OScam гибче и современнее; CCcam стабильнее работает на старых ресиверах Enigma2 с ограниченными ресурсами.

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

Основной порт обмена ECM/DCW — 12000/tcp. Веб-интерфейс — 16001/tcp. Telnet-управление — 23/tcp. Все порты меняются в CCcam.cfg: SERVER LISTEN PORT, WEBINFO LISTEN PORT, TELNETINFO LISTEN PORT.

Что означают hops в C-линии?

Hops — количество промежуточных серверов между вашим клиентом и физической смарт-картой. Hops 0 — карта подключена непосредственно к этому серверу (минимальная задержка, обычно 50–150 мс ECM time). Hops 1 — сервер сам клиент другого сервера с реальной картой. Hops 2+ — цепочка реселлеров. Каждый дополнительный хоп добавляет задержку и снижает надёжность.

Почему появляется чёрный экран при работающей C-линии?

Соединение установлено, но ECM не дешифруются вовремя. Главные причины: ECM time выше 500 мс (проверить через telnet команду s), сервер не поддерживает нужный Provider ID для вашего канала, перегрузка сервера в часы пик. Также бывает ситуация когда CAID совпадает, но конкретный Provider ID отсутствует — канал не откроется даже при нормальном ECM time.

Как проверить что CCcam-сервер работает?

Проверить процесс: ps aux | grep CCcam. Подключиться telnet на порт 23, ввести пароль и ввести команду s — покажет аптайм, ECM/sec, количество клиентов. Веб-интерфейс http://ip:16001 показывает Shares (доступные карты), Clients (подключённых пользователей), Providers (список CAID).

Можно ли запустить CCcam-сервер на VPS?

Технически CCcam работает на любом Linux VPS — минимальные требования 256 MB RAM, 1 vCPU, стабильный канал. Но реальная смарт-карта должна быть подключена физически через CAM-модуль. VPS без физического CAM подходит только как прокси или реселл-сервер, принимающий DCW от другого сервера с картой — не как основной сервер дешифровки.

Как обновить CCcam без потери конфигурации?

Сначала бэкап: cp /var/etc/CCcam.cfg /var/etc/CCcam.cfg.bak. Остановить процесс: killall -9 CCcam. Заменить бинарник: cp new-CCcam /usr/bin/CCcam && chmod 755 /usr/bin/CCcam. Запустить: CCcam -c /var/etc/CCcam.cfg или через softcam-скрипт. Проверить версию через telnet командой v. Конфиг при этом не трогается — все C-линии и F-линии сохраняются.

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

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