Кардшаринг сервер: настройка CCcam и OScam с нуля

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

Что такое кардшаринг сервер и как он работает

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

Кардшаринг сервер стоит посередине: он принимает ECM от нескольких клиентов, отправляет его на физическую карту в своём ридере, получает CW и раздаёт обратно. Клиент даже не знает, что карта стоит не у него.

Принцип работы: ECM, CW и DCW

ECM — это зашифрованный запрос, специфичный для провайдера. CW меняется каждые ~10 секунд (crypto period). DCW (Decrypted Control Word) — уже расшифрованное контрольное слово, которое ресивер использует напрямую для декодирования потока.

Задержка между запросом и получением CW — это и есть ECM time. Если он выше 400–500 мс, картинка начинает фризить при каждой смене CW. Выше 700 мс — стабильный просмотр уже невозможен.

Роль сервера и клиента в схеме

Сервер — это машина с физическим смарт-ридером и установленным ПО (CCcam или OScam). Клиент — ресивер без карты, который подключается к серверу по сети и отправляет ему ECM-запросы. Сервер отвечает CW, клиент декодирует сигнал.

Один сервер теоретически обслуживает несколько клиентов одновременно — но с ограничениями, потому что один ECM-запрос в единицу времени карта обрабатывает только один.

CCcam против OScam: ключевые отличия

CCcam — закрытый бинарник, работает на порту 12000/TCP по умолчанию. Настройка через один файл CCcam.cfg. Простой, предсказуемый, но негибкий. Отладка через telnet на порт 16001.

OScam — открытый исходный код, собирается под ARM, x86, MIPS. Поддерживает несколько протоколов одновременно: newcamd (порт 15000+), cccam, camd35 (UDP, порт 34000), gbox. Веб-интерфейс на порту 8888 со статусом каждого ридера в реальном времени. Конфиги разделены по функциям: oscam.conf, oscam.server, oscam.user, oscam.srvid. Это сложнее при первом знакомстве, но даёт полный контроль.

Я бы рекомендовал OScam для любого серьёзного кардшаринг сервера — хотя бы ради нормальных логов и веб-интерфейса диагностики.

Установка и базовая настройка OScam сервера

OScam не входит в стандартные репозитории большинства дистрибутивов. Либо собираете из исходников, либо берёте готовый билд под свою платформу.

Сборка OScam из исходников и установка готовых билдов

Для сборки нужны cmake, gcc и libssl-dev. На Debian/Ubuntu:

apt install build-essential cmake libssl-dev libpcsclite-dev
svn checkout https://svn.streamboard.tv/oscam/trunk oscam-src
cd oscam-src
cmake -DWEBIF=1 -DREADER_SMARTREADER=1 .
make -j$(nproc)
cp oscam /usr/local/bin/

Для ARM-ресиверов (Enigma2, VU+, Dreambox) удобнее брать готовые ipk или tar.gz билды — сборка под нужный тулчейн требует отдельной среды. На OpenPLi и OpenATV есть плагин через Feeds прямо из меню.

Структура каталога /etc/tuxbox/config или /var/etc

Пути конфигов зависят от прошивки и платформы. На Enigma2-ресиверах это обычно /etc/tuxbox/config/. На чистом Linux-сервере — /usr/local/etc/ или /etc/oscam/. На роутерах с OpenWRT и Entware чаще встречается /opt/etc/oscam/.

При запуске OScam ищет конфиги там, где указано флагом -c. Явно задать путь можно так:

oscam -b -r 2 -c /etc/tuxbox/config/

Флаг -b — фоновый режим, -r 2 — уровень логирования (0–4, где 4 — максимум).

Файл oscam.conf: секции [global], [cs357x], [cccam], [webif]

Минимальный рабочий oscam.conf:

[global]
logfile      = /var/log/oscam.log
maxlogsize   = 1024
preferlocalcards = 1

[webif]
httpport     = 8888
httpuser     = admin
httppwd      = yourpassword
httpallowed  = 127.0.0.1,192.168.1.0/24

[cccam]
port         = 12000

[newcamd]
port         = 15000@0500:032830

Секция [webif] — это ваш главный инструмент мониторинга. Без неё диагностировать проблемы в 2 раза сложнее. httpallowed ограничивает доступ к веб-интерфейсу по IP — не пренебрегайте этим.

В секции [newcamd] строка вида 15000@0500:032830 означает: порт 15000, CAID 0500, провайдер 032830. Если провайдеров несколько — несколько строк порт.

Файл oscam.server: подключение картоприёмника

Здесь описывается физический ридер — внутренний слот ресивера или внешний USB-ридер:

[reader]
label        = local_card
protocol     = internal
device        = /dev/sci0
caid         = 0500
detect       = CD
mhz          = 600
cardmhz      = 600
group        = 1
emmcache     = 1

protocol = internal — для встроенного слота Enigma2. Для USB-ридеров типа Phoenix — protocol = mouse, device указывает на /dev/ttyUSB0. Для SmartReader+ — protocol = smartreader.

mhz и cardmhz — тактовая частота ридера и карты в сотых долях МГц. 600 = 6.00 МГц — стандарт для большинства карт. Если карта не инициализируется, попробуйте 357 (3.57 МГц) или 368.

Если у вас несколько ридеров с разными CAID и провайдерами, приоритет задаётся через caid и provid. OScam выбирает ридер по совпадению. При конфликте — используйте параметр priority в каждом [reader].

Файл oscam.user: создание учётных записей клиентов

[account]
user         = client1
pwd          = secretpass
group        = 1
au           = 1
uniq         = 1

au = 1 включает автообновление EMM для этого пользователя. uniq = 1 — только одно подключение с этим логином одновременно. Можно также прописать allowedip = 192.168.1.50 для ограничения по IP — очень полезно для безопасности.

Настройка CCcam сервера: CCcam.cfg

CCcam живёт в одном файле. На большинстве Enigma2-ресиверов это /var/etc/CCcam.cfg. Иногда встречается /etc/CCcam.cfg — зависит от прошивки.

Строки F: для клиентов и C: для пиров

Строка F: — это учётная запись клиента, которому сервер отдаёт CW:

F: username password 1 0 { 0:0:2 }

Формат: логин, пароль, хопы (1), share distance (0), затем ограничения по CAID в фигурных скобках. 0:0:2 — разрешить все CAID с расстоянием до 2.

Строка C: — подключение к вышестоящему серверу (пиру):

C: hostname.example.com 12000 myuser mypass no

Последний параметр — использование AES-шифрования: no или yes. Большинство серверов работает без него.

Параметры hops, distance и share limits

Hops — количество "прыжков" от оригинальной карты до вашего клиента. Хоп 1 = карта напрямую у вашего сервера. Хоп 2 = через один промежуточный сервер. Каждый дополнительный хоп добавляет задержку.

Hops > 2 — это уже проблема. ECM time растёт, стабильность падает. Практика показывает: при hop=3 и пинге 50+ мс фризы становятся регулярными. Ограничить максимальные хопы в CCcam.cfg можно параметром SHARE LIMIT IN HOPS: в заголовке файла.

distance в строке F: — насколько далеко от вашей карты ваш клиент может получить шару. 0 = только ваша карта. 1 = ваша карта и карты ваших прямых пиров.

Файлы CCcam.providers и приоритеты

CCcam.providers — опциональный файл с описанием CAID и провайдеров. Позволяет задавать человекочитаемые имена и фильтровать пакеты. Лежит рядом с CCcam.cfg. Синтаксис: CAID:provid:name, например 0500:032830:Cyfra+.

Если несколько C: линий ведут на серверы с одним CAID, CCcam выбирает по порядку в файле и минимальному времени ответа. Управлять этим явно в CCcam нельзя — здесь OScam выигрывает за счёт параметра weight в oscam.server.

Запуск демона и логирование

Запуск CCcam на Enigma2 обычно через init.d: /etc/init.d/softcam start. Перезапуск демона напрямую: killall -9 CCcam && CCcam &.

Логи доступны через telnet на порт 16001:

telnet localhost 16001

Команды: l — показать лог, r — reader info, s — server stats. Это единственный способ реальной диагностики в CCcam — никакого веб-интерфейса нет, что и является главным его недостатком.

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

Даже идеально настроенный кардшаринг сервер не заработает для внешних клиентов, если сеть не настроена. Это чаще всего и есть причина "не подключается".

Стандартные порты: 12000 (CCcam), 8888 (webif), newcamd

Стандартные порты по протоколам:

  • CCcam протокол: 12000/TCP
  • OScam веб-интерфейс: 8888/TCP
  • Newcamd: 15000–15099/TCP (обычно 15000 или 15001)
  • Camd35: 34000/UDP
  • CCcam telnet: 16001/TCP

Все эти порты нужно открыть как на firewall самого сервера, так и пробросить на роутере. Не забудьте: ufw или iptables на Linux может тихо блокировать входящие соединения даже при правильном NAT на роутере.

Проброс портов на роутере (NAT/port forwarding)

Схема стандартная: в настройках роутера добавляете правило NAT — внешний порт 12000 TCP → внутренний IP сервера (например, 192.168.1.100), порт 12000. Повторяете для каждого используемого порта.

Важный момент: IP сервера внутри сети должен быть статическим. Либо задайте его вручную в настройках сетевого интерфейса, либо назначьте статическую аренду в DHCP роутера по MAC-адресу.

Отдельная история — CGNAT. Часть провайдеров выдаёт "серый" IP за несколькими уровнями NAT, и проброс портов просто не работает физически. Проверить просто: если внешний IP в настройках роутера совпадает с тем, что показывает, например, curl ifconfig.me на сервере — вы за CGNAT. Выход: купить белый IP у провайдера, поднять VPN-туннель (WireGuard или OpenVPN) до VPS с белым IP, или использовать обратный туннель.

Статический IP, DDNS и динамический адрес

Если провайдер выдаёт динамический белый IP, нужен DDNS. Смысл прост: DynDNS-клиент на роутере или сервере раз в несколько минут обновляет запись вида myserver.duckdns.org, и клиенты подключаются по имени, а не по IP.

Хорошо работают DuckDNS и No-IP. DuckDNS бесплатен и обновляется curl-запросом, что легко автоматизировать через cron. Клиентам в CCcam.cfg или oscam.user прописываете именно DNS-имя, а не IP.

Защита: смена дефолтных портов и паролей, ограничение по IP

Дефолтный порт 12000 сканируется автоматически. Перевести CCcam на порт 32541 или любой другой нестандартный — это не панацея, но снижает шум от ботов. В OScam httpport тоже лучше не оставлять 8888 открытым в мир.

В oscam.user параметр allowedip позволяет жёстко привязать учётку к конкретному IP или подсети. Если клиент с фиксированным IP — обязательно используйте это. Пароли длиннее 12 символов, без словарных слов. Дефолтные admin/admin в webif — это открытая дверь.

Ещё один практичный приём: в iptables разрешить порты кардшаринга только с конкретных диапазонов IP, если клиентская база известна и ограничена:

iptables -A INPUT -p tcp --dport 12000 -s 1.2.3.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 12000 -j DROP

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

Большинство проблем с кардшаринг сервером решаются через веб-интерфейс OScam и чтение логов. CCcam в этом плане сложнее — придётся работать с telnet и ручным разбором вывода.

Статус reader: CARDOK, NEEDINIT, ERROR

В веб-интерфейсе OScam на вкладке Readers смотрите статус каждого ридера:

  • CARDOK — карта читается, всё в порядке
  • NEEDINIT — карта найдена, но не инициализирована. Проверьте mhz и cardmhz, попробуйте 357 или 600. Также может быть плохой контакт или питание ридера
  • ERROR — ридер не отвечает. Проверьте device path (/dev/sci0, /dev/ttyUSB0), права на файл устройства, физическое подключение
  • CARDNOTOK — карта вставлена, но не авторизована или истёк срок подписки

После обновления прошивки ресивера иногда меняется путь к устройству — /dev/sci0 превращается в /dev/sci1 или вовсе исчезает. Проверяйте через ls /dev/sci* и ls /dev/tty*.

Ошибка 'card not found' и проблемы инициализации карты

Если в логах вижу "card not found" при физически вставленной карте — первым делом смотрю на detect = CD в oscam.server. Параметр detect указывает, какой сигнал означает "карта вставлена". На некоторых ридерах нужно detect = 0 вместо CD.

Ещё частая причина после обновлений — несовместимость параметра smargoprot. Если ридер типа smartreader раньше работал, а после апгрейда прошивки перестал — попробуйте пересобрать OScam с теми же флагами компиляции.

Freeze картинки и медленный ECM time

Freeze при рабочем кардшаринге — почти всегда ECM time. Норма: ниже 400 мс. При 500–700 мс начинаются кратковременные фризы при смене CW. Выше 700 мс — постоянные задержки.

Причины высокого ECM time в порядке частоты:

  1. Большое количество хопов (hop ≥ 3)
  2. Перегруженный или географически далёкий сервер-пир
  3. Нестабильный интернет-канал, высокий ping или потери пакетов
  4. Слабый процессор самого сервера при большом числе клиентов

Если у вас несколько C: линий на разные серверы и ECM time скачет — OScam умеет делать load balancing. В oscam.conf в секции [global] параметр lb_mode = 1 включает автовыбор лучшего ридера по статистике ECM time. Это работает заметно лучше, чем фиксированный порядок в CCcam.cfg.

Проблемы соединения: connection refused, no card

"Connection refused" — порт закрыт или демон не запущен. Проверяем: netstat -tlnp | grep 12000. Если пусто — демон не слушает порт. Либо не запущен, либо указан другой порт в конфиге.

"No card" при успешном подключении — клиент авторизовался, но ридер не отвечает. Смотрим статус ридера в webif.

Отдельная ситуация: провайдер интернета блокирует нестандартные порты. Видел такое у ряда мобильных операторов — весь трафик идёт, а порт 12000 молча дропается на уровне оператора. Диагностика: проверьте доступность порта снаружи через онлайн-инструменты типа portchecker.co с IP клиента. Решение — сменить порт или использовать туннель.

Чтение логов OScam и CCcam

Лог OScam по умолчанию пишется туда, куда указано logfile в oscam.conf. Смотреть в реальном времени:

tail -f /var/log/oscam.log | grep -E "ECM|ERROR|CARDOK"

Уровень логирования задаётся в [global] параметром loglevel = 4 (максимум — 4, включает ECM debug). На продакшн-сервере лучше держать 2–3, иначе лог растёт быстро и читать его сложно.

Параметр cw_check_caid в oscam.conf позволяет включить проверку CW-цикла — OScam откажется от подозрительных CW, повторяющихся или нулевых. Это защита от некачественных пиров, которые отдают мусор вместо правильных контрольных слов.

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

Если поднять собственный сервер с физической картой не вариант, берут "шару" у стороннего провайдера. Рынок непрозрачный, половина предложений — мусор. Выбирать надо по конкретным параметрам, а не по красивому сайту.

И да: легально использовать кардшаринг сервер третьих лиц можно только если у вас есть собственная официальная подписка на этот пакет. Всё остальное — серая зона с юридическими рисками, которые варьируются по странам.

Стабильность аптайма и заявленный ECM time

Хороший провайдер показывает аптайм 98–99% в месяц и средний ECM time ниже 300 мс. Не на главной странице в виде рекламного слогана, а в статистике вашего конкретного соединения через webif OScam.

Тестовый доступ на 24–48 часов — обязательное условие. Без теста в реальных условиях вашей сети, с вашим ресивером, никакие обещания ничего не стоят. Если тест не дают — проходите мимо.

Поддержка нужных пакетов и локального картоприёмника

Уточняйте не только CAID, но и конкретные провайдеры и транспондеры. Один и тот же CAID может покрывать разные пакеты на разных спутниках. Проверяйте, что нужные вам каналы действительно расшифровываются, а не просто числятся в списке.

Если у вас уже есть локальный ридер с картой, нормальный провайдер позволяет настроить fallback: при недоступности их сервера OScam переключится на вашу локальную карту. Для этого нужна поддержка со стороны провайдера и правильные приоритеты в oscam.server.

Прозрачность условий и тестовый период

Смотрите на условия в случае даунтайма. Нормальная практика — перерасчёт или продление за длительные перерывы. Поддержка должна отвечать в разумное время, а не только до оплаты.

Форматы доступа бывают разные: CCcam-аккаунт (просто C: line), newcamd (порт + ключ), иногда Mgcamd-совместимый формат. Убедитесь, что ваш ресивер и ПО поддерживают нужный протокол.

Юридические риски и наличие собственной подписки

Правовая ситуация по кардшарингу неоднозначна и зависит от законодательства конкретной страны. В ряде европейских стран суды уже выносили решения против операторов нелегального кардшаринга. Использование карты другого абонента без его ведома — это уже не серая зона.

Если есть собственная легальная подписка и вы делитесь ею в рамках домашней сети — это принципиально другая ситуация. Всё, что выходит за рамки одного домохозяйства, требует осознанной оценки рисков.

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

По умолчанию CCcam слушает порт 12000/TCP. Это широко известный порт, который активно сканируется. Рекомендую сменить его на что-то нестандартное — например, 32541 или 28001 — это снизит нежелательный трафик. Порт меняется в CCcam.cfg строкой SERVER LISTEN PORT: 32541.

Чем OScam лучше CCcam для настройки сервера?

OScam — открытый исходный код, собирается под любую платформу, поддерживает одновременно несколько протоколов: newcamd, cccam, camd35, gbox. Веб-интерфейс на порту 8888 показывает статус каждого ридера, ECM time, статистику клиентов. Логи детальные и читаемые. CCcam проще в начальной настройке, но отлаживать его — боль: только telnet и ограниченный вывод. Для серьёзного сервера OScam однозначно лучше.

Что означает статус reader NEEDINIT в OScam?

Карта обнаружена в ридере, но не прошла инициализацию. Первым делом проверьте параметры mhz и cardmhz в oscam.server — попробуйте значения 357, 368 или 600. Если параметры верные — проверьте физический контакт карты, кабель ридера и питание. После обновления прошивки ресивера иногда меняется путь к устройству — проверьте device в конфиге.

Почему картинка фризит при рабочем кардшаринге?

Почти всегда это высокий ECM time — выше 400–500 мс. Причины: слишком много хопов (hop ≥ 3), перегруженный или далёкий сервер-пир, нестабильный интернет с потерями пакетов. Проверьте ECM time в webif OScam. Если несколько C: линий — включите load balancing (lb_mode = 1 в oscam.conf), OScam будет автоматически выбирать лучший ридер по статистике.

Где лежат конфиг-файлы OScam на ресивере?

Зависит от прошивки. На Enigma2 (OpenPLi, OpenATV, VTi) — чаще всего /etc/tuxbox/config/. На чистом Linux-сервере — /usr/local/etc/ или /etc/oscam/. На OpenWRT с Entware — /opt/etc/oscam/. Основные файлы: oscam.conf, oscam.server, oscam.user. Путь можно задать явно при запуске: oscam -b -c /путь/к/конфигам/.

Какой нормальный ECM time для стабильного просмотра?

Норма — ниже 400 мс. При 400–700 мс начинаются кратковременные фризы при каждой смене контрольного слова (примерно раз в 10 секунд). Выше 700 мс — стабильный просмотр невозможен, постоянные зависания. Идеальный показатель — 100–200 мс, что достигается при прямом подключении с минимальным числом хопов и быстрым каналом.

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

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