Configuración de Prueba de OScam&Guía de Configuración 2026
Configurar unentorno de prueba de oscares una de las tareas más prácticas que enfrentarás si estás probando infraestructura de cardsharing antes de ir en vivo. Ya sea que estés validando la estabilidad del servidor, probando conexiones de clientes o rotando credenciales a través de cuentas de acceso limitado, entender cómo funcionan las tarjetas de prueba a nivel de protocolo es importante. Esta guía recorre la sintaxis de configuración real, rutas de archivos y métodos de depuración que la mayoría de la documentación omite.
¿Qué es OScam Trial y Cómo Funciona?
Unaprueba de oscares un mecanismo de prueba integrado en OScam que permite acceso temporal a tarjetas con una fecha de vencimiento definida. Piénsalo como una credencial con límite de tiempo que te permite validar toda tu pila, desde la configuración del servidor hasta la lógica de conexión del cliente, sin comprometerte con el acceso permanente a la tarjeta. Las tarjetas de prueba siguen las mismas reglas de protocolo que las credenciales permanentes pero incluyen una marca de tiempo de vencimiento que el servidor aplica automáticamente.
Elsistema de prueba de oscarfunciona a nivel de protocolo. Cuando un cliente con una tarjeta de prueba se conecta, el servidor verifica la marca de tiempo de vencimiento contra la hora UNIX actual. Si la tarjeta ha vencido, el servidor rechaza la autenticación antes de que se procesen las solicitudes de ECM. Esto sucede durante el apretón de manos inicial, no durante la transmisión, por lo que no estás desperdiciando ancho de banda en credenciales muertas.
Prueba versus Acceso a Tarjeta Permanente
Las tarjetas de prueba y el acceso permanente difieren en su aplicación pero no en el método de conexión. Ambos usan el mismo puerto, versión de protocolo (generalmente CAS, Newcamd o mgcamd dependiendo de tu configuración) y flujo de autenticación. La diferencia es puramente basada en marca de tiempo: una tarjeta de prueba tiene un campo expiration_time establecido en los metadatos de la tarjeta, mientras que las tarjetas permanentes no tienen vencimiento o lo tienen establecido décadas en el futuro.
Algunas configuraciones implementan limitación de velocidad específicamente para tarjetas de prueba. Esto no es obligatorio en el protocolo; es una opción de quien ejecuta el servidor. Las tarjetas de prueba podrían alcanzar límites de solicitud de ECM antes que las permanentes, o podrían ser deprioritizadas durante cargas altas. Vale la pena probar esto en tu sandbox antes de asumir que las tarjetas de prueba y permanentes se comportan idénticamente.
Mecánica del Período de Prueba y Vencimiento
Los períodos de prueba se definen en marcas de tiempo UNIX, no en fechas legibles por humanos. Una prueba de 30 días del 1 de enero de 2026 00:00:00 UTC vencería en la marca de tiempo 1767225600 (31 de enero de 2026 00:00:00 UTC). El servidor almacena esto como un entero, lo compara con la hora de época actual en cada intento de conexión, y rechaza cualquier tarjeta donde current_time > expiration_timestamp.
La verificación de vencimiento ocurre continuamente, no solo en el inicio de sesión inicial. Si tienes una prueba de 30 días que vence un domingo, y un cliente permanece conectado a través del domingo medianoche UTC, el servidor descartará esa conexión en medio de una solicitud de ECM una vez que se cruce el umbral de marca de tiempo. El protocolo no envía una notificación de "tarjeta vencida"; simplemente rechaza el siguiente marco de autenticación.
Diferencias de Protocolo Entre Prueba y Acceso Completo
A nivel de protocolo, las tarjetas de prueba y las permanentes son idénticas hasta que alcanzas la verificación de vencimiento. Ambas envían el mismo apretón de manos de autenticación, ambas analizan ECM/EMM de forma idéntica, ambas soportan los mismos conjuntos de cifrado. El manejo del servidor difiere solo en la lógica condicional: si la verificación de vencimiento falla, descarta la conexión.
Algunos protocolos (ciertas implementaciones de Newcamd) incluyen información de vencimiento en la propia respuesta de autenticación. Esto permite que los clientes muestren "tu prueba vence en X días" sin necesidad de calcular marcas de tiempo. Otros protocolos no proporcionan conciencia de vencimiento del lado del cliente; el cliente solo sabe que la tarjeta está muerta cuando la autenticación falla.
Configuración de OScam para Soporte de Tarjeta de Prueba
Para configurarfuncionalidad de prueba de oscar, necesitas modificar dos archivos: oscam.conf (configuración global) y oscam.user (configuración por tarjeta). Las rutas varían según tu imagen. En OpenPli y la mayoría de compilaciones Enigma2, viven en /etc/oscam/. En algunas instalaciones mínimas, están en /config/oscam/. Verifica tu archivo de servicio systemd o script de inicio para confirmar.
Obtén las rutas reales ejecutando:systemctl status oscamoservice oscam status. Busca la línea ExecStart; mostrará el directorio de configuración. Si eso no funciona, grep para el proceso oscam:ps aux | grep oscamy busca una bandera -c especificando la ruta de configuración.
Parámetros de Prueba de oscam.conf
Tu archivo oscam.conf necesita habilitar el soporte de tarjeta de prueba explícitamente. Encuentra la sección [general] u [oscam] y agrega estas líneas:
[general]La parte crítica para pruebas: asegúrate de que la sección newcamd (o cualquier protocolo que uses) esté presente y el puerto esté escuchando. La aplicación de prueba ocurre a nivel de usuario, no en oscam.conf en sí. No hay una configuración "trial_mode = on"; la funcionalidad de prueba siempre está disponible.
Si estás probando localmente antes de implementar, mantén debug = 127 para que veas cada intento de autenticación en los logs. Esto es invaluable para verificar que el vencimiento de la prueba está siendo verificado realmente. Cámbialo a debug = 0 antes de la producción.
Configuración de Prueba del Archivo oscam.user
Aquí es donde ocurre laconfiguración de prueba de oscar. Abre /etc/oscam/oscam.user y agrega una entrada de tarjeta de prueba:
[testuser_trial]El campo clave esexpirydatetime. Esta es la marca de tiempo UNIX cuando la tarjeta deja de funcionar. Ten en cuenta que no hay un parámetro "trial_days=30"; tienes que calcular la marca de tiempo tú mismo o usar un script.
El resto de la configuración (pwd, group, au, caid, ident) funciona idénticamente para tarjetas de prueba y permanentes. No estás restringiendo canales ni ancho de banda aquí. La única diferencia es la marca de tiempo de vencimiento.
Configuración de Fechas de Vencimiento de Prueba
Convertir una fecha humana a marca de tiempo UNIX para tustarjetas de prueba de oscar:
En Linux, usa el comando date:
date -d "2026-02-28 00:00:00 UTC" +%sSalida: 1747881600
O si necesitas calcularlo programáticamente (30 días a partir de ahora):
python3 -c "import time; print(int(time.time()) + (30 * 86400))"La fórmula es simple: current_unix_time + (days * 86400) = expiration_timestamp. Hay 86400 segundos en un día. Eso es todo.
Cuando agregas expirydatetime a oscam.user, recarga OScam sin reiniciar:
systemctl reload oscamUna recarga re-lee el archivo de usuario sin descartar conexiones activas. Un reinicio mata todo. Usa recarga para actualizaciones de usuario de prueba.
Configuración de Puerto para Servidores de Prueba
Las conexiones de prueba usan los mismos puertos que las permanentes de forma predeterminada. Si estás ejecutando newcamd en el puerto 12000, tanto las tarjetas de prueba como las permanentes se conectan allí. No hay un puerto de prueba separado a menos que explícitamente crees uno.
Sin embargo, si deseas aislamiento para pruebas, ejecuta dos instancias de oscam: una para pruebas de prueba, una para producción. Cada una obtiene su propio rango de puertos y directorio de configuración. Ejemplo de servicio systemd para una instancia de prueba:
[Unit]Crea el directorio de configuración /etc/oscam-trial/ con archivos oscam.conf y oscam.user separados. La instancia de prueba escucha en un puerto newcamd diferente (p. ej., 12001) mientras que tu instancia de producción se queda en 12000. Esto mantiene el tráfico de prueba completamente aislado.
Configuración de Servidores de Prueba de Prueba
Antes de implementartarjetas de prueba de oscara producción, valida toda tu configuración en un entorno de prueba. Esto significa crear una instancia de OScam separada que imite tu configuración de producción pero se ejecute en puertos diferentes con registro aislado.
Creación de Entorno de Prueba Aislado
Comienza copiando tu oscam.conf de producción a un directorio de prueba:
sudo cp -r /etc/oscam /etc/oscam-trialEdita /etc/oscam-trial/oscam.conf y cambia los puertos:
[newcamd]Crea un archivo de usuario específico de prueba con solo tarjetas de prueba:
sudo nano /etc/oscam-trial/oscam.userAgrega entradas de prueba con fechas de vencimiento variadas para que puedas probar diferentes escenarios:
[trial_expired]Ahora inicia la instancia de prueba:
sudo /usr/bin/oscam -c /etc/oscam-trial/Verifica que se está ejecutando en el puerto correcto:
netstat -an | grep 12001Deberías ver:tcp 0 0 0.0.0.0:12001 0.0.0.0:* LISTEN
Prueba de Múltiples Tarjetas de Prueba
Crea al menos tres tarjetas de prueba para tuvalidación de prueba de oscar:
- Ya vencida— Marca de tiempo en el pasado (p. ej., 2025-12-31). Esto prueba que el bloqueo de vencimiento funciona.
- Vencimiento próximo— 7 días a partir de ahora. Esto prueba el caso límite donde una tarjeta vence durante pruebas activas.
- Duración larga— 90 días a partir de ahora. Esta es tu tarjeta de prueba principal para validación completa.
Conecta cada una a tu instancia de prueba y registra los resultados. La tarjeta vencida debería fallar inmediatamente durante la autenticación. La tarjeta con vencimiento próximo debería funcionar pero permitirte probar el comportamiento de reconexión a medida que se acerca el vencimiento. La tarjeta de larga duración es tu caballo de batalla para pruebas de ECM.
Monitoreo de Actividad de Tarjeta de Prueba
Observa los logs de la instancia de prueba en tiempo real:
tail -f /var/log/oscam-trial.logCuando tu cliente de prueba se conecta con una tarjeta de prueba, verás marcos de autenticación. Busca líneas como:
01/15 12:34:56 d34d8f91 [newcamd] login ok (trial_30days)Cuando la tarjeta de prueba ha vencido, verás:
01/15 12:35:00 d34d8f92 [newcamd] card expired (trial_expired)Analiza logs para actividad específica de prueba:
grep -i "trial\|expir" /var/log/oscam-trial.log | tail -20Esto filtra para mostrar solo líneas que mencionan pruebas o vencimiento, facilitando la detección de problemas en logs detallados.
Análisis de Log de Prueba y Depuración
Los logs de OScam son densos. Enfócate en estos patrones paravalidación de prueba de oscar:
Inicio de sesión de prueba exitoso:
login ok (username) - seguido de solicitudes de ECMTarjeta de prueba vencida:
card expired OR authentication failed - sin ECM siguienteDesajuste de protocolo:
protocol version mismatch OR unsupported protocolLimitación de velocidad en prueba:
ECM requests too frequent OR quota exceededHabilita niveles de depuración más altos temporalmente para ver más detalles. En oscam.conf, establece debug = 255 (máxima verbosidad), reconecta, luego bájalo inmediatamente a debug = 0 o 127. Debug = 255 llena los logs muy rápidamente.
Exporta tus logs de prueba después de cada sesión de prueba:
cp /var/log/oscam-trial.log ~/logs/trial-test-$(date +%Y%m%d-%H%M%S).logEste archivo te permite comparar el comportamiento entre múltiples pruebas e identificar patrones.
Solución de Problemas Comunes de OScam Trial
Los problemas de tarjeta de prueba caen en pocos patrones. Recórrelos sistemáticamente.
Tarjetas de Prueba Conectando pero No Decodificando
La tarjeta se autentica pero las solicitudes de ECM fallan o no devuelven CW. Primero, verifica que la tarjeta realmente no esté vencida:
python3<<'EOF'Si la tarjeta es válida, verifica tres cosas:
1. Los CAIDs e idents coinciden con lo que el cliente solicita.Si tu oscam.user dicecaid = 0100,0500pero intentas descifrar un canal 0604, falla. Verifica que la lista CAID de tu tarjeta cubra los canales que estás probando.
2. El servidor realmente tiene CWs para devolver.Una tarjeta de prueba podría autenticarse bien pero si ninguna fuente de CW (otro servidor, lector de tarjeta local, etc.) está configurada, las solicitudes de ECM vencen. Verifica oscam.servers para asegurar que tienes al menos un proveedor de CW.
3. La versión de protocolo del cliente coincide con la del servidor.Si estás usando un cliente antiguo (p. ej., Newcamd 5.0) pero el servidor requiere protocolo 5.1, la autenticación podría tener éxito con un apretón de manos heredado, pero el análisis de ECM falla. Las líneas de log deberían mostrar la versión de protocolo negociada.
Si las tres verificaciones pasan, aumenta el debug y ejecuta una única solicitud de ECM:
tail -f /var/log/oscam-trial.log&Fecha de Vencimiento No Aplicada
Tu tarjeta de prueba debería vencer en una fecha específica, pero sigue funcionando. La causa es casi siempre un problema de formato de marca de tiempo.
Verifica tu entrada oscam.user:
grep -A 5 "testuser_trial" /etc/oscam/oscam.userVerifica que expirydatetime esté establecido (no faltando o comentado). Luego verifica la marca de tiempo en sí:
date -d @1747881600# La salida debería mostrar la fecha y hora esperadasSi la fecha es incorrecta, usaste la marca de tiempo incorrecta. Recalcula:
date -d "2026-02-28 23:59:59 UTC" +%sSi la marca de tiempo es correcta pero la tarjeta aún no vence, la recarga podría no haber tenido efecto. Fuerza un reinicio completo:
systemctl stop oscamVerifica que la nueva configuración se cargó:
grep "expirydatetime" /etc/oscam/oscam.userUn caso límite más: zona horaria. Si estableces expirydatetime en 1747881600 pensando que es tu hora local, pero el servidor se ejecuta en UTC, el vencimiento está desfasado por horas. Siempre usa marcas de tiempo UTC explícitamente:
date -d "2026-02-28 00:00:00 UTC" +%sAcceso a Prueba Descartado en Medio de la Sesión
La tarjeta funciona durante 10 minutos, luego de repente se desconecta. Esto usualmente significa que el período de prueba terminó mientras el cliente estaba conectado.
Verifica el momento exacto de la desconexión en los logs:
grep "trial_30days\|connection closed\|client disconnect" /var/log/oscam.log | tail -20Anota la marca de tiempo. Si coincide con tu fecha de vencimiento de prueba, esa es tu respuesta. El servidor estaba verificando el vencimiento y descartó la conexión una vez que la marca de tiempo cruzó.
Si la desconexión ocurre en un momento aleatorio (no vencimiento), es un problema diferente:
- Tiempo de espera de red:Verifica oscam.conf para
socket_timeout. El predeterminado es 5 segundos. Si las solicitudes de ECM son lentas, aumenta a 15 o 30. - Limitación de velocidad:Las tarjetas de prueba podrían alcanzar límites de solicitud. Busca "quota exceeded" en los logs.
- Bloqueo del servidor:Verifica si oscam se bloqueó y reinició. Busca líneas de inicio en el log.
Tiempo de Espera de Puerto en Conexiones de Prueba
El cliente no puede alcanzar el servidor de prueba en absoluto. Primero prueba la conectividad del puerto:
nc -zv 192.168.1.100 12000Si se rechaza, verifica que oscam está escuchando:
netstat -an | grep 12000Si nada se muestra, oscam no se está ejecutando o no está escuchando en ese puerto. Verifica el número de puerto en oscam.conf y reinicia:
systemctl restart oscamSi el puerto está abierto pero la conexión vence (no se rechaza), es un problema de firewall. Verifica iptables:
sudo iptables -L -n | grep 12000Agrega una regla si es necesario:
sudo iptables -A INPUT -p tcp --dport 12000 -j ACCEPTSi estás probando remotamente y aún obtienes tiempos de espera, verifica tu lista permitida oscam.conf:
[newcamd]La IP de tu cliente debe caer dentro de uno de los rangos permitidos. Si es una conexión WAN, agrégala explícitamente o usa una VPN.
Mezcla de Tarjetas de Prueba y Permanentes en el Mismo Servidor
Ejecutar tanto tarjetas de prueba como permanentes en una sola instancia de OScam está bien, pero vigila dos problemas:
Problema 1: Diferencias de versión de protocolo.Si tus tarjetas permanentes son todas protocolo 5.1 pero agregas una tarjeta de prueba de una fuente heredada (protocolo 5.0), el cliente podría necesitar cambiar versiones en medio de la sesión. Esto causa breves desconexiones. Prueba la compatibilidad de protocolo de tus tarjetas de prueba antes de implementar.
Problema 2: Conflictos de prioridad de CW.Si tienes múltiples servidores configurados en oscam.servers, y algunos sirven tarjetas de prueba mientras que otros sirven tarjetas permanentes, las solicitudes podrían enrutarse a la fuente incorrecta. Una tarjeta de prueba que solicita un CW de un servidor que solo maneja tarjetas permanentes vencerá.
Solución: Usa definiciones de grupo separadas en oscam.user:
[trial_card]Luego en oscam.servers, define qué fuentes sirven qué grupos. Esto asegura que las tarjetas de prueba no obstruyan fuentes solo para permanentes.
Gestión de Duración y Renovación de Tarjetas de Prueba
La gestión deduraciones de tarjeta de prueba de oscara escala requiere automatización. Las actualizaciones manuales funcionan para 2-3 tarjetas pero se rompen rápidamente.
Cálculo de Vencimiento de Prueba
La fórmula es siempre: current_unix_timestamp + (days * 86400) = expiration_timestamp
Una línea de Python de una sola línea para cualquier duración de prueba:
python3 -c "import time; days=30; print(int(time.time()) + (days * 86400))"O como una función para un script:
#!/bin/bashUso:
./calc_expiry.sh 30Usa esto en tus actualizaciones oscam.user:
expirydatetime = $(./calc_expiry.sh 30)Extensión de Períodos de Prueba Programáticamente
Script para renovar la fecha de vencimiento de una tarjeta de prueba agregando días a la marca de tiempo actual:
#!/bin/bashEjecútalo:
./renew_trial.sh trial_30days 30Monitoreo de Tarjetas que Vencen
Crea un script de monitoreo que te alerte antes de que venzcan las tarjetas de prueba:
#!/bin/bash&&[ $time_until -gt 0 ]; thenEjecútalo como un trabajo cron diario:
0 9 * * * /root/check_expiring_trials.sh >> /var/log/trial_check.log 2>&1Esto se ejecuta cada mañana a las 9 AM y registra cualquier tarjeta de prueba que vence o está vencida.
Scripts de Rotación de Prueba Automatizada
Para entornos de producción con muchas tarjetas de prueba, automatiza la rotación. Este script cicla a través de una lista de usuarios de prueba y extiende sus fechas de vencimiento:
#!/bin/bashSchedule it monthly:
0 0 1 * * /root/auto_rotate_trials.sh >> /var/log/trial_rotation.log 2>&1First of every month, all trial cards get a fresh 30-day window. This keeps your testing sandbox evergreen.
For per-card rotation (different expiry dates for different cards), use a CSV input:
cat > /root/trial_schedule.csv << 'EOF'
username,days_until_expiry
trial_qa_1,30
trial_qa_2,14
trial_staging,90
EOF
while IFS=',' read username days; do new_expiry=$(($(date +%s) + ($days * 86400))) sed -i "/\[$username\]/,/^$/{s/expirydatetime = .*/expirydatetime = $new_expiry/}" "$oscam_user"
done < /root/trial_schedule.csv
systemctl reload oscamThis lets you stagger expirations so you're not managing all trials at once.
FAQ
Can I run a trial server on the same machine as my permanent OScam instance?
Yes, but you need to isolate them properly. Run two separate oscam processes, each with its own config directory (/etc/oscam/ and /etc/oscam-trial/), listening on different ports (12000 and 12001). Create separate systemd services so they restart independently. If trial testing crashes, it won't take down production. Isolation also prevents port conflicts and keeps logs separate. The trade-off is slightly higher CPU and memory usage—negligible on modern hardware. Ensure file permissions are set correctly: chown -R oscam:oscam /etc/oscam-trial/ so the trial process can read its config without privilege issues.
What's the difference between oscam.conf trial settings and oscam.user trial parameters?
oscam.conf contains global protocol settings and port configuration. oscam.user contains per-card credentials and expiration dates. There's no "trial mode" flag in oscam.conf—trial functionality is always enabled. All the trial-specific behavior lives in oscam.user's expirydatetime field. If a card has an expirydatetime set, it's a trial card. If it's missing or set to a far-future date, it's permanent access. The precedence rule is simple: oscam.conf defines how connections work (ports, protocols, debug levels), oscam.user defines who can connect and for how long. You can't enable or disable trials globally in oscam.conf—you control trials purely by setting expiration timestamps per user.
How do I enforce trial expiration without manually kicking users?
OScam checks expiration automatically on every authentication attempt. When a client connects, the server compares the card's expirydatetime against the current UNIX timestamp. If current_time > expirydatetime, the server rejects authentication before any ECM is processed. This happens without manual intervention. The check runs continuously, not just at initial login. If a card expires while a client is actively decoding, the next ECM request after the expiration timestamp triggers the rejection and the connection drops. You don't need to do anything—the protocol enforces it. To verify expiration checking is working, watch the logs: grep -i "expir" /var/log/oscam.log and trigger authentication after the expiration date passes. You should see "card expired" or "authentication failed" messages.
Why do trial cards sometimes skip ECM requests or decode intermittently?
Three common causes: (1) Rate limiting—servers often restrict ECM request frequency for trial cards more aggressively than permanent ones. If you're sending requests faster than the server allows, some get dropped. Check oscam.conf for request rate limits and increase them for testing. (2) Load balancing—if you have multiple CW sources, some might be configured to prioritize permanent cards. ECM requests from trial cards might queue longer or timeout. (3) Protocol prioritization—certain protocol implementations deprioritize trial frames. This isn't a bug; it's intentional. Trial cards might not have the same bandwidth guarantees as permanent ones. The fix is usually to reduce load during testing, use a dedicated trial-only CW source, or adjust rate limiting in oscam.conf: increase socket_timeout from 5 to 15+ seconds to give requests more time to complete.
What's the proper way to migrate trial users to permanent access without disconnecting them?
Edit oscam.user to change the trial user's expirydatetime to a far-future value (e.g., 2050). Then reload (not restart) the config: systemctl reload oscam. The reload re-reads oscam.user while keeping active connections alive. The upgraded user won't see any disconnection. You can also create a new permanent user and have the client switch credentials at the next scheduled reconnect, but reload-based upgrade is cleaner. Test this on a dummy trial card first to ensure you're not disconnecting real users. If something goes wrong, reload again with the old settings and the trial card reverts. Do NOT use systemctl restart oscam during this—that kills all active connections and forces clients to reconnect from scratch, defeating the purpose of seamless migration. After reload, wait a few seconds and check logs to confirm the user's status updated: grep "username" /var/log/oscam.log | tail -5.
Can I monitor which trial cards are actually being used vs abandoned?
Yes. Parse oscam.log for the last authentication timestamp of each trial user. A card that hasn't logged in for 30 days is abandoned. Example grep:
grep "trial_" /var/log/oscam.log | grep "login ok" | tail -1
# Output: 01/20 14:32:10 d34d8f91 [newcamd] login ok (trial_30days)That timestamp shows the most recent successful login for trial_30days. If it's old, the card is unused. Build a script to extract and compare:
#!/bin/bash
for card in $(grep "^\[trial_" /etc/oscam/oscam.user | sed 's/\[//;s/\]//' ); do last_login=$(grep "$card" /var/log/oscam.log | grep "login ok" | tail -1 | awk '{print $1, $2}') if [ -z "$last_login" ]; then echo "$card: NEVER USED" else echo "$card: Last login at $last_login" fi
doneIf you're using oscam's built-in stats database, query it directly (oscam saves stats to /var/log/ or a database depending on config). Check activity in the monitor interface (port 988 by default, accessible via telnet) for real-time connection counts. Cards with zero connection history are abandoned.