--------------------------------------------------------------------------


Hola en primer lugar voy a poner unos conceptos de nagra2 para que la gente eche un vistazo. Y sepa de que estamos hablando.

SIEMPRE RECORDANDOOS QUE EL PIRATEO ES ILEGAL Y ESTO ES SIMPLE INVESTIGACION E INFORMACION Y TODA ELLA ESTA EN LA RED

Material conseguido de la pagina del BURRO. Muchas gracias.

NAGRA2 CONCEPTOS BASICOS

A.- Conceptos nagra :

0.- Tipo de tarjetas
Existen cinco tipos de tarjetas, la Rom3, Rom10 y Rom11 para nagra -1 y Rom101 y Rom110 para nagra -2 . Cada tipo de tarjeta tiene una revisión (versión de la eeprom) diferente. La Rom3 se quedó en su última revisión como rev340, la Rom10 en revA3E y la Rom11 en revB09.
1.- CAM -> Número de serie de la tarjeta (único)
Código:
04 60 XXXX XXXX XX ROM 3.
04 61 XXXX XXXX XX Mayoritariamente ROM 10 y algunas ROM 3.
04 62 XXXX XXXX XX ROM 11. y ROM 110.
04 64 XXXX XXXX XX ROM 101
04 65 XXXX XXXX XX ROM 110
2.- IRD -> Número de serie o numeración del decodificador
3.- BoxKey -> Clave común entre la tarjeta y que también está en el deco. Si no coinciden las dos, no funciona.
4.- ZIP -> Código postal al que pertenece el abonado.
5.- BUG CATCHERS -> Los bugcatchers son parcheos en eeprom de fallos en rom. En nagra la eeprom se divide en dos zonas una de datos y otra de código y en esta última el proveedor puede grabar código ejecutable por la card, en principio servía para corregir bugs, pero como podéis comprender se le han dado otros usos, son los famosos bugcatchers. El microprocesador de la visa solo busca bugcatcher cuando encuentra en rom una interrupción de sofware.
6.- NUMBUGS -> El número de Bugcatchers que la tarjeta es capaz de soportar. A medida que el proveedor añade subrutinas que corrijan posibles bugs, este número se va incrementando en la siguiente revisión. Al poner este valor a 00, la visa quedaria abierta puesto que quedarian deshabilitados los saltos a los bugcatchers, quedando la visa totalmente desprotegida.
7.- Backdoor **** -> Se puede acceder a la tarjeta no solo con las ins encriptadas sino de otra forma en la que no hace falta encriptación, son las llamadas instrucciones backdoor que permiten leer y escribir en la eeprom (teóricamente en cualquier zona de la tarjeta) pero para ello es preciso conocer la clave de paso, son las llamadas claves backdoor. Debido a los sucesivos bugs encontrados en las diferentes versiones de las tarjetas nagra 1 se pudo averiguar el valor de esas claves lo que abrió la posibilidad de leerlas y escribir en ellas.
- Las tarjetas de nagra tienen varios comandos de backdoor incluidos que permiten la carga de EEPROM y otras funciones de utilidad. Estas backdoors (puertas traseras) necesitan dos passwords de 16 bytes antes de poder trabajar con ellas. La primera clave se almacena en ROM y es la misma para todas las tarjetas de nagra visión con el mismo número de versión. La segunda clave se almacena en la EEPROM y es, probablemente, única para cada tarjeta.
8.- Comandos Backdoor -> Una vez que se conocen las claves de backdoor, existen varias utilidades que suponen un método sencillo de volcar la tarjeta, introducirles código 3M y demás.
Ejemplos:
- Comando $0E: Borra la EEPROM
- Comando $20: Login (Usado para decirle a la CAM cuales son las passwords)
- Comando $B0: Volcar memoria
- Comando $D6: Ejecuta código/escribe en la EEPROM
9.- LoginBackdoor
Las claves se chequean y se usan antes de ejecutar cualquier otro comando de backdoor, por lo que sólo es necesario enviarlas una vez.
Código:
21 00 25 ; A0 20 00 00 ;Comando Backdoor: Login
20 ;Longitud de comando
8F AB C2 64 44 9A FE 70 ;Password de ROM ?1D E7 62 FA B1 4C 31 06

00 11 22 33 44 55 66 77 ;Password de EEPROM
88 99 AA BB CC DD EE FF
DE ;Checksum
10.- CYCLEBYTE -> Dentro de la zona de codigo, hay un byte importante situado en la posicion C0A0, es el llamado CYCLEBYTE, su valor cambia en funcion de cual sea la ultima revisión de la tajeta. Cuando se actualizan las visas, lo que se hace es comprobar ese byte, si ya tiene el valor correcto no se hace nada, y si no se procede a la actualizacion de la visa.
11.-Parity **** -> Existen 3 Parity **** (0, 1 y 2) que son únicas por cada proveedor, son constantes en el tiempo ya que de ellas depende el descifrado RSA de una EMM. Se usan para deshacer el 2º RSA de las EMM's en Nagra.
Son claves de 15 bytes que tras un proceso de expansión de clave producen las P y Q de 32 bytes cada una, que a su vez producen el módulo de 64 bytes (PIQ) y el exponente de 64 bytes ((2*(P-1)*(Q-1)+1)/3) necesario para realizar la segunda exponencial modular del descifrado de una EMM. Se ha venido usando para ello la Parity *** 2 (la 1 parece que se emplea para generar los primos P2 y Q2 empleados en la 30/31 para encriptar los mensajes que se mandan por teléfono, y la 0 parece que no se emplea)
En resumen, el proceso de descifrado de una EMM consiste en una doble exponencial modular tal que así
MP = MC ^ 3 mod EMMKey ?MD = MP ^ Exp(p,q) mod Mod(p,q)
Siendo MC el mensaje cifrado o EMM y MD el mensaje descifrado.
No obstante este proceso fue modificado con posterioridad debiéndose realizar una permuta de los 8 últimos bytes del resultado de la primera exponencial modular con los 8 bytes de la firma y sobre ese nuevo resultado, realizar el cálculo de la segunda exponencial modular. Pero esto fue una artimaña de VD para dejar fuera de juego algunos autorrolls.
PK0 = Unica en cada tarjeta
PK1 = En un grupo de tarjetas (256)
PK2 = En todas tarjetas
12.- EMMKEY (Verify 512-bit EMM decryp ***) -> Existen dos por proveedor, para TD$07 = 0 y TD$07 = 1. Esto se indica con unos bits en el byte de selección de clave. Ya se ha visto más arriba que se usa para deshacer el 1º RSA de las EMM's. (MP = MC ^ 3 mod EMMKey). En cada versión de ROM (ROM3, ROM10 y ROM11) se ha empleado una EMMKEY1 distinta. No así la EMMKEY0 que se ha mantenido invariable en el tiempo.

Con el Byte de selección de clave seleccionamos el conjunto de claves de desencriptación a usar (EMMKEY0 o EMMKEY1) , y qué clave de paridad se usará dentro de dicha EMM (0, 1, o 2).
*EMM-U: Uniquely addressed to a single smart card.
*EMM-S: Shared addressed to a group of 256 smart cards.
*EMM-G: Globally addressed to all smart cards.
13.- Verify **** -> Hay una por proveedor y se usa como clave de verificación para confirmar que la operación anterior ha producido un descifrado válido. Básicamente se calcula la firma del mensaje descifrado usando VK como clave de cálculo y se compara con la que viene en la EMM cifrada. Si coinciden el resultado es correcto.
***0 y ***1 -> Claves "Públicas" de 8 bytes que son iguales en todas las tarjetas a medida que las actualiza el proveedor. Siempre hay una de las dos activa (por norma, aunque en alguna ocasión el proveedor ha llegado a activar una clave en el Futbol y la otra en el resto de canales) y es la que descifra las CW's que se nos suministran con las ECM's para poder visualizar los canales. Equivalentes a las Operacionales de SECA

14.- Tiers
Sería el equivalente al PBM de SECA. Son los diferentes paquetes contratados, con información variada (fecha y hora de contratación, de inicio de expiración, etc ..)

15.- WORMS (Gusanos) Código que se usa para "entrar" en la tarjeta. Cuando se descubre algún bug, se construyen estos gusanos para abrir la tarjeta en vez de usar las BackDoor (cuando estas son desconocidas). Se suelen utilizar cuando el proveedor ha actualizado la tarjeta mediante una nueva revisión y es necesario re-abrirlas ....
Un ejemplo podría ser este para abrir las ROM10:
Cita:
Consiste en enviar a la visa un comando cifrado con una EMMKey nuestra y posteriormente un gusano mediante un comando $61 que lleve nuestra EMMKey de forma que sea capaz de desencriptar el primer comando y ejecutarlo. El primer comando será una instrucción de ejecutar código en RAM.
16.- Datatypes -> Registros de longitud variable y que tienen una cabecera que indica que tipo de información contiene: claves del proveedor, derechos de visión … y que se conocen en la jerga como los datatypes. Por ejemplo en el 01 que es único en cada tarjeta está la UA, el número del deco (ird en la terminología nagra , bueno y DVB) la boxkey del deco, la fecha.
Si conoces la backdoor puedes cambiar la eeprom a tu gusto y con ins en claro.
17.- Blocker --> Código que se añade a la tarjeta para evitar que el proveedor escriba en nuestra tarjeta. Se especifica una dirección de memoria donde se encuentra el blocker (Dirección original:C1 ED que habrá que modificar a CE 00). Los blocker evitan actualizaciones por parte del proveedor dejando pasar unicamente las actualizaciones de las ****, y siendo asi nuestra mosc autoroll.
LA EEPROM DE NAGRA............................................. .......... ........................
Zona de código
En nagra1 todas las versiones de las rom similares pero no iguales, eso también pasaba en seca, en general la división entre zona de datos y la de código no tiene por que ser fija, por ejemplo en la rom3 (también rom7) la eeprom va de E000 a EFFF siempre empieza por la zona de código pero en E030 está escrito donde comienza la zona de datos, así si leemos esa posición veremos E400 y por lo tanto desde ahí empieza para ellas la zona de datos, en las rom10 y 11 la posición de inicio está escrita en C080 que podemos ver que contiene D000.

En todas las rom lo primero que nos encontramos al principio es la zona que físicamente es diferente al resto de la eeprom es la llamada OTP (one time programable, es típica de esta arquitectura de micros y en seca no había) que va desde C000 hasta C01F en rom10 y 11 y desde E000 hasta E01F en rom3, esta zona es especial y, como su nombre indica, solo se puede escribir una vez, es decir en principio está a 0 y si se pone un 1 en un bit cualquiera ya no se puede volver a cambiar. En esa zona reside información característica de cada card el primer octeto se denomina MFGINFO y en el último byte denominado MAPNABLE, que como dice tomi06 si lo cambiamos la tarjeta deja de funcionar al llamar al punto de entrada de MAP (en $2800 está el punto de entrada para las librerías del coprocesador, que no es directamente accesible por el micro) ya que deshabilita el mapa de funciones y la tarjeta se cuelga. Al principio algunos ataques de los proveedores consistía en escribir en la zona OTP en tarjetas mosceadas poniedo algún bit a 1 si detectaban en la tarjeta código escrito por personas ajenas a la casa, lo cual les permitía inutilizar dichas tarjetas mandando el código adecuado que solo ejecutaban las marcadas en ese bit (también de forma accidental algunos de los primeros scripts para unlooper escribían en esa zona).

Luego están las backdoor de la eeprom que debe tener entre 32 y 60 bits a 1, en caso contrario la considera inválida, si tiene menos copia otra backdor que está grabada en rom y se puede seguir usando, si tiene más se bloquea la tarjeta esto es igual para todas las versiones.

Luego en $C0A1 rom10 y 11 o en $E051 rom3 está el tamaño de la tabla de bugcatchers si lo ponemos a 0 la tarjeta se creerá que no hay ninguno y no buscará los parches que arreglan los bugs por eso se ponen a cero. El lugar de comienzo de la tabla está en la rom10 y 11 en C0D3 y en la rom3 en $E09B aunque podría empezar en otro lugar pues la dirección de inicio se escribe en $E07C (rom3).

Una vez que estamos en la tabla de bugcatchers la organización de la misma es así AA BB CC DD dos bytes indican la rutina de rom que parcheamos y los otros dos la dirección en la eeprom (por supuesto de la zona de código) donde reside el parche; por tanto cuando se quiere añadir un parche para una rutina se busca una zona libre para ponerla y se escriben esos cuatro bytes al final de la tabla de bugcatchers aumentando el tamaño de la tabla a su vez en 4 bytes.

¿Cómo sabe la tarjeta que hay un parche?. Pues porque han tenido la precaución de poner antes de cada rutina de rom que preveían que podía tener un fallo la instrucción swi (interrupción por software) y la rutina que maneja la interrupción la han escrito de forma que consulta la tabla y busca si hay algún parche para ella, si lo hay lo ejecuta y si no devuelve el control.

Zona de datos
La zona de datos es una base de datos elemental, hay varias rutinas en rom para manejarla. Tenemos registros de varios tipos, cada uno tiene una cabecera de 3 bytes el primero es un separador y vale siempre 07 (en realidad este byte se usa para el control de errores si tiene otro valor quiere decir que el registro no es válido y la tarjeta al inicializar si puede repara el error o lo marca como no válido y el espacio que ocupa se considera como libre), el segundo es la longitud del registro, el tercero el tipo de registro (01 info de ird casada, 02 info proveedores de visión, 07 info de clave, 08 canales contratados, 0By 11 info PPV, 0C info de crédito, ….)

DATATYPES-----------------------------------------------------------------------------
01 --> Información del Receptor.
02 --> Información del proveedor secundario
03 --> Ultimo PPV pagado ?04 --> Información indirecta (alias de canales)
05 --> Información de fecha
06 --> Info. de serv. publico. Incluye info de bloqueo y claves de decodificacion.
07 --> Info. de clave. Incluye la clave de verificación de decodificación.
08 --> Serv. de canal válidos (activa canales en la guía de programas, el IRD puede decidir por si mismo si un canal está suscrito y si no, mostrar el mensaje “este canal es de suscripción)
09 --> Información de tema/nivel de PPV
0A --> Información de nro. de PPV
0B --> Servicios válidos de PPV (el IRD puede decidir por si mismo si ha de mostrar el mensaje “este evento PPV no ha sido comprado”)
0C --> Información de límite de crédito/gasto
Entre los datatypes que pertenecen a cada proveedor de la tarjeta hay tres obligatorios para cada uno:
Primero un 01 o un 02 según que se trate del proveedor de gestión o de los de visión . Como ambos tipos de proveedores son muy diferentes, también lo es el datatype. El 01 (llamado información del receptor) contiene en lo relacionado con la desencriptación información del número de ird y la boxkey (también el código postal pero no se si se utilizó alguna vez para limitar derechos de visión) y un byte llamado ird status que también aparece en otros datatypes, en el los datatypes 01, 02, 06 y 07 si el bit 7 está a 1 quiere decir suscripción suspendida. El 02 (llamado filtro de visión) solo tiene el ID de sistema y el byte de irdSatus.
Segundo un 06 contiene además del byte del estado del ird las dos claves públicas (las 0C, 0D, 0E de seca)

Tercero dos registros 07 que contienen un campo de cuatro bytes llamado número de *** set, porque tenemos dos juegos de claves y luego las claves en si, cada juego de claves contiene tres parity **** de 15 bytes (la 0, la1 y la 2) la 2 que es la que se usa en las ins que manda el proveedor es común a todas la tarjetas y se usa para generar los 2 números primos del primer módulo de los dos del RSA a través de las rutinas en la rom de la tarjeta, la 1 que parece es la que se emplea para cifrar los datos cuando manda peticiones por teléfono y la 0 que parece que nunca se ha usado; luego está la verifykey de 8 bytes que se emplea en la firma se desencripta, se hace un hash con esta clave y si da lo mismo que la ins mandada está bien; y por último la emmkey que es el otro módulo de la RSA doble (de haber podido descomponer este segundo módulo se habría podido generar instrucciones y no solo desencriptarlas)
--------------------ENCRIPTACION / DESENCRIPTACION------------------------------
Hay dos tipos de sistemas de encriptación, los sistemas simétricos y los de clave pública, en los primeros el algoritmo de encriptación y desencriptación son distintos, pero emplean la misma clave, el ejemplo más conocido es DES, que es el que emplea Vía para las ECMs.
En los algoritmos de clave pública por el contrario, el algoritmo permanece constante, lo que cambia es la clave, el más conocido es RSA, es el que emplea Vía para las EMMs.
Se eligen dos números primos P y Q, sea N=PIQ, y E y D dos números tales que D*E=1+A*(P-1)*(Q-1), la clave pública es la pareja (E,N) y la privada (D,N), dado un mensaje M, para encriptarlo se emplea la fórmula:
E(M)=M^E mod N
y para desencriptar un mensaje M' se emplea la fórmula:
D(M')=M'^D mod N
aunque a primera vista no se vea, se puede demostrar que D(E(M))=M y E(D(M))=M, es decir D y E son funciones inversas.
Aunque pueda parecer un contrasentido publicar una de las claves y el algoritmo, no lo es, ya que no se puede averiguar fácilmente la clave privada (se requiere hacer la descomposición en factores primos de N, y si P y Q son suficientemente grandes es muy difícil), por eso dado que las claves que conocemos son las de la tarjeta, podemos desencriptar las EMMs, pero no se pueden encriptar (por desgracia).
El gran inconveniente, es que el cálculo de la exponencial modular es lento, por ello se suelen emplear sólo para el intercambio de claves, y después se emplea un algoritmo simétrico de encriptación, empleando como clave la transmitida con el algoritmo de clave pública, más o menos lo que hace Vía con las EMMs y ECMs.
Normalmente se elige el exponente E pequeño, de modo que el D es forzosamente grande, y no puede calcularse fácilmente por fuerza bruta, de este modo la parte de la encriptación es muy rápida, aunque la desencriptación sea más lenta.
El sistema que han elegido en Nagra Digital es emplear dos exponenciales modulares, en la primera el exponente de encriptación es 3 y en la segunda el exponente de la encriptación inversa es 3, el sistema queda de la siguiente forma:
Se eligen 4 primos de 32 bytes P1, Q1, P2, Q2, todos ellos de resto 2 al dividir por 3 (es necesario aunque no vamos a detallar aquí los motivos), sea N1=P1*Q1, N2=P2*Q2 y E1 y E2 los inversos de 3 módulo (P1-1)*(Q1-1) y (P2-1)*(Q2-1) respectivamente, el algoritmo de encriptación es:
E(M)=(M^3 mod N1)^E2 mod N2
y el desencriptación es
D(M)=(M^3 mod N2)^E1 mod N1
En este caso hay un pequeño problema, y es que el primer resultado (M^3 mod N1) puede ser mayor o igual que N2. Para evitarlo a la hora de encriptar se suprimen los dos bits superiores del resultado intermedio y se copian en los dos bits superiores de select ***, y para desencriptar se hace el proceso inverso. Hay otra pequeña cosa añadida, que es que antes de encriptar (y por tanto después de desencriptar) se hace una inversión de los bytes de orden (byteflop, para el desensamblado de StuntGuy), la razón es que los mensajes que no llegan a 64 bytes los completan con 00, y si se encripta un número pequeño con un exponente pequeño se puede averiguar con facilidad (como veis están en todo).
El módulo de la primera exponencial (para desencriptar, es decir N2) es EMMKEY, y el de la primera no está almacenado directamente en la tarjeta, para calcularlo se emplea la parity *** 2 (la 1 parece que se emplea para generar los primos P2 y Q2 empleados en la 30/31 para encriptar los mensajes que se mandan por teléfono, y la 0 parece que no se emplea), el algoritmo es la subrutina en la dirección 7b5b (en las tarjetas ROM3, como las de Vía), que genera la pareja de primos P1 y Q1 en las direcciones 100..11f y 120..13f, después N1=P1*Q1, y E1=(2*(P1-1)*(Q1-1)+1)/3.
Cuando mandaban una emm al principio de la misma aparece el ID del proveedor al que se dirige y un byte llamado byte de selección de clave que nos indica con cual de los juegos de claves debemos desencriptar, o sea para las emm las claves en los datatypes 07.
Las ecm (03) podían ser de varios tipos según el canal al que pertenecieran eran encriptadas con DES o E*DES con las publickeys 0 o 1 que están en los datatypes 06, pero además se hacía un XOR con la clave MECM que era una clave de 256 bytes, dentro de la ecm había un byte que indicaba el punto de la MECM a partir del cual se cogían a su vez 8 bytes para el XOR, esta MECM no está en la cam sino que nos la mandan (a trozos porque la cam solo guardaba 16 bytes) en un comando 02 anterior, de tal forma que si la parte de la MECM que la tarjeta necesita para desencriptar la ecm no está guardada solicita a la cam que le envíe la última instrucción 02 que haya recibido. Además como es sabido se encripta también con la boxkey y así se pasa al ird que tiene la misma boxkey naturalmente
Byte de selección de clave: Se usa para seleccionar el conjunto de claves de desencriptación a usar (EMMKEY0 o EMMKEY1) , y qué clave de paridad se usará dentro de dicha EMM (0, 1, o 2). Este byte se codifica así:
Código:
x x x x x x x x
| | | | | | |_|__ Selecc. clave de paridad: 0, 1, or 2. Aviso:
| | | | | | No hay control de errores. (ver abajo)
| | | | | |______ Desconocido
| | | | |________ Bit de selección de tipo de clave
| | | |__________ Desconocido
| | |____________ Desconocido
| |______________ Desconocido
|________________ Desconocido
COMMAND $00: EMM
--------------------------------------------------------
21 40 53 A0 CA 00 00 4D 00 4B 40 01 62 78 0A C9 81 D0 42 7C 91 44 A3 F4 75 48 6A 9B E4 35 D2 6B 3C B1 8B 40 BE 44 95 8B 5B 8E 72 E3 6D A7 46 91 2F FD AC DB CC 64 A5 CD 48 69 AE 24 AB 0A 56 F3 0B 1E DF EE BC 1D F1 5A BF C8 9D DC B6 12 7C 28 E9 76 A5 D8 52 05 E3
ID PROVIDER = **** (Via Digital (Spain))
KEYELECT = 62 =B'01100010 PK=2 ¿bit 5? (TD $07->0)
SIGNATURE = 78 0A C9 81 D0 42 7C 91
ENCRYPTED DATA =
44 A3 F4 75 48 6A 9B E4 ; Block 1 ?35 D2 6B 3C B1 8B 40 BE ; Block 2

44 95 8B 5B 8E 72 E3 6D ; Block 3 ?A7 46 91 2F FD AC DB CC ; Block 4

64 A5 CD 48 69 AE 24 AB ; Block 5 ?0A 56 F3 0B 1E DF EE BC ; Block 6

1D F1 5A BF C8 9D DC B6 ; Block 7 ?12 7C 28 E9 76 A5 D8 52 ; Block 8 .

************************ segunda parte***********************

Información Sobre Nagra2

Para un mejor entendimiento sobre los conceptos básicos sobre este sistema.
BIT:
Abreviación de binary digit, un bit es la unidad más pequeña de datos . Los bits se utilizan en distintas combinaciones para representar distintos tipos de datos. Cada bit tiene un valor 0 ó 1.
Backdoor ****:
Se puede acceder a la tarjeta no solo con las ins encriptadas sino de otra forma en la que no hace falta encriptación, son las llamadas instrucciones backdoor que permiten leer y escribir en la eeprom (teóricamente en cualquier zona de la tarjeta) pero para ello es preciso conocer la clave de paso, son las llamadas claves backdoor. Debido a los sucesivos bugs encontrados en las diferentes versiones de las tarjetas nagra1 se pudo averiguar el valor de esas claves lo que abrió la posibilidad de leerlas y escribir en ellas.
Boxkey:
Código de 16 cifras y letras que lleva el decodificador internamente q va ligado inexorablemente a la tarjeta inteligente.
BUG CATCHERS:
Los bugcatchers son parcheos en eeprom de fallos en rom. En Nagra la eeprom se divide en dos zonas una de datos y otra de código y en esta última el proveedor puede grabar código ejecutable por la card, en principio servía para corregir bugs, pero como podéis comprender se le han dado otros usos, son los famosos bugcatchers. El microprocesador de la visa solo busca bugcatcher cuando encuentra en rom una interrupción de sofware.
Comandos Backdoor:
Una vez que se conocen las claves de backdoor, existen varias utilidades que suponen un método sencillo de volcar la tarjeta, introducirles código 3M y demás.
Ejemplos:
- Comando $0E: Borra la EEPROM
- Comando $20: Login (Usado para decirle a la CAM cuales son las passwords)
- Comando $B0: Volcar memoria
- Comando $D6: Ejecuta código/escribe en la EEPROM
Datatypes:
Las tarjetas de Nagra gestionan suscripciones, PPV y encriptación de la información usando un sistema de ficheros puramente flash. Su motor de datos puede entender 12 tipos de datos de longitud fija y 2 tipos de datos de longitud variables, todos conocidos. Los datos se almacenen en una zona de EEPROM amplia y única que se cede en total para este propósito. A medida que se añaden datos, pueden hacerlo al final de los existentes o en huecos dejados por la eliminación de otra entrada. Los comandos $20 y $21 se usan para determinar la existencia y los valores, respectivamente, de los elementos almacenados en la EEPROM de la tarjeta. En esta sección, se describirán las funciones y estructuras de los elementos sobre los que tengo constancia.
Hay al menos 14 tipos de datos en la tarjeta, cada uno de los cuales con una estructura única. No todos los datos de un tipo dado están disponibles necesariamente para el comando 21-xx. Además, da la impresión de que los dos primeros bytes de datos de los tipos de longitud fija son de relleno y no se devuelven en los comandos 21-xx. Los tipos de data conocidos son:
Tipo Long Disp. Descripción de datos
---- --- ----- -------------------------------------------------
$01 $28 $1E Info IRD casada. Incluye información ?como el nro de serie del IRD casado,
cod. postal del cliente,(para bloqueo
de deportes), su zona horaria, Boxkey ?del IRD, etc.
Nota: Contiene info. oculta (box ***)
$02 $06 $04 Información del proveedor secundario
$03 $0E $0C Ultimo PPV pagado
$04 $0C $0A Información indirecta (alias de canales)
$05 $0E $0C Información de fecha
$06 $39 $26 Info. de serv. publico. Incluye info de ?bloqueo y claves de decodif. publicas
para comandos $03 (en tarjetas ROM2,
Nota: Contiene info. oculta (claves de decodif.)
$07 $7A $03 Info. de clave. Incluye la clave de verificación
de decodificación. Posiblemente las claves
00/01/02 ?$08 $1E $1C Serv. de canal válidos (activa canales en
la guía de programas, el IRD puede decidir
por si mismo si un canal está suscrito y
si no, mostrar el mensaje “este canal es de
suscripción)
$09 $27 $25 Información de tema/nivel de PPV
$A $2A $28 Información de nro. de PPV
$B $24 $22 Servicios válidos de PPV (el IRD puede decidir
por si mismo si ha de mostrar el mensaje
“este evento PPV no ha sido comprado”)
$C $13 $11 Información de límite de crédito/gasto
$10 var var Email
$11 var var Cadenas diversa
CYCLEBYTE -> Dentro de la zona de codigo, hay un byte importante situado en la posicion C0A0 (en ROM10), es el llamado CYCLEBYTE, su valor cambia en funcion de cual sea la ultima revisión de la tajeta. Cuando se actualizan las visas, lo que se hace es comprobar ese byte, si ya tiene el valor correcto no se hace nada, y si no se procede a la actualizacion de la visa.
Eeprom:
esta memoria puede ser grabada, borrada y regrabada. Son memorias de almacenamiento de códigos y acceso secuencial o sea q una
vez iniciada la lectura de la memoria de una posición cualquiera debe continuarse leyendo las posiciones siguientes.
ECM:
ECM significa Entitlement Control Message (comandos para tu tarjeta ). ECM's lo mandan por paquetes. esos paquetes también los llaman Control Word (CW) y contienen la codificación de ****, ID's etc. que no hace falta para decodificar la señal. M.a.w. de ECM es una identificación del servicio de condiciones donde se puede utilizar ese servicio.
Los proveedores usan a menudo el fake ECM's para eliminar las tarjetas piratas, sin que las tarjetas originales lo noten.
Emm:
EMM significa entitlement management messages. el EMM's es para el uso de información que en el SAS se a programado siempre se envía a través de ECM. El EMM lleva la información sobre el abonado y sobre el estatus de abono que hemos contratado, se utiliza también para poder mandar las **** correctas ó para el cambio de **** en ****.
EMMKEY:
(Verify 512-BIT EMM decryp ***) -> Existen dos por proveedor, para TD$07 = 0 y TD$07 = 1. Esto se indica con unos bits en el byte de selección de clave. Ya se ha visto más arriba que se usa para deshacer el 1º RSA de las EMM's. (MP = MC ^ 3 mod EMMKey). En cada versión de ROM (ROM3, ROM10 y ROM11) se ha empleado una EMMKEY1 distinta. No así la EMMKEY0 que se ha mantenido invariable en el tiempo.
Con el Byte de selección de clave seleccionamos el conjunto de claves de desencriptación a usar (EMMKEY0 o EMMKEY1) , y qué clave de paridad se usará dentro de dicha EMM (0, 1, o 2).
*EMM-U: Uniquely addressed to a single smart card.
*EMM-S: Shared addressed to a group of 256 smart cards.
*EMM-G: Globally addressed to all smart cards.
Firmware:
Es una memoria interna que poseen ciertos dispositivos hardware en la que está instalada un software especial que lleva a cabo algunas de las funciones del aparato. Esta memoria suele ser regrabable por lo que se puede actualizar el firmware para corregir ciertos errores descubiertos en el funcionamiento del aparato o añadirle nuevas características.

Memoria flash:
Sistemas de memoria Flash destinados al almacenamiento de datos no volátil
Mosc:
Son tarjetas originales, también llamadas MOSC (Modified Original Smart Card), Una tarjeta lleva un microprocesador y una memoria, el microprocesador lleva un programa, ese programa necesita datos (por ej. ****), con las cuales podremos trabajar, los datos se han grabado en la memoria de la tarjeta, el programa mismo es estático (en principio no lo debes cambiar nunca) pero los datos de esta si los puedes cambiar para hacerla funcionar, Eso se puede hacer gracias a las **** que los proveedores nos mandan con sus señales Si tienes una tarjeta original, esta puede buscar las claves operativas, a esto se le llama autorroll. Si tu no posees los códigos autorroll, tendrás que cambiarlo tu mismo, A esto se le llama, editar las ****.
Parity ****:
Existen 3 Parity **** (0, 1 y 2) que son únicas por cada proveedor, son constantes en el tiempo ya que de ellas depende el descifrado RSA de una EMM. Se usan para deshacer el 2º RSA de las EMM's en Nagra.
Son claves de 15 bytes que tras un proceso de expansión de clave producen las P y Q de 32 bytes cada una, que a su vez producen el módulo de 64 bytes (P*Q) y el exponente de 64 bytes ((2*(P-1)*(Q-1)**1)/3) necesario para realizar la segunda exponencial modular del descifrado de una EMM. Se ha venido usando para ello la Parity *** 2 (la 1 parece que se emplea para generar los primos P2 y Q2 empleados en la 30/31 para encriptar los mensajes que se mandan por teléfono, y la 0 parece que no se emplea)
En resumen, el proceso de descifrado de una EMM consiste en una doble exponencial modular tal que así ?MP = MC ^ 3 mod EMMKey ?MD = MP ^ Exp(p,q) mod Mod(p,q)
Siendo MC el mensaje cifrado o EMM y MD el mensaje descifrado.
SAS:
SAS quiere decir subscriber authorization system.
El SAS traducido (Ha petición de SMS) los datos de abonado en un EMM.
El SAS también sirve para que la tarjeta sea autorizada para ver un canal.
xor
Se utiliza para ejecutar una exclusión lógica en dos expresiones.
resultado = expresión1 Xor expresión2
La sintaxis del operador Xor consta de las siguientes partes:
resultado Cualquier variable numérica
expresión1 Cualquier expresión
expresión2 Cualquier expresión
Código:
Si bit en expresión1 es Y bit en expresión2 El resultado es
0 0 0
0 1 1
1 0 1
1 1 0
El sistema de numeración hexadecimal, es un sistema de numeración base 16. Utiliza como símbolos los números del 0 al 9 y las letras A, B, C, D, E, F, como se muestra en la tabla siguiente:
Decimal Binario Hexadecimal
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F

Verify ****:
Hay una por proveedor y se usa como clave de verificación para confirmar que la operación anterior ha producido un descifrado válido. Básicamente se calcula la firma del mensaje descifrado usando VK como clave de cálculo y se compara con la que viene en la EMM cifrada. Si coinciden el resultado es correcto.


Y recordar que el pirateo es ilegal y esto es mera informacion que esta en la red