Кардшаринг сервер: настройка 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 в порядке частоты:
- Большое количество хопов (hop ≥ 3)
- Перегруженный или географически далёкий сервер-пир
- Нестабильный интернет-канал, высокий ping или потери пакетов
- Слабый процессор самого сервера при большом числе клиентов
Если у вас несколько 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 или внешние мониторы.