NDS2 ITALIAN COMMAND
Vers. 1.1
By Hummy1
Nuova versione aggiornata, riveduta e corretta.
Ricordo che questo documento vuole essere un aiuto per coloro che si accingono a studiare la nuova codifica, oppure vuole essere un promemoria per tutti coloro che già la studiano.
Le informazioni contenute sono frutto di test personali e di info tratte dai forum e dai vecchi ma fondamentali doc. Date le recenti modifiche sull’NDS, non assicuro la certezza delle informazioni ivi contenute.
Consiglio a tutti di leggere le FAQ del maestro Micromax e i Doc sulla PPV di Linixone, strumenti indispensabili per conoscere l’NDS e per capire l’evoluzione di questo sistema di codifica.
Ma il miglior modo per imparare è frequentare i forum dove si può sempre contare su persone competenti pronte ad aiutarvi.
E’ chiaro che questo doc è stato realizzato a solo scopo di studio….
Per qualsiasi informazione, chiarimento o correzione (dato che ci saranno molte imprecisioni…

) mailto:fabar1983@hotmail.com
Buono studio…;D
INDICE:
L’ATR delle nuove card 3
STRUTTURA DELLE ISTRUZIONI NDS 4
NANI e INDICATORI 5
LE NUOVE CLASSI 17
LE CHIAVI 18
SIGNATURE CALCULATION & CONTROL WORD ENCRIPTION PROCESS 19
STATUS BYTES 21
LA FASE DI BOOT DELLE NUOVE CARD 23
LE NUOVE ATTIVAZIONI 27
TRANSAZIONE PPV 31
HARDWARE & SOFTWARE 37
INS 02 38
INS 04 38
INS 06 38
INS 0E 39
INS 12 41
INS 1E 42
INS 2E 43
INS 32 44
INS 36 45
INS 38 47
INS 40 48
INS 42 53
INS 44 55
INS 46 55
INS 4A 57
INS 4C 58
IL MARRIAGE 58
INS 4E 62
INS 50 62
INS 54 62
INS 56 63
LO SWAP DELLA CARD 63
INS 58 64
INS 5A 65
INS 5C 65
INS 5E 66
INS 6A 67
INS 6C 67
INS 70 68
INS 72 69
INS 74 71
INS 76 78
I TIERS 78
INS 78 80
INS B4 82
INS BC 83
INS BE 84
L’ATR delle nuove card
3F FF 13 25 03 10 80 33 B0 0E 69 FF 4A 50 70 00 00 49 54 02 00 00
3F*: Convention INVERSE
Protocol: T=0
TA1 = 13
TA2 = 80
TB1 = 25
TC1 = 03
Historical Bytes: 33 B0 0E 69 FF 4A 50 70 00 00 49 54 02 00 00
3 ° i ÿ J P p I T
Programming Voltage = 5.0 volts
Programming Current = 50ma
Maximum Clock Frequency = 5.0MHz
Assuming a 3.5790MHz clock:
Work ETU = 0.0000259849 seconds
Guard Time = 0.0003897737 seconds
Baud Rate After Reset = 38484
Il Baud Rate iniziale durante la fase di reset e di generazione ATR è 9600 b/s, dopo la richiesta ATR il Baud Rate è 38400 b/s.
STRUTTURA DELLE ISTRUZIONI NDS
Header Data-Packet Nano Signature
CLA INS P1 P2 Len [Nano..nano-len…nano-data]..[Nano1… 67 08 SIGN
Tutti i comandi NDS si possono analizzare tenendo conto dei due pacchetti cui sono composti: l’Header e il Data Packet.
L’Header contiene:
CLA: è il byte che indica la classe del comando da eseguire;
INS: è il byte che indica il tipo di istruzione da eseguire
P1: Parametro 1
P2: Parametro 2
Len: lunghezza del comando (in esadecimale)
Il Pacchetto-Dati segue il pacchetto Header e contiene l’INS byte (echo byte), ossia il byte che indica il comando da eseguire.
Il Data Packet compone il comando, varia per ogni comando e contiene Nani e Indicatori seguiti dai relativi dati.
Il Data-Packet può essere inviato dall’IRD (dalla cam) alla card IRDàCARD, ovvero dalla card all’IRD CARDàIRD.
NANI e INDICATORI
Le istruzioni NDS contengono Nani e Indicatori.
I NANO(comandi) sono delle funzioni che vengono eseguite attraverso i dati che sono ivi contenuti.
I nani possono essere a len fissa o a len variabile.
Nel caso di nani a len fissa, i dati seguono immediatamente il Nano; nel caso di len variabile la lunghezza segue il nano-indicator, i dati seguono la nano-len.
Es. len fissa: CLA INS P1 P2 LL Nano nano-data
len variabile: CLA INS P1 P2 LL Nano nano-len nano-data
I Nanocomandi sono contenuti negli ECM e negli EMM, oltre che nell’Ins. 36.
Alcuni Nano possono contenere delle sotto-operazioni da eseguire.
Queste sotto-operazioni, dette u-NANO, sono di solito a len fissa.
Distinti dai Nanocomandi sono gli INDICATORI (o Type Info).
Gli Indicatori, a differenza dei nano che eseguono certe funzioni, servono soltanto a indicare i tipi di dati presenti nella card.
Gli Indicatori sono presenti in molte risposte della card.
NANO a LEN FISSA
01 [04]
Set Data&Time.
I 4 bytes della data e dell'ora sembrano concorrere all'elaborazione della signature degli ECM e degli EMM. Così la signa diventa unica e sempre diversa, perchè relazionata a valori temporali. La presenza di vincoli temporali e la loro rilevanza in fase di generazione signa costituisce un punto di forza della codifica NDS.
02 [01]
Sets rating byte, marks message as ECM (only ECM).
Il contenuto di questo nano descrive il tipo di contenuto della programmazione.
Analizzando il bitmap possiamo dire:
7654 3210
0000 0001 valore= 01 canale criptato standard
0000 0010 valore= 02 canale ppv, evento già iniziato non più aquistabile
0000 0101 valore= 05 canale ppv, evento iniziato ma ancora aquistabile, con
preview terminata.
1000 0001 valore= 81 canale ppv, evento non ancora iniziato e aquistabile.
1000 0010 valore= 82 canale ppv, evento iniziato, aquistabile con preview non
ancora terminata.
03 [03]
Checks channel entitlements.
I primi 2 bytes rappresentano il Channel ID associato al canale su cui siamo sintonizzati nel momento in cui l’ ECM/EMM è stato generato dall’ IRD.
Ad uno stesso canale, possono essere associati più Channel ID, tutti presenti nell’ ECM/EMM.
La card effettua due controlli: dapprima verifica se il Channel ID associato al Nano 03 è contenuto tra quelli presenti nella smart card; poi verifica se il valore del 3° byte del nano è minore del valore della data di scadenza del tier.
In caso affermativo setta dei flags interni che permetteranno la generazione della DCW come risposta al Comando D1 54.
Viceversa la DCW di risposta sarà tutta a 00.
09 [03]
Initialise ASIC with specified key, flushes the command buffer (no signature stay).
Dai primi di ottobre 2004 è stato integralmente sostituito dal nano 90, che sostanzialmente è analogo. (Vedi nano 90)
10 [02]
Some form of counter.
I due bytes dell’argomento del nano mostrano una sequenza che si incrementa ad ogni successivo EMM contenente il Nano 10.
19 [01]
Set region code.
Richiede i Filtri OPEN per essere eseguito.
1E [08]
Set Postcode Value.
Questo Nano setta il valore del PostCode.
Gli 8 bytes rappresentano il Codice Postale (postcode).
Il Nano 1E è sempre usato in combinazione con il Nano 31.
Il Nano 1E e il Nano 38 non sono mai presenti insieme nello stesso data-block.
Richiede i Filtri OPEN e minimo la Group Key per essere eseguito.
24 Close Filter
25
Flip filter, from open to closed or vice versa.
Se i Filtri sono aperti li chude. Viceversa se sono aperti li chiude.
2D [04]
Set Activation Date&time
30 Open filter
31 [04]
Opens filters if the Unique Address matches exactly.
I quattro bytes del comando rappresentano l'Unique Address della card.
Solo se il Numero Seriale è identico a quello presente nella card i successivi Nano sono eseguiti.
Il Nano 31 (Unique Address) e il Nano 38 (postcode) non sono mai presenti insieme nello stesso data-block.
32 [03]
Open Filters if Shared Address Match.
I tre bytes del comando rappresentano il gruppo di cards (card group) a cui e’ diretto l’ EMM.
Solo se questi bytes sono identici ai primi tre bytes del Unique Address i successivi Nano sono eseguiti.
Il Nano 32 (card group select) e il nano 33 (CUSTWP Bitmap) non sono mai presenti insieme nello stesso data-block.
33 [23]
Open Filters if CUSTWP Bitmap Set.
I primi tre bytes rappresentano il Card Group (SA).
I rimanenti 0x20 (32 decimale) bytes rappresentano l’ addressmatrix (simile all'F0 del Seca).
Questo addressmatrix contiene esattamente 256 decimale bits.
Ciascun bit corrisponde ad una delle 256 cards del gruppo, cioè corrisponde al valore del 4th bytes del Unique Addresses, detto CUSTWP.
L’ EMM è indirizzato solo alle cards corrispondenti ai bits settati (valore 1).
Il bit corrispondente ad un dato CUSTWP è individuato nel seguente modo:
ES : CUSTWP = AE
a) Dividendo il valore del CUSTWP per 8 si ricava quale dei 32 bytes, numerati a partire da 00, contiene il bit corrispondente al CUSTWP.
CUSTWP/8 = AE/8 = 15h
b) Il resto della divisione tra il valore del CUSTWP e 8 fornisce la posizione del bit all’interno del byte.
I bits vanno numerati da 0 a 7 da sinistra verso destra.
Nel nostro esempio, il bit associato al CUSTWP AE è il bit 6:
7 6 5 4 3 2 1 0
Questo Nano di solito è usato in combinazione con il Nano 41 per aggiornare la Data di Scadenza di un ChID. In questo caso il comando dovrebbe essere criptato con chiave di gruppo. Da quando è stato generalizzato il nano 90, non ho più visto EMM criptati con la chiave di gruppo.
3D [02]
Set PPV spending limit e fuse byte.
Richiede i Filtri OPEN e minimo la Group Key per essere eseguito.
41 [05]
Add or Update (Expiration Date) Channel Entitlement.
Questo nano crea, se non già presente, un nuovo Channel ID sulla card e relativa data di Scadenza.
Se il Channel ID è già presente sulla card, il nano aggiorna la data di scadenza e alcuni valori e flags.
Dei 5 bytes associati al nano, i primi due rappresentano il Channel Entitlement (Channel ID).
I successivi due bytes costituiscono l’ Expiration Date del Channel ID. Il primo di questi due bytes rappresenta l’anno e il mese, il secondo il giorno.
42 [02]
Delete Channel ID.
Questo Nano cancella definitivamente il Channel ID indicato dai due successivi bytes, dalla lista di quelli presenti sulla card.
48 [02]
Enable PPv Preview.
I due bytes che seguono (xx xx), indicano che l'evento è già iniziato ed è attiva la preview. La preview rimane attiva fino a 6-7 minuti dopo l'inizio del film.
Dipende dunque dall'orario di inizio del film, non dal momento in cui noi lo visioniamo (come nel seka).
4D [0B]
Purchase PPV info.
Questo nano fornisce informazioni sull'evento ppv in corso. E' contenuto negli ECM degli eventi PPV e nelle ins 46.
4D_0B
C7 FA event.ID
5C 05 data visione
00 65 tipo di acquisto (credito a scalare )
04 evento ancora acquistabile (se 00 non si può + acquistare)
08 ??
01 2C costo dell'evento
00 ??
67 [08] -Signature.
Vedi paragrafo sulla signature.
6D [09] –Server Number
Il nano 6D viene inviato tramite EMM, contiene il numero di telefono del server dove il decoder si collega quando la scheda ha terminato il credito PPV. Quando il decoder si collega , scarica gli eventi scritti e ricarica la scheda. Vedi ins 78.
7F [0A] -Key Adjustment
I 10 bytes argomento del nano 7F dovrebbero rappresentare i Key Adjustment Bytes usati per aggiustare la risposta della card all'ECM. Vedi paragrafo sulla signature.
90 [03]
Inizialize ASIC.
Omologo al nano 09, usato per i recenti comandi criptati.
Il nano 90 ci dice se e come l'ASIC è inizializzato.
90 00 04 02
Il 1° byte dopo il nano 90 indica il numero dei byte crittati che seguono, in questo caso nessuno (il comando non è criptato e l’ASIC non è inizializzato).
Il 2° byte dopo il nano 90 è un bitmap:
l'high nibble di questo byte indica il tipo di comando:
ECM (C), EMM ins42 (4, 6 EMM len 83), ins 46 (C), ins 36 (0);
il low nibble di questo byte indica la chiave con la quale è firmato il comando:
chiave pubblica (0), chiave privata (4).
High nibble visti finora
3210
0000 non inizializza l'ASIC 0
0100 individua un EMM 4
0110 individua il particolare EMM len 83 6
1100 individua un ECM o un'ins 46 C
Low nibble (indica la key)
3210
0000 chiave pubblica primaria 0 (sicuro)
0001 chiave pubblica secondaria 1
0010 chiave di gruppo primaria 2
0011 chiave di gruppo secondaria 3
0100 chiave privata primaria 4 (sicuro)
0101 chiave privata secondaria 5
Il 3° byte dopo il nano 90 indica la versione della CARD:
per la italiane e le inglesi abbiamo 02, per le HU americane abbiamo 3, per le P4 e P5/D1 sempre americane abbiamo 05.
DE [28] - ?? vedi ins 36
Il nano DE presenta 24 bytes che possono variare in relazione a specifiche ins
42 e 16 bytes che variano a ogni reset. Questi 16 bytes variabili con molta
probabilità sono legati alla generazione della signature.
NANO A LEN VARIABILE
38
Check Data and Open Filters If Match.
Questo Nano a lunghezza variabile ha il compito di aprire i filtri se il dato associato corrisponde a quello presente sulla card.
Il tipo di dato su cui è effettuato il confronto è indicato dal 1^ byte dopo la Len, che può quindi essere considerato un uNano.
Ad es. len 03 uNano 01: se il CHiD indicato è presente nella card, apre i filtri.
Le altre len possibili sono 05, 07, 09.
Gli altri uNano possono essere 02, 03, 06, 08; indicando PPv EvID, activation date, postcode, ecc.
75 [0F] -Set Local Region Code
[13] -Set Country Code & Region Code
INDICATORI dell'INS 74