← Inicio
Candela Softcam v1.0 R42 Cóndor
Desarrollador
Javier Sayago
Javier Sayago
@Javilonas  ·  LonasDigital
Systems Engineering (C / C++) Python (Automation, Tools, Analysis) DVB / CAS / Smartcard Systems (ISO-7816) Network Protocol Engineering Distributed P2P Architectures Applied Cryptography & Security Design Reverse Engineering & Protocol Analysis Anti-DPI & Traffic Obfuscation Zero-Trust System Design Linux / Embedded Systems Enigma2 / DVBAPI Stack High-Performance Networking Toolchains & Cross-Compilation System Hardening

Autor y desarrollador principal de Candela, NCam, OpenLD y otros... Candela: Proyecto personal desarrollado desde cero con enfoque principal en seguridad real, invisibilidad ante análisis de trafico DPI y arquitectura Zero-Trust para entornos de red hostiles.

Candela nace de la necesidad de un softcam DVB moderno que trate la seguridad como un requisito de diseño y no como un addon. Cada decisión de protocolo parte de un modelo de amenaza concreto.

CIFRADO E2E
ChaCha20-Poly1305 + ECDH X25519 PFS en cada sesión
MULTI-PLATAFORMA
Linux x86_64 · ARMv7 · ARM64 · MIPSEL · PowerPC · Android · Windows
RED P2P PROPIA
Protocolo P2P propietario Zero-Trust sin servidor central
FORENSE AVANZADO
ETO, ERD, CFI, EFG, CWRID, EEA, ECLD y módulo ACF completo
Recursos
Documentación Wiki Técnica Protocolo, configuración, WebIF, API y seguridad. Historial Changelog completo Todas las versiones y cambios desde R1 hasta hoy. FAQ Preguntas frecuentes Configuración, compatibilidad, DVBAPI y protocolo. Soporte Soporte oficial Canal de soporte en LonasDigital para incidencias y preguntas. Contribuir Colaborar al proyecto Si el proyecto te es útil y quieres apoyar su continuidad.
Código fuente Privado por ahora El desarrollo es cerrado. Puede abrirse en el futuro.
Novedades de esta versión
R42 Cóndor actual
  • AES-128 IPTV: descifrado de streams IPTV y OTT con clave estática o URL HTTP/HTTPS por SRVID (fichero candela.aeskeys). Si no hay clave, el pipeline ECM normal resuelve el canal. Compatible con AES-CBC (CISSA), AES-ECB, AES-CTR y auto-detección.
  • MultiPID: descifrado paralelo usando todos los sistemas CA disponibles en la PMT. La primera CW válida gana. Útil en canales multisistema (cable, IPTV).
  • QuickECM: timeout ECM configurable por CAID para operadores con ciclo no estándar. Por defecto usa el timeout adaptativo existente.
  • CW even/odd y ECM PID en tiempo real: la pestaña Diagnóstico muestra para cada canal cifrado las CW key 00 (even) y key 01 (odd) en hex, el PID del flujo ECM extraído de la PMT y la edad de la CW en segundos con indicador de color. La actividad EMM se presenta agrupada por CAID con total, tasa por minuto y tiempo desde la última recepción.
  • Sparklines de latencia, hit rate y eventos: tres nuevas cards en Diagnóstico: mini-gráficas SVG de latencia por reader (NC/MG/HW), barras de hit rate de resolución ECM (caché/local/red/busy/deny) y feed de eventos del sistema (canal degradado, lector saturado, peer conectado/desconectado).
  • Enrutamiento ECM por latencia automática: los lectores NewCamd cliente, MGcamd cliente y tarjetas hardware se ordenan ahora por latencia media histórica (EMA). La fuente más rápida para cada CAID:PROVID recibe la ECM primero; las demás actúan como failover en orden de velocidad. Compatible con lectores de software, hardware serie y PC/SC. Los peers P2P ya tenían este mecanismo; ahora aplica de forma uniforme a todas las fuentes.
  • AMPE sin límite de peers: ecm_multipath ya acepta cualquier valor, no solo hasta 3. El nuevo valor 0 envía la ECM a todos los peers elegibles simultáneamente. El defecto sube a 3 en instalaciones nuevas.
  • Límite de propagación de tarjeta (card_hop_limit): nuevo parámetro global que descarta en recepción cualquier tarjeta cuyo hop supere el límite configurado. Evita que tarjetas compartidas lleguen a terceros no deseados. 0 = sin límite (comportamiento anterior).
  • Motor de prioridad candela.prio (ALLOW/SKIP): nuevo fichero de reglas de enrutamiento ECM por CAID:PROVID[:SRVID] con formato propio de Candela. ALLOW activa modo lista blanca (solo se descifran los canales autorizados); SKIP descarta la ECM incondicionalmente. Panel completo en el WebIF: tabla de reglas, fórmulario de alta, botónes de aplicar sugerencias y editor de texto en la pestaña Editor. API REST completa. Compatible con todos los targets.
  • Pestaña Diagnóstico ECM: vista unificada de todos los canales activos (FTA, TDT, cifrados); causa raíz automática por canal (caché, local, red, denegado, busy); carga de lectores con barra de uso; modo preview con sugerencias de reglas ALLOW/SKIP aplicables directamente a candela.prio.
  • Panel de seguridad - acciones masivas: botón para marcar todos los eventos como leídos y botón para bloquear todas las IPs con eventos pendientes de una sola acción.
  • LZ4 reemplaza LZO en assets WebIF: compresor de assets más rápido y sin coste en el binario. Tiempo de generación del header reducido notablemente.
  • zlib nivel 1 (ultra-rápido): el gzip de respuestas HTTP pasa de nivel 6 a nivel 1. La primera carga del WebIF es ~6x más rápida; el resultado queda cacheado en RAM.
  • Bug Windows - configuración al vuelo: al guardar ajustes desde el WebIF el JSON quedaba sin actualizar en Windows por modo texto en fopen. Corregido a modo binario.
  • Conflicto de checksum DVB-CSA1 resuelto: dos checksum en cascada corrompían la CW antes de envíarla al DVBAPI. Eliminado el pase redundante; la CW llega íntegra al STB.
  • Compatibilidad GCC 4.5 (ARM MCA, x86 legacy): pragma GCC diagnostic push/pop movido a nivel de fichero. GCC < 4.6 no permite el pragma dentro de funciónes.
  • build_libs.sh - detección de punteros LFS: build_zlib ya comprueba que el archivo sea un ar válido antes de saltarse la compilación. Evita fallos de enlazado en toolchains OpenWrt con LFS.
  • Correcciones de robustez: JSON injection corregido en el panel de eventos de seguridad (campos ip/url/usuario); protección de mutex en variables de sesión del WebIF; parser JSON de cuentas y readers NewCamd acotado al objeto actual (evita herencia de credenciales entre objetos); BCryptGenRandom como fallback PRNG en Windows; validación inet_pton al restaurar failban desde disco; verificación de certificado SSL en descarga de claves AES IPTV; comportamiento indefinido en filtro CIDR corregido en NewCamd/MGcamd; candela_test ahora se genera con sufijo de arquitectura en todos los targets del Makefile.
  • Proxy IPTV multicast/unicast (reemplazo de udpxy): módulo src/iptv/iptv_proxy.c/h integrado en el daemon. El STB apunta a http://candela:8088/udp/239.x.x.x:8208 en lugar de a udpxy externo. Soporta /udp/, /rtp/, relay HTTP directo y streams sin puerto explícito. Header RTP variable según RFC 3550. Buffer de recepción UDP de 4 MB para streams de alta densidad. Descifrado AES-128 transparente desde candela.aeskeys. Estadísticas en tiempo real en el WebIF.
  • Proxy HLS AES-128-CBC transparente: módulo src/iptv/hls_proxy.c/h. El player apunta a http://candela:8089/url_original; Candela descifra los segmentos en vuelo. IV correcto por segmento según RFC 8216 (implícito = media_seq + índice en big-endian). Padding PKCS#7 eliminado tras descifrado. HTTPS para URIs de clave. Decodificación de Transfer-Encoding chunked. Caché de claves por stream. Rotación de claves múltiples en un mismo m3u8. Detección por contenido (#EXTM3U) independiente de la extensión de la URL. Auto-guardado de claves descargadas en candela.aeskeys.
  • Correcciones de bugs DVBAPI y detector de CW: bug del bucle poll() con socket TCP resuelto (memset del array pfd en cada iteración); CW BISS ya no se rechazan por MITADES_IGUALES (CAID 0x26xx exento); contadores ECM OK/FAIL del lector MOSC ahora se actualizan correctamente; cooldown de 10 segundos tras resetear el diagnóstico ECM para evitar que el watchdog lo rellene inmediatamente.
  • Logging ECM/CW detallado: flag log_cw que emite una línea de diagnóstico estructurada por cada resolución ECM con CAID, PROVID, SRVID, CW en hex, hop, latencia y fuente. Split CW0/CW1 cuando log_ecm también está activo.