Il 0% ha trovato utile questo documento (0 voti)
8 visualizzazioni165 pagine

Satellite Hacking

Il documento è un manuale dettagliato sul satellite hacking, progettato sia per principianti che per esperti, fornendo informazioni su smartcard, ricevitori e tecniche di programmazione. Include una storia del satellite e delle tecnologie associate, oltre a procedure pratiche per l'uso di emulatori e la gestione delle smartcard. Il manuale è frutto di contributi da forum e comunità di esperti, con riferimenti a risorse online per ulteriori informazioni.

Caricato da

chinessaconta79
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
8 visualizzazioni165 pagine

Satellite Hacking

Il documento è un manuale dettagliato sul satellite hacking, progettato sia per principianti che per esperti, fornendo informazioni su smartcard, ricevitori e tecniche di programmazione. Include una storia del satellite e delle tecnologie associate, oltre a procedure pratiche per l'uso di emulatori e la gestione delle smartcard. Il manuale è frutto di contributi da forum e comunità di esperti, con riferimenti a risorse online per ulteriori informazioni.

Caricato da

chinessaconta79
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd

,O1XRYR0DQXDOHSHULO

6DWHOOLWH+DFNLQJ
Da un idea nata nel forum CRD di De_Koder
[Link]

UHOHDVHRIILFLDO

3HULQYLDUHLQIRUPD]LRQLHGDJJLRUQDPHQWLVFULYHWHD thefax@[Link]

8QVHQWLWRULQJUD]LDPHQWRD

,OYHFFKLR KL@NDOFRPSOHWR0HUOLQ&U\SWR:RUNV3OLS'DQQ\'DUN$QJHO'LDEROLN³7´,7HDPGHO&292GL6DW+DFNH
'LJLWDO)UHH6DW'[Link],UGHWRIDEPDUJLREEHIUDQN\ER\&DQDO+DFNHU6DQG>R@NDQ7XOHPDQQ*LRUJLRO¶DXWRUHGL/RJ &UG

DULDQQD)UDQN\V=LR%LOO'XQORSH.HQ]RSHUOH$FWLYDWH -RKQ0F'RQDOG*RRSKHU

LO--*URXSSHULOORURIDQWDVWLFRVRIWZDUH

HGDWXWWLLYROHQWHURVLSDUWHFLSDQWLDLIRUXPVXOVDWHOOLWHKDFNLQJ

7KH)D[

1
6RPPDULR

6RPPDULR ............................................................................................................................ 2
Storico delle Versioni .......................................................................................................... 4
Benvenuti ............................................................................................................................ 5
Cenni Storici........................................................................................................................ 6
Parte Prima – Per iniziare ................................................................................................... 7
Cenni sulla TV via satellite ...........................................................................................................7
CAM e SmartCard – La Pay TV .................................................................................................10
Tipologie di ricevitori ..................................................................................................................13
Hardware ...................................................................................................................................15
Software ....................................................................................................................................18
Parte Seconda – Per andare avanti .................................................................................. 30
La Smart Card IRDETO .............................................................................................................30
Funzionamento della SmartCard IRDETO .................................................................................31
L’Algoritmo di decodifica della SmartCard IRDETO con Emulatore Linux Funzionante ..............34
Dettaglio delle comunicazioni tra CAM e SMARTCARD.............................................................47
I Comandi per interagire con la SmartCard ................................................................................49
I Nano Comandi – Il cuore della programmazione......................................................................63
Come si scrive un file CRD ........................................................................................................67
Chiavi in chiaro e KeyProviderGroup facciamo chiarezza ..........................................................70
Il processo di Decrittazione ........................................................................................................71
Cos’è un Blocker e un SuperBlocker..........................................................................................76
Gli Emulatori ..............................................................................................................................78
Tips&Triks..................................................................................................................................88
Come si ricavano le PlainKey......................................................................................................................... 88
Come si cambiano i PIN ................................................................................................................................. 89
LE CARTE AZZERATE ED IL SERIAL HEX – Uno Studio Approfondito di “T” ......................................... 91
INTRODUZIONE ......................................................................................................................................... 91
LA TEORIA: La "Precondizione" ................................................................................................................ 91
LA TEORIA: Come Funziona? ................................................................................................................... 92
LA PROCEDURA: Recuperare l'ATR delle CARD NON REATTIVE ...................................................... 92
LA PROCEDURA: Trasformare la PRECARD in INITCARD................................................................... 93
LA PROCEDURA: Il crd di Calc ................................................................................................................. 93
LA PROCEDURA: Conclusioni .................................................................................................................. 94
PER ESPERTI: Come riazzerare una carta ............................................................................................. 95
PER ESPERTI: Gli 8 bytes del SHEX........................................................................................................ 95
PER ESPERTI: Trovare un SHEX valido .................................................................................................. 96
PER ESPERTI: SHEX Cloning................................................................................................................... 96
PER ESPERTI: Il DB dei SHEX ................................................................................................................. 97
CONCLUSIONI............................................................................................................................................ 97
Come Rianimare le schede Azzerate o come cambiare il [Link] di una scheda. ................................ 98
Procedura per usare l'univblocker................................................................................................................ 101
LOGGING - Miniguida all’utilizzo di mlog1.3 e Mrxlog103 – By Giobbe.......................... 116
Settaggi del Nokia Mediamaster. .............................................................................................116
Utilizzo di CCsuite....................................................................................................................122
Log del ChId con CCsuite ........................................................................................................123
Altre funzioni ............................................................................................................................123
Log con Interfaccia Season Classica .......................................................................................125
Utilizzo di MrXlog 1.1 ...............................................................................................................128
Il sistema MEDIAGUARD di SECA ................................................................................. 131
SECA MEDIAGUARD – Da MediaGuard Musing di John McDonald, Traduzione di Goopher..131
67587785$',&20$1'2(&20$1'2$16:(5725(6(7 ....................................................... 131
,1,=,$/,==$=,21( 67$5783 .............................................................................................................. 132

2
,'(17,),&$=,21('(//$60$57&$5' ............................................................................................. 133
(17,7¬6833257$7( ,VWUX]LRQL[ .................................................................................................. 133
,1)250$=,21,68,3529,'(5 ,VWUX]LRQL[ .................................................................................. 134

$%%21$0(17,6833257$7, ,VWUX]LRQL[ ...................................................................................... 134

&21752//2'(,',5,77,',$&48,672 ,VWUX]LRQL[&±[$ .................................................... 135

$/*25,702','(&5,37$**,2 ........................................................................................................... 137

1) Preparazione della Chiave ........................................................................................................................ 138


2) Manipolazione dei dati ............................................................................................................................. 139
7$%(//( ...................................................................................................................................................... 142

$/*25,702',6(*1$785$',0(66$**,2 .................................................................................... 144

23(5$=,21,&21752//$7(&213,1 ................................................................................................ 147

*(67,21('(,',5,77, ............................................................................................................................ 147

$/75(,1)250$=,21, ............................................................................................................................ 149

5LDVVXQWRGHLFRPDQGL ................................................................................................................................... 150

Varie................................................................................................................................ 151

3
6WRULFRGHOOH9HUVLRQL

9(56,21( $**,251$0(17, &200(17,

0.0.1 Versione iniziale del manuale Pre-relase – alpha


Aggiunto il paragrafo per lo Storico delle Versioni.
Modificata la tabella delle frequenze di Stream con l’aggiunta dei nuovi canali, modificata la
Tabella Chiavi in Chiaro Irdeto – Codifica Canali, aggiornato il sommario.
Le Nuove Scoperte, aggiunto il trucco per evitare il blocker.
0.0.2 Pre-relase – alpha
Aggiornata la sezione “Cam e SmartCard – la Pay TV”
Aggiornate PlainKey SCT - Hellas
Aggiornato il capitolo “Cenni Storici”
Aggiornato il capitolo “Cenni sulla TV Via Satellite”
Modificata Tabella Chiavi in Chiaro Irdeto
Modificato capitolo “Funzionamento della SmartCard Irdeto”
Aggiornato il Capitolo “Software”
Aggiornata Classe Comandi 00
1.0 Aggiunta Classe Comandi 03 Beta Release
Aggiunta Classe Comandi 06
Aggiunto Capitolo Tips&Tricks – Come Rianimare le schede Azzerate o come cambiare il
[Link] di una scheda
Aggiornato il capitolo “Benvenuti”
Il Documento diventa un emissione ufficiale del KL@N
Correzione a pag.55 Pid ECM in EMM e viceversa
Modificata la Prima Pagina con nuovi riferimenti ed il capitolo benvenuti
Modificato il capitolo “SoftWare”
Modificato capitolo “Funzionamento della SmartCard Irdeto”
1.0 Modificata Calsse Comandi 02 Official Release
Modificata Calsse Comandi 05
Modificato il capitolo “Le Nuove Scoperte”
Aggiunto Tips&Tricks “Le Carte Azzerate ed il Serial Hex di T”
Aggiunto Tips&Tricks “UniversalSuperBlocker”
Aggiunto capitolo su Blocker e SuperBlocker
Dopo la Dipartita del Klan il documento si appoggia al Covo, e a DigitalFreeSat
Aggiornata la Prima pagina ed i riferimenti nel capitolo benvenuti
Aggiornato il capitolo HardWare
Aggiornato capitolo “Funzionamento di una SmartCard Irdeto
Aggiunto Algoritmo di funzionamento Irdeto con emulatore linux funzionante.
1.1 Official Release
Modificato il capitolo Tips&Trcks
Eliminato il capitolo “Le Nuove Scoperte”
Aggiunto il capitolo “Gli Emulatori”
Aggiornata la tabella chiavi in chiaro Irdeto
Aggiunto il capitolo “MEDIAGUARD di SECA”

4
%HQYHQXWL

Salve a tutti quanti, questo “Nuovo Manuale per il Satellite Hacking” nasce con due precisi
scopi, il primo e’ quello di essere una guida omnicomprensiva per coloro che si accostano
per la prima volta al “Satellite Hacking”, il secondo e’ quello di offrire per i piu’ esperti una
vera e propria “Reference Guide” per quanto riguarda tecniche di programmazione,
comandi, nanocomandi ecc.
Questo manuale attinge a piene mani da validissimi documenti tuttora in circolazione che
hanno formato e formano anche adesso lo scibile disponibile su smartcard e decodificatori
satellitari, mi riferisco in special modo a “Capire Log&Crd” e ad “Activate 11”, due guide
assolutamente necessarie per cominciare a muoversi nel mondo delle smartcard e che
consigliamo caldamente a tutti quelli che intraprendono questo cammino.
Il resto viene da riflessioni, discussioni, prove, smanettamenti e chi più ne ha più ne metta
che sono emersi dai forum sull’argomento, dove tutti i membri hanno attivamente
partecipato alla compilazione di questo manuale, una nota di merito va ai valorosi membri
del Kl@n ed a Merlin in particolare, purtroppo il Kl@n ora non esiste più, distrutto
dall’invidia e dal gioco molto sporco di alcuni personaggi.
Desidero segnalarvi i siti “Istituzionali” per avre maggiori informazioni, iniziando dalla pietra
miliare del satellite hacking in italia [Link] di Tulemann, il sito di De_Koder
[Link] il sito [Link] del DigitalFreeSat team ed il sito del covo
[Link] (che tra l’altro ospitano anche questo manuale) che attualmente sono gli
ultimi baluardi della libertà digitale . J
In bocca al lupo e buon ³6DWHOOLWH+DFNLQJ´ J.

5
&HQQL6WRULFL

Tratto dal sito [Link]

Avete acceso le vostre Casse amplificate? o l’HiFi nel caso il vostro PC sia collegato a questo... bene... non
preoccupatevi... il vostro audio funziona perfettamente.. il beep che sentite è quello che sentirono i tecnici
Russi il 4 Ottobre del 1954... il primo segnale satellitare... il satellite era lo Sputnik1
Venne lanciato il 4 Ottobre del 1954, al fine di sondare la densità dell'atmosfera alta, ma la sua vita durò
poco... la sua orbita terminò il 4 Gennaio del 1958....
E' grazie a questo piccolo e "stupido" (nel senso che non si ci poteva interagire) che oggi possiamo vedere
oltre 600 canali con una sola posizione astronomica....
Dopo questo esperimento, vennero lanciati in orbita altri 2 satelliti della serie sputnik, il 2 e il 3.. ma non
ebbero grande successo... uno dei quali portò in orbita il primo essere vivente, una cagnetta di nome Laika...
la cui sorte rimase oscura (è trapelato comunque che vista l'impossibilità di farla rientrare in maniera sicura,
è stata "addormentata").. passarono gli anni.... e ci furono altri successi, ma anche fallimenti... vettori che
esplodevano poco dopo il lancio, e nella loro nube di rottami, si portavano dietro milioni di dollari di
investimenti....
In europa arrivo' il sistema satellitare ASTRA....poco potente, con un numero di canali limitato, ma
comunque sufficiente a soffisfare i bisogni dell'epoca.... poi vista la crescente richiesta di frequenze e servizi
venne messa in orbita la costellazione degli EutelSat.
La prima serie degli Eutelsat, gli EutelSat I, venne progettata dall'agenzia spaziale europea, ESA, come
parte del programma spaziale ECS (European Comunication System). Una volta lanciati e posizionati in
orbita vennero affidati alla EUTELSAT per operazioni commerciali. I satelliti vengono matenuti in orbita e
governati dalla stazione terrestre REDU in [Link] 4 satelliti lanciati tra il 1983 e il 1988 solo due sono
ancora operativi : Eutelsat F4 25.5° E e Eutelsat F5 12.5° W. Questa prima serie era dotata di 10
trasponders da 20W ciascuno, coprono una frequenza che va da 10.95 Ghz fino a 12.75Ghz, una larghezza
di banda di 72Mhz e una vita stimata di 7 anni.
Nel 1986 venne stipulato un nuovo contratto per la fornitura di una nuova famiglia di satelliti, gli EutelSat II.
Da prima si ci accordo' per una fornitura di 3 satelliti, poi nel Giugno del 1987 venne richiesto un 4° satellite,
nel Marzo 1989 un 5° e infine nel settembre del 1990 un 6°. Eutelsat II F4 e F5 vennero modificati al fine di
estendere la loro copertura a largo raggio in modo da coprire Mosca e l'area circostante.. La posizione
dell'Eutelsat II F6, battezzato HOTBIRD™ 1, venne modificata e questo satellite, assieme al Eutelsat II F1
vennero spostati rispettivamente a 13°E e a 48°E. Dei 5 satelliti lanciati tra l'86 e il 90, tutti sono ancora
operativi . Gli Eutelsat seconda serie (F1-F4) sono dotati di 16 trasponders da 50W l'uno, l'HotBird™ 1
invece 16 da 70W.
Attualmente la costellazione di satelliti Eutelsat è dotata di 200 Trasponders distribuiti su 14 Satelliti : 5
HotBird II™ (Serie W),4 Eutelsat II, 2 Eutelsat I, 2 TvSat2. Cinque satelliti rimangono ancora da costruire e
lanciare : SeSat, 2 EuropeSat 1b,2 ResSat e 2 serie W.
Grazie alla sua costellazione di satelliti HotBird II™ a 13°, la Eutelsat dispone del più grande sistema di
broadCasting del mondo. Ma ora basta parlare di Eutelsat & Co. vediamo come funziona una trasmissione
satellitare.

6
3DUWH3ULPD±3HULQL]LDUH

Cenni sulla TV via satellite

Tratto dal sito [Link]

...............................................................................................

Il principio di funzionamento, grosso modo è così... la stazione di terra trasmette il segnale Audio/Video
verso il satellite tramite grosse antenne paraboliche e su determinate frequenze dette di "UpLink", il satellite
riceve questo segnale, lo amplifica e lo ritrasmette verso terra, in una determinata zona geografica (stabilita
dal Foot Print, e su di una specifica frequenza (diversa dalla prima) detta di "DownLink", noi tramite la nostra
parabola riceviamo il segnale, il quale viene processato dal ricevitore e visualizzato dalla TV...ma andiamo
un po' più nel dettaglio...

7
Il satellite è dotato di diverse frequenze di UpLink, una per ogni trasponder, un satellite standard è dotato di
circa 10 trasponder, in linea teorica, quindi, è in grado di ricevere e ritrasmettere 10 canali diversi... la cosa
pero' è alquanto antieconomica, sopratutto per le emittenti che si toverebbero a pagare fior fior di quatrini per
affittare una frequenza... allora che si può fare???? Ci viene in aiuto il Digitale... infatti grazie alla tecnica del
"MultiPlexing" il satellite è in grado di ricevere e trasmettere dai 5 ai 10 canali per frequenza (Segnali
Audio/video e dipende dalla compressione...), quindi ogni satellite è in grado di gestire circa 100 canali Tv
contemporaneamente (ecco perchè siamo in grado di ricevere + di 600 canali dalla costellazione a
13°e)...Ma come funziona questo "Multiplexing"... Il funzionamente (spiegato a grandi linee) è molto
semplice, due o più segnali vengono suddivisi ognuno in tanti pacchetti ogni tot tempo, quindi vengono
mischiati nel segnale principale un pacchetto alternato all'altro, in questo modo :

Il risultato è che in un unico "stream di dati" (si chiama così il "fiume" di informazioni contenute su di un unica
frequenza) si hanno + segnali diversi, e quindi più canali. Una volta che il segnale Multiplexato raggiunge il
nostro fido ricevitore, l'elettronica di questo si occupa a eseguire il processo inverso, ovvero il Deplexing

8
Questo è uno dei fattori che determina la velocità con cui un ricevitore cambia canale, più l'elettronica
montata è potente e veloce, più il deplexing viene eseguito rapidamente, quindi avremmo un cambia canale
sempre più simile alla tv terrestre. Il Multiplexing non viene eseguito solo da stazioni a terra (varie emittenti
mandano il segnale verso un unico centro in cui viene multiplexato e trasmesso verso il satellite) ma anche
dal satellite stesso.. Infatti tramite il servizio SkyPlex (ecco cos'erano quei canali..) ogni emittente può
trasmettere autonomamente il proprio segnale verso il satellite senza passare per il centro servizi, infatti sarà
il satellite stesso ad effettuare il Multiplexing del segnale, direttamente a bordo.. (non tutti i satelliti mettono a
disposizione questo servizio..).
Prima abbiamo parlato di compressione.. ebbene si, i segnali Digitali vengono compressi, con lo stesso
sistema dei Filmati MPEG (gli stessi usati dai videogiochi per intenderci...) quindi non di rado capita di
vedere canali in cui si comincia a notare lo "scubettamento" dovuto alla forte compressione. Più
compressione = Meno banda occupata = meno costo di affitto = più canali sulla stessa frequenza. Possiamo
notare infatti che le radio, le quali richiedono meno larghezza di banda, possono essere anche + di 10 per
ogni trasponder. La qualità audio resta ai massimi livelli, qualità CD, ovvero 44.1 Khz compressi, un po'
come succede negli MP3.
Ora che abbiamo capito come funziona la Tv via satellite saremo in grado di stabilire come mai non
riusciamo a ricevere il canale X , ovvero, se è colpa del puntamento della nostra Parabola (non riceviamo
nessun altro canale presente sullo stesso trasponder del canale X), oppure se è un problema dell'emittente
di quel canale (gli altri canali presenti sullo stesso trasponder vengono ricevuti).

9
CAM e SmartCard – La Pay TV
La Pay TV satellitare è un estensione della TV via satellite solo che le trasmissioni sono crittografate e quindi
visibili solo a chi ha sottoscritto un regolare abbonamento con l’emittente.
Per dedodificare i programmi l’emittente fornisce una scheda intelligente chiamata “SmartCard”, nella
SmartCard vi è un chip che si occupa di comunicare con un Modulo di Accesso Condizionato (CAM)
compatibile con la SmartCard ed inserito nel decoder, questa accoppiata fornisce la chiave per
decrittografare il segnale televisivo digitale.
Esistono diversi standard di SmartCard (IRDETO, SECA ecc.), per ogni standard esistono diverse
SmartCard, eccone un breve sunto :
- SmartCard ufficiali, sono delle SmartCard che vengono fornite dietro abbonamento ad una PayTV e
permettono la visione dei programmi per i quali si è abbonati.
- SmartCard “Welcome Kit”, sono le piu’ ambite, normalmente erano vendute senza abbonamento da D+,
contengono 10gg di visione gratuita di alcuni canali crittografati, dopo tale tempo i canali vengono
oscurati e bisogna fare un abbonamento.
- SmartCard chiamate MOSC (SmartCard Originale Modificata), queste sono delle SmartCard originali
disattivate dall’emittente per annullamento dell’ abbonamento o per altri motivi
- SmartCard DPSC (Digital Pirat Smart Cart), sono delle Smartcard Pirata create ex-novo non dall’
emittente, ma bensi’ da organizzazioni internazionali che producono SmartCard compatibili con le
originali e che possono contenere anche piu’ emittenti crittografate, queste SmartCard di solito sono
molto costose ed hanno il vantaggio che sono completamente sconosciute alle emittenti e quindi
garantiscono una “privacy” all’eventuale acquirente.
Attualmente tutti questi tipi (ad eccezione delle DPSC che formano un caso a parte e sono “manutenute”
direttamente dal produttore tramite aggiornamenti ad hoc) possono essere modificati o riattivati con una
semplice attrezzatura ed i debiti comandi (crd).

Ecco un estratto dal sito [Link] per chi sa l’inglese potrebbe essere interessante sapere come
funziona a grandi linee il sistema PayTV IRDETO :

6QLS!

1DUURZ&DVWLQJ

0&U\SWIRU1DUURZFDVWLQJ

M-Crypt for Narrowcasting is the ideal solution for the protection of programming anging from sports and
adult content to distance learning and business TV. M-Crypt for Narrowcasting runs on a standard PC
platform and does not require you to employ any 'rocket scientists' to keep your services On Air.

10
We offer you 15 years of Pay-television expertise at the lowest start-up and operational costs: Creating new
business for people who appreciate today’s opportunities of globalization.
The basic M-Crypt for Narrowcasting package features subscription television, mail and announcement
messages and a compact Subscriber Management System (SMS).
Doesn’t your business require a Customer Service Organization? M-Crypt for Narrowcasting comes with the
option of auto-expiring smart cards (e.g. after 12 months) or debit cards for purchasing a maximum number
of programmes.
M-Crypt for Narrowcasting uses patented high speed key-cycling and has proven itself as unbeatable
security for the most challenging content! Contact us any time for more information.

Key Benefits

Minimizes your cost of ownership: From installation to operation!


Integrated with a wide variety of multiplex equipment vendors and Set Top Box manufacturers.
Includes basic Subscriber Management System for subscriber authorization and history tracking.

%URDG&DVWLQJ

0&U\SWIRU%URDGFDVWLQJ

The M-Crypt for Broadcasting modular approach allows you to grow your business, adding functionality and
capacity at your own pace. M-Crypt for Broadcasting supports up to 250 thousand subscribers and can be
upgraded to our next generation conditional access system, handling a wealth of digital services for millions
of subscribers.
You can start with a basic offering of digital subscription services, either locally generated programmes or
re-distributed from satellite. Then enhance your platform by offering your customers an Electronic
Programme Guide with service and programme information. A next step could be to make more of your
bandwidth by providing a bouquet of Near Video On Demand services.
Sell these using Pay Per View, either by letting the customer order ahead (OPPV) or on pure impulse (IPPV).
Or run a range of OpenTV applications for the real interactive experience. 7KHFKRLFHLV\RXUV

6HW7RS%R[

Your choice of digital services will determine the specification of a set top box (STB) to meet your associated
requirements. Our set top box experts can help you specify the requirements and negotiate a price with the
manufacturers. Set top boxes may be chosen with cost-efficient integrated conditional access, or using the
standardized common interface module.
Irdeto Access technology has been integrated with a wide range of ox (STB) manufacturers.

+HDGHQGHTXLSPHQW

M-Crypt for Broadcasting supports the DVB standard interfaces and can therefore be used with any of the
major head-end brands. The Irdeto Access Stand-Alone Scrambler can be used if the preferred head-end
brand is not DVB simulcrypt compliant.

11
&XVWRPHU&DUHDQG%LOOLQJ

M-Crypt for Broadcasting interfaces easily with customer care and billing systems to manage customer
subscriptions. The M-Crypt interface has already been implemented by major vendors and is available to
other parties upon request. The M-Crypt package also includes a compact Subscriber Management System
(SMS) for entering standard subscriber details and tracking customer history.

6HFXULW\

When broadcasting quality content to a large audience, security is essential. Subscriber authorisations are
secured using the latest generation of smart cards. Auto-expiring authorisation prevents customers from
unauthorised access.
M-Crypt for Broadcasting uses a patented concept of a multi-level key hierarchy to protect your content. Key
cycling for all smart cards is handled within a few seconds to prevent any key attack, ensuring a highly
reliable protection for your business.

6QLS!

12
Tipologie di ricevitori

Per vedere la nostra bella TV via satellite, dopo aver montato parabola ed illuminatore dobbiamo installare il
famoso decoder, ma quale?
Sul mercato ci sono moltissime tipologie di ricevitori satellitari, quelli che interessano a noi sono i ricevitori
digitali, in particolar modo quelli che si possono adattare a più standard (Irdeto, Seca ecc. ecc.), di seguito
andremo ad elencare brevemente quelli che a ns. giudizio sono i puù diffusi in Italia :

1RNLD±0HGLD0DVWHUVHULH±±

Il Nokia MediaMaster si può dire che “E’ IL RICEVITORE” per antonomasia, è il ricevitore digitale più diffuso
al mondo, per esso sono disponili moltissimi accessori, non per ultimo il famoso firmware del [Link]
“DVB-2000” che aggiunge moltissime funzionalità al MediaMaster, non per ultime quelle di poter “loggare”
direttamente (senza interfacce di tipo season) e di implementare un “blocker” via software. Il MediaMaster si
collega al Personal Computer tramite un interfaccia DVB che permette il logging e l’upgrade del firmware, in
italia viene fornico con CAM IRDETO.

'DWL7HFQLFL1RNLDV
&DSDFLWjGHOVLVWHPD 5LVRUVHSHUDSSOLFDWLYLGHOVLVWHPD &RQWUROOR9&5

3LHQDPHQWHFRPSDWLELOHVHFRQGROR 3URFHVVRUH0RWRUROD &RQQHWWRUH[5&$&LQFK

VWDQGDUG'9% 0+]

0HPRULD5$00E\WHNE\WHV

HVWHQVLRQH

0HPRULD)ODVK0E\WH

*UDILFKH'LVSOD\[

$FFHVVRFRQGL]LRQDWR 'HPRGXODWRUH ,QJUHVVR/1%7XQHU

6ORW3&0&,$QRUPD'9% 6LVWHPD436. &RQQHWWRUHWLSR)

6WDQGDUG,UGHWR 6\PEROUDWH06V )UHTXHQ]DG LQJUHVVR0+]

/DUJKH]]DGLEDQGD0+]

&DQDOHGLULWRUQR 7HOHFRPDQGR 'HFRGLILFDWRUHYLGHR

3UHGLVSRVWRPRGHP9ELVR9ELV &RGLFH,515& 03(*0DLQ3URILOH#0DLQ3URILOH

'LVWDQ]DG XWLOL]]R0DVVLPRP )RUPDWLGLYLGHR

%DWWHULH[9 WLSR$$$ 'DWDUDWHVILQRD0E\WHV

3DQ 6FDQ/HWWHUER[

6FDUW ,QWHUIDFFLDGDWL 'DWLJHQHUDOL

6FDUW79 9LDSRUWDVHULDOH56 &RORUH1HUR

5*%&9%6$XGLR ,QWHUIDFFLDPDVVLPRNEDXG 7HPSHUDWXUDGLODYRURƒ&ILQRDƒ&

6FDUW9&5 7HPSHUDWXUDVWRFFDJJLRƒ&ILQRDƒ&

&9%6$XGLR &RUUHQWHHOHWWULFD9$&“ 

6FDUW'HFRGHU6$7 +]

5*%&9%6$XGLR &RQVXPR0DVVLPR:

,Q6WDQGE\:

3HVR.J

/[$[3[[PP

'HFRGLILFDWRUHDXGLR 8VFLWDDXGLRKLIL 8VFLWDGLFRQWUROOR

03(*, ,, 0XVLFDP$XGLR &RQQHWWRUH[5&$&LQFK 7HQVLRQH9

0RQR'RSSLRDXGLR6WHUHR-RLQW6WHUHR 6LQLVWUD'HVWUD &RQQHWWRUH[5&$&LQFK

,QWHUIDFFLDGDWLDOWDYHORFLWj )RUPDWL&' ,QWHUIDFFLD,5

9LDFRQQHWWRUH &''$&'520;$9LGHR&' $YLH[FRQWUROORGLXQ9&5

SLQ6&6,

13
)5$&$552±3ODQHW3/

Questo è uno dei ricevitori che Stream distribuisce in comodato d’uso a chi richiede il noleggio del decoder,
compatibile con l’Italtel è un ricevitore senza infamia e senza lode compatibile con lo standard open-tv.

'DWL7HFQLFL)5$&$5523ODQHW3/

Ricevitore Digitale Free-to-Air


Frequenza ingresso 950-:-2150 MHz
Larghezza di banda 36 MHz
Demodulatore QPSK (ETS 300421)
Sistema di codifica canale DVB
Formato video 4:3, 16:9
Connessioni AV 3 Scart, 2 Rca audio
Modulatore PLL 21-69
Interfaccia seriale RS 232

14
Hardware

Attualmente per interagire con le SmartCard è necessario utilizzare dell’HardWare apposito che si interfaccia
con un personal computer attraverso una porta seriale, essendo questi dispositivi frutto di progetti non
ufficiali è generalmente difficile trovarli già costruiti, per questo su [Link] è presente un area
dove poter scaricare i files con gli schemi per autocostruirsi questi dispositivi. Inoltre girando sui forum del
satellite hacking di solito si trovano informazioni su come reperire questo tipo di hardware già costruito. Ma
andiamo per gradi, direttamente dal sito [Link] un estratto dell’hardware disponibile al
momento :

,QWHUIDFFH

Interfaccia Season

E’ la più vecchia e famosa, ma anche attualissima, delle interfacce realizzate nel campo. L’idea è di Markus
Khun, di cui riproduciamo l’originario documento [Link]. Consiste in una basetta molto sottile (max
0.8mm) che riproduce i contatti ISO7816 delle card, per essere inserita nel decoder. Dall’altra parte termina
con un connettore seriale per il PC. La realizzazione non è particolarmente difficoltosa (per chi, non come
me, è un elettronico provetto) ed i componenti sono abbastanza economici. L’unica grossa difficoltà consiste
nel trovare basette così sottili, e realizzare i contatti ISO in maniera precisa. Viste le richieste da parte dei
possessori di decoder non Nokia, abbiamo deciso di produrre anche questo tipo di interfaccia, qui sotto il
prototipo.

L'interfaccia è stata studiata per minimizzare il rischio di rottura del ricevitore digitale. Può essere usata in
maniera passiva, ma all'occorrenza può essere alimentata. Alcuni decoder infatti sono dotati di un sistema di
protezione per la smart card tale da togliere l'alimentazione in caso di assorbimento anomalo di corrente. In
questi casi è necessario alimentare l'interfaccia.

Logger

Come la Season, ma con slot per smart card. Al contrario della precedente, il logger passivo non è in grado
di emulare la card tramite software, ma può loggare lo scambio dati fra decoder e smart card con programmi
quali soft62. Anche in questo caso è prevista la possibilità di alimentare l'interfaccia, anche se solitamente
non è necessario.

Phoenix e Smartmouse

15
Sono due tipi di interfaccia PC-Smartcard. Ne esistono diversi tipi, quelle che proponiamo hanno oscillatori
da 3.57 e 6MHZ. Servono ad inviare comandi alle smartcard, sia quelle cloni, sia quelle ufficiali. Attualmente
la phoenix viene utilizzata principalmente con smartcard Irdeto ufficiali.

Caratteristiche

La phoenix ha il quarzo a 6MHz, connettore per alimentazione e connettore seriale 9pin femmina.

Si tratta di un interfaccia compatibile con i programmi più in voga del momento (cardmaster, Irdeto98…).

Lo smartmouse è in realtà una doppia interfaccia che impropriamente viene chiamiata smartmouse, poiché
incorpora l’originale smartmouse a 3.57MHz e la phoenix a 6MHz. Si può selezionare facilmente con i
jumper il tipo di interfaccia (phoenix-smartmouse) ed il circuito oscillante (3.57-6MHz).

Blocker & Dual-Blocker

ATTENZIONE!!! Incompatibile con Nokia 9600 e CAM CI


E' un'interfaccia composta da una basetta molto sottile (max 0.8mm) che riproduce i contatti ISO7816 delle
card. Sulla parte posteriore è alloggiato uno slot in cui viene inserita la smart card. Un PIC16F84
opportunamente programmato si occupa di intercettare gli ECM provenienti dal Provider. Anche in questo
caso il PIC viene alloggiato nello zoccolo, pronto per essere riprogrammato all'occorrenza. Il dual-blocker ha
le stesse funzioni del blocker ma con doppio inseritore per smart card. Il PIC in questo caso gestisce anche
lo scambio tra le due card.

Interfaccia DVB

L’interfaccia DVB è un dispositivo che permette di collegare il ricevitore Nokia MediaMaster al PC per
l’aggiornamento del firmware del MediaMaster e per altri scopi (vedi logging).

16
Programmatore di Pic LUDIPIPO

Il programmatore di Pic LUDIPIPO nasce dall’esigenza di programmare i PIC 16Fxx 12cxxx e le 24c/fxx che
sono i microcontrollori e le EEProm che governano i vari Blocker, SuperBlocker e WaferCard (SECA),
semplice da realizzare oggi si trova a pochi soldi già costruito.

17
Software

Vediamo ora quali software sono disponibili su Internet per comunicare con la nostra SmartCard, questi
software sono stati prodotti da volenterosi hacker per interagire con SmartCard conformi allo standard
ISO7816-3, questo vuol dire che riescono a comunicare con la stragrande maggioranza delle SmartCard
utilizzate dai ricevitori satellitari, dai telefoni gsm e dai sistemi di sicurezza informatici
Attenzione, non vuol dire comunque che comunichino correttamente, i software che elencheremo sono stati
scritti per lavorare quasi esclusivamente sulle SmartCard satellitari Tedesche ed Italiane.
Possiamo affermare che se in un primo momento i tedeschi erano i leader indiscussi in questo campo, ora
grazie a personaggi del calibro del JJ Group o di Mr.X possiamo vantare anche noi una posizione di tutto
rispetto.

&DUG'HYLO

CardDevil è un programma DOS, gira correttamente anche sotto W95,98,NT con l’unica limitazione della
lunghezza del nome dei files (classica 8+3), è un programma semplice ma contemporanemente molto
funzionale e potente, specie per le macro aggiuntive di gestione delle chiavi, un fatto positivo da notare è
che seppur più lento di CardMaster, CardDevil riesce a scovare la corretta signature anche quando andiamo
ad inserire una PlainKey con il comando 5F(CC).
CardDevil al collegamento con la SmartCard dà come informazioni la risposta all’ ATR (AnswerToReset) in
formato esadecimale, il country, i ProvidersID ed altre informazioni.

Di seguito riportiamo una breve introduzione all’utilizzo di CardDevil inviata da FabMar :

18
8WLOL]]RGL&DUG'HYLO9

Questa è la videata di avvio del programma CardDevil V. 1.1

Cdevil è, per la semplicità del suo utilizzo, il miglior programma di scrittura per Smart Card, per i principianti
e per chiunque si affaccia al satellite hacking. E’ ovviamente abbinato ad un programmatore di smart quale
Smart Mouse a 3,5 o 6 Mhz o Multimouse 98 a 3,5 Mhz.
Semplicissimo nel suo utilizzo prevede 4 tasti per le funzioni base:
Il primo passo è quello del settaggio della porta seriale da utilizzare; Per fare questo premere F4

e premere 1, 2, 3, 4 a per impostare la Com nella quale avete collegato il programmatore; Dovete poi settare
i ponticelli del Programmatore (ovviamente fate riferimento al manuale dello smartmouse o del multimouse);

19
Il tasto I abilita la funzione Invert del programma e il tasto C cambia la frequenza di Clock del
programmatore. Attenzione quanto modificato in questa finestra deve corrispondere nei settaggi del
programmatore, altrimenti otterrete un messaggio CARD ERROR.
Terminato il settaggio dei ponticelli premete F1 per caricare i dati della Smart:

A questo punto potete caricare i crd che volete premendo il tasto F3. Ricordatevi che Cdevil supporta nomi
di file MS-DOS (Max 8 Char). Per disconnettere il programmatore premete nuovamente F1 e per terminare
la sessione di lavoro premete F10. L’ultima release di CardDevil prevede l’utilizzo del tasto F8 per creare un
file .bat da utilizzare con XSU4 che permette di loggare lo scambio di dati tra la cam e la smart
corrispondente al ser. Hex e al prov ID della card che stiamo utilizzando (ovviamente si può loggare
utilizzando un’interfaccia tipo season oppure modificando le impostazioni del DVB argomenti trattati nella
giusta sezione). Un’altra cosa da aggiungere è che Cdevil non visualizza le risposte della smart a seguito dei
comandi inviati; per vedere tali risposte utilizzare altri programmi quali card master ecc...
Un’ultima cosa, il programma funziona sia in DOS puro che in finestra Windows 95.

20
&DUG0DVWHU

CardMaster viene oggi considerato uno dei migliori software per l’utilizzo di interfacce SmartMouse/Phoenix,
disponibile sia in tedesco che in italiano (Trad. by Ghost) per piattaforme Win32, il sottoscritto lo usa sia su
W98 che su NT4, è semplice da utilizzare e molto completo, utilizza le macro standard per files crd e all’atto
della connessione con la SmartCard visualizza le seguenti informazioni :

- ATR, Sia esadecimale che in formato ascii


- HexSerial, Ascii Serial
- ProviderID, BackupProvID, Datestamp per ambedue i providers

Attenzione, CardMaster purtroppo è un software “delicato”, non sono infrequenti impallamenti e bloccaggi
perlopù dovuti al maledetto Windog ed a tutte le sue incasinate dll, se non vi funziona una versione provate
con un'altra (Italiana, tedesca, versioni più vecchie ecc.) sicuramente troverete quella che gira sul vostro
sistema!

&DUG:L]DUG

CardWizard è un altro bel software, purtroppo non è molto utilizzato anche perché è disponibile solo in
tedesco, e quindi poco utilizzabile qui in italia (sembra che dalla versione 0.99 ci sia la possibilità di utilizzare
anche la lingua italiana).

21
Caratteristiche fondamentali di CardWizard sono :

- La Varsatilità, il programma è omnicomprensivo, si può utilizzare per la programmazione bruta e per la


generazione dei crd.
- Sono presenti funzionalità per la gestione delle chiavi e per l’archiviazione delle stesse
- Possibilità di entrare in “Expert-Mode” per definire il comportamento del programma ed altre diavolerie
- E’ possibile utilizzare macro specializzate e con possibilità di ciclo dei dati inviati alla SmartCard ecc.

Questo Software è particolarmente indicato per elaborazioni avanzate e complicate delle SmartCard,
utilissimo il tasto “reanimate” che permette la rianimazione di una scheda azzerata, inoltre nelle ultime
versioni (al momento della pubblicazione l’ultima è la 1212) è possibile specificare azioni ripetitive con
contatori che variano, è ottimizzato per lavorare in “Program Mode” quindi non invia RESET a meno che non
glielo specifichiamo, ha cicli con istruzioni del tipo “If Then”, specificare e registrare signature [Link].
Se si vuole smanettare a fondo con una smartcard questo è il software più indicato.

&UHD&5' 3URJUDPPHU

Ahhhh finalmente un bel prodotto italiano, completo interessante, semplice e funzionale, sì, debbo dire che
questo software mi piace proprio, è di sicura utilità sia a chi è alle prime armi sia a chi deve smanettare
intensamente sulle proprie cards, CreaCRD&Programmer è un MUST che tutti dovrebbero avere.

22
Il programma è stato scritto per piattaforme W32, gira correttamente su W98 e NT4, il JJ Group lo tiene
costantemente aggiornato, è disponibile gratuitamente sul suo sito [Link] e soprattutto è
J
completamente in ITALIANO cosa non indifferente.

Non appena avviamo il programma ci si presenta la schermata principale che al contrario di altri ci mostra la
parte di generazione dei files crd, questa parte è particolamente curata e ci fornisce le sequenze più
utilizzate sottoforma di pulsanti, in questa maniera ci vuole veramente poco per prepare un crd standard :

23
Il Software ci permette di archiviare per ogni provider i suoi channel-id (de default ha una nutrita schiera di
providers e channel-id) ed ha già i gruppo di istruzioni per il dump su ACS 1.2. Inoltre una volta creato il
nostro crd ci dà la possibilità di provarlo immediatamente sulla nostra scheda grazie al modulo per la
programmazione che si interfaccia ad un programmatore Phoenix o SmartMouse

Il modulo di programmazione non è avanzatissimo come il CardMaster, ma completo e funzionale, riporta


tutte le informazioni essenziali e compie il suo lavoro egregiamente, non ho alcun dubio che il JJ Group lo
svilupperà ulteriormente sino a renderlo ancora più potente del CardMaster.
Infatti non sono stato smentito, JJ ha sviluppato ulteriormente il programma, la versione 2.91 è a dir poco
stratosferica, ecco le novità direttamente dal sito di JJ :

“Finalmente pronto il Crea Crd & Programmer 2000 (2.9.1) che permette di creare comandi ed inviarli al
programmatore di SC (Phoenix o Smartmouse 6Mhz del quale proponiamo il nostro progetto) per compiere
esperimenti ed esclusivamente quelli sul sistema di codifica IRDETO.
Il Programma permette di creare crd di attivazione e Kill utilizzando un database di chid modificabile, creare
crd per le key (MK e key generica con una certa data) indicando il prov id o il serial hex della carta.
I dati verranno ricercati nel data base creato dal logger (attualmente shareware!) del CCTeam scelto per la
buona archiviazione dei dati e dall' Mlog.
Inserita anche la generazione di crd per plainkey e plainMkey per le varie ACS.
La sezione di programmazione permettere, durante l'invio dei crd, di mostrare il traffico (comando inviato e
risposta della smartcard) ed interpretarlo: errore di signature, comando non accettato, non diretto a me, etc.
Sono gestiti anche gli errori nella scrittura dei crd (lunghezza). I macrocomandi sono gestiti e compatibili
(vedi Cardmaster).
I crd possono essere caricati, importati dopo la loro creazione con il crea_crd o editati a mano (cliccando
nella finestra dei crd).
Finestra con l'elenco dei Chid presenti nella carta comprensivi di date e tmr.
Implementata anche l'estrazione delle plainkeys e plainmk (1.2 .. 1.6) in modo automatico (avendo un log) o
in modo manuale.”
Date retta a me, a breve questo software potrebbe diventare il diretto antagonista di CardWizard, anche
perché JJ lavora a stretto contatto con i membri del forum SinExpert di DigtalSin, insomma, un software
veramente bello… BRAVI JJ-GROUP!!! J

24
&OLQLNDE\+DNHU

Questo è un software nato nel SinPosium Expert di DigitalSin ed uscito senza l’autorizzazione del creatore
suppongo per vie traverse, all’avvio è richiesta una password che è SinExpert (rispettare maiuscole e
minuscole), il programma supporta nuove macro crd per il dumpkey ed il force-mode per schede 0300/730.
La cosa che mi lascia perplesso è che se questo programma come dice il file allegato è stato progettato per
uso esclusivo degli esperti del SinExpert (Forum esclusivo di DigitalSin per gli esperti di Irdeto, ci si accede
solo tramite password fornita da Tulemann direttamente) perché ha tutte queste macro per l’inserimento di
PlainKey? Forse per la creazione di schede multipacchetto? Strano, visto che questo è stato condannato
(giustamente) dagli esperti come possibile fonte di guadagno per chi commercia illegalmente.
Di seguito riporto il file di documentazione allegato :
E’ pronto il nuovo Programma per gli Expert di Digital Sin:
Funzionamento analogo a card master solo con funzioni macro per le dump key, e il Force-mode per le
300 con serial ascii a 730 o 0000000!
Opzioni:
R0 - Card reset
T0 -Legge il date corrente del Provider 00 (2 Bytes)
T1 -Legge il date corrente del Provider 10 (2 Bytes )
S0 -Legge il serial number in HEX (3 Bytes )
S1 -Termina la strigna e prova tutte le 256 possibilità una dietro l'altra
P0 - Legge il set del Providergroup 00 inserisce (2 Byte)
P1 - Legge il set del Providergroup 10 inserisce (2 Byte)
P2 - Legge il set del Provider 00 inserisce (3 Byte)
P3 - Legge il set del Provider 10 inserisce (3 Byte)
''''''''''''''''
nuove funvioni
k0(mk1 mk2 mk3 mk4 mk5 mk6 mk7 mk8)k0 - Dump Masterkey
k1(NN k1 k2 k3 k4 k5 k6 k7 k8)k1 - Dump key dove NN = Numero key
k2(pk1 pk2 pk3 pk4 pk5 pk6 pk7 pk8)k3 - Creazione super Crd
k3(mm1 mm2)k3 - Creazione Super Crd per 2 posizioni di memoria
k4(mm1 mm2)k4 - Creazione Super Crd per 4 posizioni di memoria

m0(xx)mo -Inizio Posizione Della Memoria sulla quale scrivere (solo in collegamento con k0 o k1)
m1(xx)mo -Fine Posizione Della Memoria sulla quale scrivere (solo in collegamento con k0 o k1)

esempio k0-Recupero PlainMasterKey + Preparazione CRD


---------
k0(mk1 mk2 mk3 mk4 mk5 mk6 mk7 mk8)k0 m0(72)m0 m1(76)m1
k0(ae bf cd 98 74 f6 bc a3)k0 mo(72)m0 m1(76)m1

--------------------------
esempio k1-Recupero PlainKey + Preparazione CRD
---------
k1(NN k1 k2 k3 k4 k5 k6 k7 k8)k1 m0(72)m0 m1(76)m1
k1(02 ae bf cd 98 74 f6 bc a3)k1 m0(72)m0 m1(76)m1
dove NN = numero key (in questo caso key02)

--------------------------
esempio k2- Creazione Super CRD
---------
k2(pk1 pk2 pk3 pk4 pk5 pk6 pk7 pk8)k2 m0(72)m0 m1(76)m1
k2(ae bf cd 98 74 f6 bc a3)k2 m0(72)m0 m1(76)m1

--------------------------
esempio k3- Creazione Super CRD per 2 posizioni di memoria
---------
k3(pk1 pk2)k3 m0(72)m0 m1(76)m1
k3(ae bf)k3 m0(72)m0 m1(73)m1

--------------------------
esempio k4- Creazione Super CRD per 4 posizioni di memoria
---------
k4(pk1 pk2 pk3 pk4 pk5 pk6 pk7 pk8)k4 m0(72)m0 m1(75)m1
k4(ae bf cd 98 74 f6 bc a3)k4 m0(72)m0 m1(75)m1

"la password di accesso la troverete su digital sin Expert"


se avete consigli o suggerimenti :
Digital Sin Sezione Expert
haker_ic2@[Link]

ciao a tutti

25
haker

26
6XSHU&OLQLNDE\+DNHU

Questa nuova versione di Clinicka ora si evolve in SuperClinika e cambia anche veste grafica oltre che ai
contenuti, infatti adesso è presente anche un superlogger che oltre le comuni caratteristiche dei vari logger
che sono attualmente disponibili in rete dà la possibilità di loggare contemporaneamente con addirittura tre
dispositivi, due seasons ed un interfaccia SCSI (Nokia). Sinceramente non vedo l’utilità di loggare con tre
dispositivi comtemporaneamente, ma se è stato implementato sicuramente un motivo ci sarà stato.

Come il suo predecessore, SuperCliniKa è un prodotto partorito dal sinposium SinExpert di Digitalsin, un
ottimo prodotto che sicuramente entra a far parte dei software “MUST” che ognuno dovrebbe almeno
provare, Andiamo ora ad esaminare le nuove e succulente caratteristiche di SuperClinika, a parte il logger,
troviamo delle novità eclatanti nella sezione del programmatore, infatti salta immediatamente agli occhi la
nuova funzionalità di riprogrammazione delle schede “730” con la possibilità di creare un CRD
personalizzato con i dati di una particolare scheda, inoltre è presente una funzione di interrogazione ed
archiviazione dei Channel-ID, delle funzinalità di dumping e di gestione Masterkeys, la possibilità di gestire i
files .ICP e molte altre cosette.

27
28
&UHD]LRQH&5'E\=LR%LOO

Questo non è un vero e proprio programma, in realtà è una bella applicazione scritta dallo Zio Bill per
Microsoft Access ’97, tutto sommato veramente un bel lavoro anche se migliorabile (sembra che il vecchio
Zietto stia lavorando ad una versione compatibile con Office 2000 ed ulteriori migliorie). Una volta caricato il
file mdb, access ci propone una bella schermata dove inserendo i vari dati nelle caselle e premuto il tasto di
generazione crd ci si apre Word con il nostro bel crd compilato… Un Bel lavoretto interessante, vista anche
la possibilità di archiviazione delle chiavi e dei chid… Bravo ZioBill.

29
3DUWH6HFRQGD±3HUDQGDUHDYDQWL

La Smart Card IRDETO


La SmartCard Irdeto è una scheda “intelligente” che ci permette di vedere “in chiaro” i programmi che
vengono trasmessi “crittografati” con il sistema Irdeto.
Questo vuol dire che se si sottoscrive un abbonamento ad una PayTV (PTV) che trasmette con codifica
Irdeto, ci verrà fornita una SmartCard che ci permetterà di vedere in chiaro i canali di quella PTV per i quali ci
siamo abbonati.
La scheda per funzionare correttamente ha bisogno di una “controparte”, che si chiama CAM (Modulo di
Accesso Condizionato), anche esso deve essere compatibile con lo standard Irdeto, insieme questi due
moduli permettono la visione in chiaro della PTV.
All’ interno della SmartCard e’ presente un microprocessore di tipo TamperedProof (a prova di scasso),
questo vuol dire che se proviamo fisicamente ad estrarre il microprocessore dalla scheda, esso si
autodistruggerà, la stessa triste fine la otterremmo se tentassimo di estrarre completamente tutti i dati
(lettura fisica di tutta la scheda) dalla SmartCard.
A questo punto evinciamo che l’unica maniera per interagire con la scheda è quella di comunicare tramite il
set di istruzioni utilizzate per lo scambio di informazioni tra CAM e SmartCard, l’unico problema e’ che
IRDETO si guarda bene dal rendere pubbliche queste informazioni, quindi l’unica maniera per tentare di
capire come funziona questo processo è quella di analizzare il flusso delle informazioni che transitano tra
CAM e SmartCard e compilare poi una specie di reference-guide.
A complicare il discorso è il fatto che esistono naturalmente più versioni del sistema operativo (ACS) Irdeto
caricato sulla SmartCard, si è scoperto che la maggior parte dei comandi viene comunque accettato a
prescindere dalla versione del S.O., la programmazione viceversa no.

30
Funzionamento della SmartCard IRDETO
Bene, vediamo ora come funziona in dettaglio una SmartCard Irdeto.
Una volta inserita nel decoder, si instaura una comunicazione tra CAM e SmartCard, i dettagli di questa
comunicazione li vedremo nel prossimo capitolo, a grandi linee avviene questo :
La CAM invia un reset alla SC che le risponde inviando la versione del sistema operativo, la CAM poi
richiede alla scheda di identificarsi con il serial number (ascii ed esadecimale), e con altre informazioni
riguardanti l’emittente, il paese (Italia, Germania ecc. ecc.), poi la CAM invia la propria chiave, le chiavi di
decodifica per la smartcard inserita ed un comando contenente l’identificativo del canale (Channel-ID) e la
chiave di decodifica del canale crittografata. A questo punto la SmartCard opera delle verifiche con le chiavi
in suo possesso se le verifiche sono positive, la SmartCard dà l’OK per la visione del canale e fornisce la
chiave di decodifica alla CAM, quindi la CAM comincia la decodifica.
In dettaglio (nelle pagine seguenti verrà pubblicato l’algoritmo) la SmartCard non fa’ che crittografare con un
algoritmo DES-Like la/le chiavi di canale che la CAM invia con il comando 01 05 utilizzando come chiavi di
codifica la PlainKey relativa al canale selezionato e la data, il risultato di questa crittografazione viene
ricrittografato utilizzando la chiave che la CAM aveva inviato precedentemente con il comando 01 02, il tutto
viene inviato come risposta al comando 01 05 ed il gioco è fatto.
A questo punto il sistema funziona correttamente e noi possiamo goderci un bel film o una bella partita
seduti comodamente a casa nostra, esaminiamo ora quali sono le informazioni fondamentali che servono ad
una SmartCard Irdeto per funzionare :

Ogni SmartCard "IRDETO" viene identificata da un numero seriale esadecimale HexSerial :

- HEX SERIAL - lunghezza 3 bytes

In Ogni SmartCard possono essere memorizzati due Providers o Emittenti, essi sono identificati con i numeri
"00" o "10"

- PROVIDER - lunghezza 1 byte

Ad ogni Provider viene associata una data DateStamp di sistema che viene aggiornato automaticamente
dall’emittente :

- DATE-STAMP - lunghezza 2 byte

Tramite l'Hex Serial si ottiengono dal Provider della SmartCard (Stream, Telepiu' ecc. ecc.) una MasterKey
ed un ProviderID, la MasterKey è la chiave associata al ProviderID (o meglio è associata al ProviderGroup
come vedremo nel prossimo passo, quindi è valida per i 256 ProviderID appartenenti allo stesso
ProviderGroup) memorizzato in uno dei due Provider ("00" o "10", generalmente lo "00") ed una volta
decrittografata (PlainMasterKey) è la chiave utilizzata per la decrittografazione delle KeyProviderGroup.
Il Provider-ID puo' essere cambiato o modificato solo fornendo la sua MasterKey!! (pena la mancanza di
aggiornamenti):

- MASTER KEY - lunghezza 8 bytes


- PROVIDER-ID - lunghezza 3 bytes

Il ProviderID e' composto dal ProviderGroup che occupa i primi 2 bytes del ProviderID :

- PROVIDER-GROUP - lunghezza 2 bytes

Il restante byte del ProviderID e' chiamato CardId o CustomerId ed identifica l'utente del provider :

- CARD-ID o CUSTOMER-ID - lunghezza 1 byte

Ad Ogni ProviderGroup vengono associate diverse KeyProviderGroup che sono delle chiavi di decrittazione
dei vari programmi del Provider, queste chiavi vengono inviate in forma crittografata, verrano poi
decrittografate all’interno della scheda tramite la PlainMasterKey e la KeyDateStamp e memorizzate in
opportune locazioni di memoria :

31
- KEY-PROVIDER-GROUP - lunghezza 1+8 byte

Il primo byte di ogni KeyProviderGroup è il KeyIdentificator ed e' l'identificatore della chiave stessa, questo ci
informa della funzione della chiave (es. decritta la PayPerView), il KeyIdentificator non è utilizzato nella
chiave, è solo un suo descrittore, infatti la chiave vera e propria è lunga solo 8 bytes :

- KEY-IDENTIFICATOR - lunghezza 1 byte

Ad ogni KeyProviderGroup è associata una data KeyDateStamp

- KEY-DATE-STAMP - lunghezza 2 byte

Attenzione al DateStamp, il DateStamp di sistema normalmente è relativo ai due Provider ed ai relativi


Provider-ID, infatti ci sono due DateStamp nella SmartCard, uno per il Provider 00 ed una per il Provider 10.
Alla KeyProviderGroup è associato un suo relativo KeyDateStamp (che è il DateStamp del provider della
chiave nel momento in cui viene trasmessa la chiave stessa), nelle versioni di ACS 1.6 per inserire una
KeyProviderGroup bisogna prima aver modificato il DateStamp di sistema del relativo Provider con il
KeyDateStamp loggato insieme alla chiave.
Solo dopo aver modificato il DateStamp di sistema del provider con il KeyDateStamp si può inserire la
KeyProviderGroup.
Un altro DateStamp viene fornito alla scheda quando andiamo ad abilitare i Channel-ID, questo DateStamp
è relativo solamente ai Channel-ID e non è da confondere con il DateStamp di sistema.

Ogni canale o gruppo di canali di un Provider viene identificato da un Channel-ID, questo e’ lungo 2 bytes

- CHANNEL-ID – lunghezza 2 bytes

Ad Ogni Channel-ID viene associato un suo Channel-DateStamp anche esso lungo 2 bytes ed una relativa
Expiration-Date lunga anche essa 2 bytes che sta ad indicare quando tale canale non sarà più visibile in
chiaro (es. scadenza dell’abbonamento, eventi in PPV, ecc. ecc.)

- CHANNEL-DATE-STAMP – lunghezza 2 bytes


- EXPIRATION-DATE – lunghezza 2 bytes

Gli aggiornamenti dei canali, le chiavi di provider, [Link]. vengono fornite dall’emittente direttamente al
provider-id della scheda, le chiavi finali di decrittazione dei canali (PlainKeys) vengano estratte da un
opportuno algoritmo di decodifica che prenda in pasto la PlainMasterKey, le KeyProviderGroup ed il
KeyDateStamp. Queste chiavi vengono poi memorizzate in specifici registri di memoria della SmartCard che
differiscono tra di loro a seconda della versione del sistema operativo.
Il gestore comunque invia periodicamente alla scheda identificata dall’HexSerial la sua MasterKey relativa al
suo Provider-ID, questo fa in modo che anche se volessimo modificare la coppia prov-id e masterkey dopo
un certo periodo di tempo ci ritroveremmo con i valori originali.

Due parole sulla MasterKey, la MasterKey viene inviata anch’essa in forma crittografata, una volta
decrittografata all’interno della SmartCard (PMK, PlainMasterKey), scopriamo che al contrario delle
KeyProviderGroup non è uguale per tutte le schede ma bensì per gruppi di 256 schede e quindi per
ProviderGroups, si è scoperto che è grazie alla PlainMasterKey ed alla KeyDateStamp che la SmartCard
opera la decodifica delle KeyProviderGroup in PlainKey.

Attenzione alla Key 00, erroneamente per diverso tempo essa è stata confusa con la PlainMasterKey, da
verifiche effettuate sembra invece che sia una PlainKey che viene inserita direttamente dal costruttore, viene
utilizzata a volte per la decodifica di alcuni channel-id, per ora non se ne conosce la posizione in memoria ne
come dumparla o procurarsela.

A questo punto bisogna parlare delle schede con provider-id 0300/0400, queste smartcard sono delle
schede di tipo particolare, o sono il frutto di un ECM (Contromisura Elettronica) inviata dal gestore oppure
sono delle schede mai inizializzate dal gestore stesso (schede nuove in attesa di attivazione o schede del
tipo Welcome Kit), ecco un estratto dal documento Log&Crd :

Oramai è noto che intorno alle SmartCard con Provider ID 000300 aleggia un misterioso segreto. Tali carte
sembrano diventate sorde a tutti i vari tentativi di riattivazione. L’unica cosa che posso dirvi è che il gestore

32
del servizio è in grado di farle resuscitare. Io personalmente ho contratto un abbonamento utilizzando
proprio una di queste SmartCard. Tutto funziona regolarmente.
Attorno ad esse si fanno le più svariate ipotesi sul come riattivarle, qualcuno dice di esserci riuscito, ma non
L
dice come , ricorrendo, così al classico comportamento infantile del “Io ce l’ho e tu nooooo ”. Qui di seguito
ne riporto alcune considerazioni emerse nei forum sul come poter prrocedere alla loro riattivazione:

1) riportarle alla situazione iniziale, cioè cosi' com'erano prima della prima attivazione il che equivale ad
avere una carta nuova ;

2) trovare da un log la management key, che dovrebbe essere giornaliera, inserirla insieme al 'DWH6WDPS
valido e provare a fargli fare l'aggiornamento delle key automaticamente come se fosse nuova. Cioè
mettere la carta in condizione che l'aggiornamento delle key venga effettuato automaticamente.

Oggi si è visto che per riattivare con successo una 0300 bisogna caricare la chiave in chiaro direttamente nei
relativi registri come vedremo in seguito.

33
L’Algoritmo di decodifica della SmartCard IRDETO con Emulatore Linux Funzionante

Sulla base del primo emulatore Irdeto funzionante in germania sui canali df1 e grazie alla publicazione della
procedura di crittografazione da parte di MASTERCRD dei nostri amici tedeschi [Link] che
ringrazio pubblicamente, sono riuscito a generare un emulatore IRDETO funzionante sotto Linux, è scritto in
C ed utilizza una normale interfaccia season.
Il sorgente del programma che allego è un emulatore base, senza nessuna funzionalità aggiunta, è stato
realizzato al solo fine di divulgare l’algoritmo ed implementa le funzioni di crittografazione delle chiavi che
sono identiche sia per la crittografazione della chiave di canale (comando 01 05) sia per la decodifica delle
KeyProviderGroup in Plainkeys.
Infatti se utilizziamo la funzione sessionKeyCrypt fornendo come parametri la KeyProviderGroup, la
PlainMasterKey e la KeyDateStamp la funzione ci darà in risposta la PlainKey relativa, naturalmente in
questo caso la funzione cardcrypt è inapplicabile.

Se si vuole compilare bisogna inserire il Provider-ID 00, il serial Hex e la PlainKey che al momento della
pubblicazione è la chiave 0C di D+, naturalmente cosi’ come’ decritta tutto il bouquet di D+, prima di lanciare
l’emulatore bisogna eseguire lo script di preparazione della COM1 che è la porta seriale utilizzata dal
programma:

Script :

stty sane < /dev/ttyS0


stty raw < /dev/ttyS0
stty 9600 -echo time 1 min 0 cs8 cstopb < /dev/ttyS0

Emulatore :

#include "stdio.h"
#include "fcntl.h"
#include "unistd.h"
#include "linux/serial.h"
#include "linux/serial_reg.h"
#include "asm/ioctls.h"
#include "sys/ioctl.h"

#define DBOX_RESET_PIN TIOCM_CAR

typedef unsigned char byte;


int dbox;

//----------------------------------------------------------
byte tab[]={0x6d,0xda,0xb7,0x00};

byte table1[] = {
0xDA,0x26,0xE8,0x72,0x11,0x52,0x3E,0x46,
0x32,0xFF,0x8C,0x1E,0xA7,0xBE,0x2C,0x29,
0x5F,0x86,0x7E,0x75,0x0A,0x08,0xA5,0x21,
0x61,0xFB,0x7A,0x58,0x60,0xF7,0x81,0x4F,
0xE4,0xFC,0xDF,0xB1,0xBB,0x6A,0x02,0xB3,
0x0B,0x6E,0x5D,0x5C,0xD5,0xCF,0xCA,0x2A,
0x14,0xB7,0x90,0xF3,0xD9,0x37,0x3A,0x59,
0x44,0x69,0xC9,0x78,0x30,0x16,0x39,0x9A,
0x0D,0x05,0x1F,0x8B,0x5E,0xEE,0x1B,0xC4,
0x76,0x43,0xBD,0xEB,0x42,0xEF,0xF9,0xD0,
0x4D,0xE3,0xF4,0x57,0x56,0xA3,0x0F,0xA6,
0x50,0xFD,0xDE,0xD2,0x80,0x4C,0xD3,0xCB,
0xF8,0x49,0x8F,0x22,0x71,0x84,0x33,0xE0,
0x47,0xC2,0x93,0xBC,0x7C,0x3B,0x9C,0x7D,
0xEC,0xC3,0xF1,0x89,0xCE,0x98,0xA2,0xE1,
0xC1,0xF2,0x27,0x12,0x01,0xEA,0xE5,0x9B,
0x25,0x87,0x96,0x7B,0x34,0x45,0xAD,0xD1,

34
0xB5,0xDB,0x83,0x55,0xB0,0x9E,0x19,0xD7,
0x17,0xC6,0x35,0xD8,0xF0,0xAE,0xD4,0x2B,
0x1D,0xA0,0x99,0x8A,0x15,0x00,0xAF,0x2D,
0x09,0xA8,0xF5,0x6C,0xA1,0x63,0x67,0x51,
0x3C,0xB2,0xC0,0xED,0x94,0x03,0x6F,0xBA,
0x3F,0x4E,0x62,0x92,0x85,0xDD,0xAB,0xFE,
0x10,0x2E,0x68,0x65,0xE7,0x04,0xF6,0x0C,
0x20,0x1C,0xA9,0x53,0x40,0x77,0x2F,0xA4,
0xFA,0x6D,0x73,0x28,0xE2,0xCD,0x79,0xC8,
0x97,0x66,0x8E,0x82,0x74,0x06,0xC7,0x88,
0x1A,0x4A,0x6B,0xCC,0x41,0xE9,0x9D,0xB8,
0x23,0x9F,0x3D,0xBF,0x8D,0x95,0xC5,0x13,
0xB9,0x24,0x5A,0xDC,0x64,0x18,0x38,0x91,
0x7F,0x5B,0x70,0x54,0x07,0xB6,0x4B,0x0E,
0x36,0xAC,0x31,0xE6,0xD6,0x48,0xAA,0xB4
};

byte table2[] = {
0x8E,0xD5,0x32,0x53,0x4B,0x18,0x7F,0x95,
0xBE,0x30,0xF3,0xE0,0x22,0xE1,0x68,0x90,
0x82,0xC8,0xA8,0x57,0x21,0xC5,0x38,0x73,
0x61,0x5D,0x5A,0xD6,0x60,0xB7,0x48,0x70,
0x2B,0x7A,0x1D,0xD1,0xB1,0xEC,0x7C,0xAA,
0x2F,0x1F,0x37,0x58,0x72,0x88,0xFF,0x87,
0x1C,0xCB,0x00,0xE6,0x4E,0xAB,0xEB,0xB3,
0xF7,0x59,0x71,0x6A,0x64,0x2A,0x55,0x4D,
0xFC,0xC0,0x51,0x01,0x2D,0xC4,0x54,0xE2,
0x9F,0x26,0x16,0x27,0xF2,0x9C,0x86,0x11,
0x05,0x29,0xA2,0x78,0x49,0xB2,0xA6,0xCA,
0x96,0xE5,0x33,0x3F,0x46,0xBA,0xD0,0xBB,
0x5F,0x84,0x98,0xE4,0xF9,0x0A,0x62,0xEE,
0xF6,0xCF,0x94,0xF0,0xEA,0x1E,0xBF,0x07,
0x9B,0xD9,0xE9,0x74,0xC6,0xA4,0xB9,0x56,
0x3E,0xDB,0xC7,0x15,0xE3,0x80,0xD7,0xED,
0xEF,0x13,0xAC,0xA1,0x91,0xC2,0x89,0x5B,
0x08,0x0B,0x4C,0x02,0x3A,0x5C,0xA9,0x3B,
0xCE,0x6B,0xA7,0xE7,0xCD,0x7B,0xA0,0x47,
0x09,0x6D,0xF8,0xF1,0x8B,0xB0,0x12,0x42,
0x4A,0x9A,0x17,0xB4,0x7E,0xAD,0xFE,0xFD,
0x2C,0xD3,0xF4,0xB6,0xA3,0xFA,0xDF,0xB8,
0xD4,0xDA,0x0F,0x50,0x93,0x66,0x6C,0x20,
0xD8,0x8A,0xDD,0x31,0x1A,0x8C,0x06,0xD2,
0x44,0xE8,0x23,0x43,0x6E,0x10,0x69,0x36,
0xBC,0x19,0x8D,0x24,0x81,0x14,0x40,0xC9,
0x6F,0x2E,0x45,0x52,0x41,0x92,0x34,0xFB,
0x5E,0x0D,0xF5,0x76,0x25,0x77,0x63,0x65,
0xAF,0x4F,0xCC,0x03,0x9D,0x0C,0x28,0x39,
0x85,0xDE,0xB5,0x7D,0x67,0x83,0xBD,0xC3,
0xDC,0x3C,0xAE,0x99,0x04,0x75,0x8F,0x97,
0xC1,0xA5,0x9E,0x35,0x0E,0x3D,0x1B,0x79
};

byte dpiu_key[8] = {0x61, 0x08, 0x3f, 0xff, 0xe6, 0xfe, 0x6a, 0x79};
byte rotbuff[]={0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
byte temp1[]={0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x0,0x3,0x6,0x1,0x4,0x7,0x2,0x5};

//----------------------------------------------------------

byte atr[]={
0x3b, 0x9f, 0x21, 0x0e, 0x49, 0x52, 0x44, 0x45,
0x54, 0x4f, 0x20, 0x41, 0x43, 0x53, 0x20, 0x56,
0x31, 0x2e, 0x32, 0xa0

35
};

// ASCI-Serial
byte answer2030[]={
0x01, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x14,
0x31, 0x30, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34,
0x35, 0x36, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01,
0x21, 0x00, 0x13, 0x13
};

// HEX-Serial 0x123456
// dovete inserire un hex_serial valido nei bytes nr. 21-22-23 della tabella
sottostante
byte answer2130[]={
0x01, 0x02, 0x00, 0x00, 0x01, 0x03, 0x00, 0x10,
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x00, 0x12, 0x34, 0x56, 0x18
};

// Nazionalita’
byte answer2230[]={
0x01, 0x02, 0x00, 0x00, 0x02, 0x03, 0x00, 0x10,
0x03, 0x01, 0x99, 0x06, 0x01, 0x06, 0x02, 0x06,
0x03, 0x06, 0x04, 0x07, 0x41, 0x49, 0x54, 0x41
};

// Provider-ID 1 0x123456
// dovete inserire un provider_id 00 valido nei bytes nr. 10-11-12 della tabella
sottostante
byte answer2330[]={
0x01, 0x02, 0x00, 0x00, 0x03, 0x03, 0x00, 0x18,
0x00, 0x12, 0x34, 0x56, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// Provider-ID 2 0x654321
byte answer2331[]={
0x01, 0x02, 0x00, 0x00, 0x03, 0x03, 0x01, 0x18,
0x11, 0x65, 0x43, 0x21, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// Card-File 1
byte answer2e20[]={
0x01, 0x02, 0x00, 0x00, 0x0e, 0x02, 0x00, 0x40,
0xD9, 0xF9, 0x0B, 0x14, 0x20, 0xF1, 0xAA, 0x7D,
0x0E, 0x84, 0xBE, 0xC2, 0xFD, 0xE3, 0x54, 0xDE,
0xF0, 0xC8, 0xFC, 0xBE, 0xB1, 0xBA, 0xDD, 0x43,
0x78, 0x68, 0x45, 0x99, 0x07, 0x7C, 0x6B, 0x6C,
0x39, 0x9A, 0x07, 0xE0, 0xBC, 0x35, 0xE5, 0x11,
0xC3, 0x01, 0x9F, 0x0D, 0xF1, 0xC7, 0x91, 0x67,
0x37, 0x89, 0x32, 0xAB, 0x44, 0x65, 0xCA, 0xAC,
0xB1, 0x80, 0x42, 0x85, 0x99, 0xE7, 0x21, 0xC1,
};

// Card-File 2
byte answer2e30[]={
0x01, 0x02, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x40,
0x3F, 0x5E, 0x10, 0x0D, 0xEB, 0x30, 0x4B, 0x05,
0x22, 0x5D, 0xDB, 0xCA, 0xFE, 0x24, 0x26, 0x7E,
0xCF, 0x78, 0x0C, 0x69, 0xD1, 0x75, 0x7A, 0x67,

36
0x84, 0x1F, 0x2C, 0xA6, 0x75, 0xF6, 0x0F, 0x59,
0x1E, 0xE0, 0x18, 0xFE, 0xA8, 0x71, 0xDD, 0x25,
0xD6, 0x3F, 0x6B, 0x4E, 0x05, 0x67, 0x1E, 0xD7,
0x76, 0x41, 0x03, 0x1B, 0x31, 0x17, 0x6D, 0xB0,
0xF6, 0x2E, 0xF6, 0x8A, 0x39, 0x67, 0x7B, 0xE6,
};

byte answer2930[]={
0x01, 0x02, 0x55, 0x00, 0x09, 0x03, 0x00, 0x00,
};

byte answer1[]={
0x01, 0x01, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03,
};

byte answer5[]={
0x01, 0x05, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00,
};

int read_box (byte *buffer)


{
int n,i;
int modeminfo;

ioctl (dbox,TIOCMGET,&modeminfo);
if (modeminfo & DBOX_RESET_PIN) return -2;

printf ("\n<-: ");

buffer[0]=0;
for (n=0;n<1;) {
if (read(dbox,buffer+n,1)) n++;
ioctl (dbox,TIOCMGET,&modeminfo);
if (modeminfo & DBOX_RESET_PIN) return -2;
}
if (buffer[0]!=1) {
printf ("%02x ",buffer[0]);
return -1;
}

for (n=1;n<6;) {
if (read(dbox,buffer+n,1)) n++;
ioctl (dbox,TIOCMGET,&modeminfo);
if (modeminfo & DBOX_RESET_PIN) return -2;
}

if (buffer[5]>0)
for (n=6;n<(6+buffer[5]);) {
if (read(dbox,buffer+n,1)) n++;
ioctl (dbox,TIOCMGET,&modeminfo);
if (modeminfo & DBOX_RESET_PIN) return -2;
}

while(!read(dbox,buffer+n,1)); // Checksumme

for (i=0;i<=n;i++) {
printf ("%02x ",buffer[i]);
fflush(stdout);
}
printf("\n");
fflush (stdout);
return n;
}

37
int write_box(byte *buffer)
{
int n,len,echo;
int modeminfo;
byte cksum=0x3f;

printf ("\n->: ");


len=buffer[7]+8;

write(dbox, buffer, len);

for (n=0;n<len;n++) {
printf ("%02x ",buffer[n]);
cksum^=buffer[n];
}
write(dbox, &cksum, 1);

for (n=0;n<len+1;) {
if (read(dbox,&echo,1)) n++;
ioctl (dbox,TIOCMGET,&modeminfo);
if (modeminfo & DBOX_RESET_PIN) return -2;
}

printf("\n");
fflush (stdout);
return 0;
}

void ror (void){


int j;
byte i = rotbuff[9];
for(j=9;j>=1;--j)
{
rotbuff[j] = rotbuff[j] >> 1;
rotbuff[j] = rotbuff[j] | (rotbuff[j - 1] & 0x1) << 7;
}
rotbuff[0] = rotbuff[0] >> 1;
rotbuff[0] = rotbuff[0] | (i & 0x1) << 7;
}

void sessionKeyCrypt(byte* data, byte *key, byte *date)


{
int i, ii;
for (i=0;i<10;++i)rotbuff[i]=key[i % 8];
for (i=0;i<2;++i)rotbuff[8+i]^= date[i];
for(ii=0;ii<128;ii++){
if ((ii % 10) == 0)ror();
if (rotbuff[ii % 10] & 1)
data[temp1[(ii + 1) % 16]] ^= table1[data[temp1[ii % 16]] ^
rotbuff[ii % 10]];
else
data[temp1[(ii + 1) % 16]] ^= table2[data[temp1[ii % 16]] ^
rotbuff[ii % 10]];
}
}

void cardcrypt(byte *indata, byte *key) {


byte temp[8],r1,r9,t1 ;
int i,j,k;

memcpy (temp, key, 8) ;

38
for (i=0;i<7;i++ ) {
t1 = temp[7] ;
for (k=7;k>=1;k--)
temp[k] = ( temp[k] << 1 ) | ( temp[k-1] >> 7 ) ;
temp[0] = ( 2*temp[0] ) | ( t1 >> 7 ) ;
}

for (i=7;i>=0;i-- ) {
for (j=7;j>=0;j-- ) {
r1 = table1[indata[6] ^ temp[j] ^ i] ;
r9 = indata[0] ;
indata[0] = r1 ^ indata[7] ;
indata[7] = indata[6] ;
indata[6] = indata[5] ^ r1 ;
indata[5] = indata[4] ;
indata[4] = indata[3] ;
indata[3] = indata[2] ;
indata[2] = indata[1] ;
indata[1] = r9 ;
}
t1 = temp[0] ;
for (k=0;k<7;k++)
temp[k] = ( temp[k] >> 1 ) | ( temp[k+1] << 7 ) ;
temp[7] = ( temp[7] >> 1 ) | ( t1 << 7 ) ;
}
return ;
}

int main(void)
{
int reset=0;
byte buf[256];
byte buf1[256];
byte date[2];
int modeminfo;
int chID=0, both=0, prID=0, keyID=0, key=0;
byte *key1=0, *key2=0;
byte tmp[8];
byte tmp1[8];
int pos,pos_max;
byte camkey[8];

dbox = open ("/dev/ttyS0",O_RDWR);


if (dbox==0) {
printf ("error open /dev/ttyS0\n");
return 1;
}

printf ("\n\nI C E (IRDETO-Chipcard-Emulator) V0.1.0\n\n");

while(1) {

ioctl (dbox,TIOCMGET,&modeminfo);
if ((modeminfo & DBOX_RESET_PIN)==0) {
if (reset==1) {
printf ("RESET\n");
fflush(stdout);
usleep(1000);
printf ("ATR:%i\n",write(dbox, atr, sizeof(atr)));
fflush(stdout);
}
reset=0;

39
} else {
reset=1;
}

read_box(buf);
usleep(100);
if (buf[0]!=1) continue;
switch (buf[1]) {
case 1:
write_box(answer1);
break;
case 2:
if ((buf[2]==0)&&(buf[3]==3))
write_box(answer2030);
if ((buf[2]==1)&&(buf[3]==3))
write_box(answer2130);
if ((buf[2]==2)&&(buf[3]==3))
write_box(answer2230);
if ((buf[2]==3)&&(buf[3]==3)&&(buf[4]==0))
write_box(answer2330);
if ((buf[2]==3)&&(buf[3]==3)&&(buf[4]==1))
write_box(answer2331);
if ((buf[2]==0x0e)&&(buf[3]==2))
write_box(answer2e20);
if ((buf[2]==0x0e)&&(buf[3]==3))
write_box(answer2e30);
if ((buf[2]==9)&&(buf[3]==3)) {
memcpy (camkey, buf+6, 8);
write_box(answer2930);
}
break;
case 5:
chID = (buf[6]<<8)+buf[7];
both = (buf[4]>>1) & 0x01;
prID = buf[8];
pos=12;
pos_max=buf[11]+12;
while (pos < pos_max) {
if (buf[pos]==0x78) {
keyID = buf[pos+2];
key = buf[pos+3];
key1 = buf+pos+4;
key2 = buf+pos+4+8;
}
if (buf[pos]==0x00 && buf[pos+1]==0x02) {
date[0]=buf[pos+2];
date[1]=buf[pos+3];
}
pos += buf[pos+1]+2;
}

memcpy (tmp, dpiu_key, 8);


memcpy (tmp1, camkey, 8);
sessionKeyCrypt(key1, tmp, date);
cardcrypt (key1, tmp1);

memcpy (tmp, dpiu_key, 8);


memcpy (tmp1, camkey, 8);
sessionKeyCrypt(key2, tmp, date);
cardcrypt (key2, tmp1);

memset(buf1, 0, sizeof(buf1));
memcpy (buf1, answer5, sizeof(answer5));

40
buf1[2]=0x9D;
buf1[4]=0x38;
if (both == 0x01) {
buf1[5]=0x00;
buf1[6]=0x02;
buf1[7]=0x16;
}
else {
if (key==0x12)
buf1[5]=0x01;
else
buf1[5]=0x00;
buf1[6]=0x00;
buf1[7]=0x0E;
}
buf1[8]=chID>>8;
buf1[9]=chID & 0xff;
buf1[11]=key;
buf1[12]=255;
buf1[13]=255;
if (both==0x01){
memcpy(buf1+14, key1, 8);
memcpy(buf1+14+8, key2, 8);
}
else{
if (key == 0x12)
memcpy(buf1+14, key1, 8);
else
memcpy(buf1+14, key2, 8);
}
write_box(buf1);
break;
default:
}
}
close(dbox);
return 0;
}

Inoltre vi allego la pagina web originale di MASTERCRD per la decrittografazione delle PlainKey, ancora
grazie ai nostri amici tedeschi :

<HTML><HEAD><TITLE>KeyDecrypter</TITLE></HEAD>

<body bgcolor="#000040" link="#CCCCFF" vlink="#CCCCFF" text="#CCCCFF">

<SCRIPT language=Javascript><!--

var Table1 = new Array(

0xDA,0x26,0xE8,0x72,0x11,0x52,0x3E,0x46,

0x32,0xFF,0x8C,0x1E,0xA7,0xBE,0x2C,0x29,

0x5F,0x86,0x7E,0x75,0x0A,0x08,0xA5,0x21,

0x61,0xFB,0x7A,0x58,0x60,0xF7,0x81,0x4F,

0xE4,0xFC,0xDF,0xB1,0xBB,0x6A,0x02,0xB3,

41
0x0B,0x6E,0x5D,0x5C,0xD5,0xCF,0xCA,0x2A,

0x14,0xB7,0x90,0xF3,0xD9,0x37,0x3A,0x59,

0x44,0x69,0xC9,0x78,0x30,0x16,0x39,0x9A,

0x0D,0x05,0x1F,0x8B,0x5E,0xEE,0x1B,0xC4,

0x76,0x43,0xBD,0xEB,0x42,0xEF,0xF9,0xD0,

0x4D,0xE3,0xF4,0x57,0x56,0xA3,0x0F,0xA6,

0x50,0xFD,0xDE,0xD2,0x80,0x4C,0xD3,0xCB,

0xF8,0x49,0x8F,0x22,0x71,0x84,0x33,0xE0,

0x47,0xC2,0x93,0xBC,0x7C,0x3B,0x9C,0x7D,

0xEC,0xC3,0xF1,0x89,0xCE,0x98,0xA2,0xE1,

0xC1,0xF2,0x27,0x12,0x01,0xEA,0xE5,0x9B,

0x25,0x87,0x96,0x7B,0x34,0x45,0xAD,0xD1,

0xB5,0xDB,0x83,0x55,0xB0,0x9E,0x19,0xD7,

0x17,0xC6,0x35,0xD8,0xF0,0xAE,0xD4,0x2B,

0x1D,0xA0,0x99,0x8A,0x15,0x00,0xAF,0x2D,

0x09,0xA8,0xF5,0x6C,0xA1,0x63,0x67,0x51,

0x3C,0xB2,0xC0,0xED,0x94,0x03,0x6F,0xBA,

0x3F,0x4E,0x62,0x92,0x85,0xDD,0xAB,0xFE,

0x10,0x2E,0x68,0x65,0xE7,0x04,0xF6,0x0C,

0x20,0x1C,0xA9,0x53,0x40,0x77,0x2F,0xA4,

0xFA,0x6D,0x73,0x28,0xE2,0xCD,0x79,0xC8,

0x97,0x66,0x8E,0x82,0x74,0x06,0xC7,0x88,

0x1A,0x4A,0x6B,0xCC,0x41,0xE9,0x9D,0xB8,

0x23,0x9F,0x3D,0xBF,0x8D,0x95,0xC5,0x13,

0xB9,0x24,0x5A,0xDC,0x64,0x18,0x38,0x91,

0x7F,0x5B,0x70,0x54,0x07,0xB6,0x4B,0x0E,

0x36,0xAC,0x31,0xE6,0xD6,0x48,0xAA,0xB4);

var Table2 = new Array(

0x8E,0xD5,0x32,0x53,0x4B,0x18,0x7F,0x95,

0xBE,0x30,0xF3,0xE0,0x22,0xE1,0x68,0x90,

0x82,0xC8,0xA8,0x57,0x21,0xC5,0x38,0x73,

0x61,0x5D,0x5A,0xD6,0x60,0xB7,0x48,0x70,

0x2B,0x7A,0x1D,0xD1,0xB1,0xEC,0x7C,0xAA,

0x2F,0x1F,0x37,0x58,0x72,0x88,0xFF,0x87,

0x1C,0xCB,0x00,0xE6,0x4E,0xAB,0xEB,0xB3,

0xF7,0x59,0x71,0x6A,0x64,0x2A,0x55,0x4D,

0xFC,0xC0,0x51,0x01,0x2D,0xC4,0x54,0xE2,

0x9F,0x26,0x16,0x27,0xF2,0x9C,0x86,0x11,

42
0x05,0x29,0xA2,0x78,0x49,0xB2,0xA6,0xCA,

0x96,0xE5,0x33,0x3F,0x46,0xBA,0xD0,0xBB,

0x5F,0x84,0x98,0xE4,0xF9,0x0A,0x62,0xEE,

0xF6,0xCF,0x94,0xF0,0xEA,0x1E,0xBF,0x07,

0x9B,0xD9,0xE9,0x74,0xC6,0xA4,0xB9,0x56,

0x3E,0xDB,0xC7,0x15,0xE3,0x80,0xD7,0xED,

0xEF,0x13,0xAC,0xA1,0x91,0xC2,0x89,0x5B,

0x08,0x0B,0x4C,0x02,0x3A,0x5C,0xA9,0x3B,

0xCE,0x6B,0xA7,0xE7,0xCD,0x7B,0xA0,0x47,

0x09,0x6D,0xF8,0xF1,0x8B,0xB0,0x12,0x42,

0x4A,0x9A,0x17,0xB4,0x7E,0xAD,0xFE,0xFD,

0x2C,0xD3,0xF4,0xB6,0xA3,0xFA,0xDF,0xB8,

0xD4,0xDA,0x0F,0x50,0x93,0x66,0x6C,0x20,

0xD8,0x8A,0xDD,0x31,0x1A,0x8C,0x06,0xD2,

0x44,0xE8,0x23,0x43,0x6E,0x10,0x69,0x36,

0xBC,0x19,0x8D,0x24,0x81,0x14,0x40,0xC9,

0x6F,0x2E,0x45,0x52,0x41,0x92,0x34,0xFB,

0x5E,0x0D,0xF5,0x76,0x25,0x77,0x63,0x65,

0xAF,0x4F,0xCC,0x03,0x9D,0x0C,0x28,0x39,

0x85,0xDE,0xB5,0x7D,0x67,0x83,0xBD,0xC3,

0xDC,0x3C,0xAE,0x99,0x04,0x75,0x8F,0x97,

0xC1,0xA5,0x9E,0x35,0x0E,0x3D,0x1B,0x79);

var plainKey= new Array(0,0,0,0,0,0,0,0);

var plainMasterKey= new Array(0,0,0,0,0,0,0,0);

var datum= new Array(0,0);

var daten= new Array(0,0,0,0,0,0,0,0,0,0);

var temp1= new Array(0,1,2,3,4,5,6,7,0,3,6,1,4,7,2,5);

function ror(){

i = daten[9];for(j=9;j>=1;--j)

{daten[j] = daten[j] >> 1;daten[j] = daten[j] | (daten[j - 1] & 0x1) << 7;}

daten[0] = daten[0] >> 1;daten[0] = daten[0] | (i & 0x1) << 7;}

function newcrypt(){

for (i=0;i<10;++i)daten[i]=plainMasterKey[i % 8];

for (i=0;i<2;++i)daten[8+i]^= datum[i];

for(ii=0;ii<128;ii++){

if ((ii % 10) == 0)ror();

43
if (daten[ii % 10] & 1)

plainKey[temp1[(ii + 1) % 16]] ^= Table1[plainKey[temp1[ii % 16]] ^ daten[ii % 10]];

else

plainKey[temp1[(ii + 1) % 16]] ^= Table2[plainKey[temp1[ii % 16]] ^ daten[ii % 10]];

}}

function auswertung(){

var buchstaben="0123456789ABCDEFabcdef";

if([Link] !=4){alert("Datumsangabe stimmt noch nicht !");return};

// if([Link] != "hauptfenster"){location="[Link]

if([Link] !=16){alert("Länge vom Key stimmt noch nicht !");return};

if([Link] !=16){alert("Länge vom Plainmasterkey stimmt noch


nicht !");return};

nn="";for(i=0;i<4;i++){aa=[Link]([Link](i,i+1));

if(aa<0){alert("String im Date stimmt irgendwo nicht !");return};

if(aa>=16)aa-=6;nn+=[Link](aa,aa+1);};[Link]=nn;

nn="";for(i=0;i<16;i++){aa=[Link]([Link](i,i+1));

if(aa<0){alert("String im Key stimmt irgendwo nicht !");return};

if(aa>=16)aa-=6;nn+=[Link](aa,aa+1);};[Link]=nn;

nn="";for(i=0;i<16;i++){aa=[Link]([Link](i,i+1)
);

if(aa<0){alert("String im Plainmasterkey stimmt irgendwo nicht !");return};

if(aa>=16)aa-=6;nn+=[Link](aa,aa+1);};[Link]=nn;

datum[0]=[Link]([Link](0,1))*16+[Link](do
[Link](1,2));

datum[1]=[Link]([Link](2,3))*16+[Link](do
[Link](3,4));

for(i=0;i<=7;i++){

plainKey[i]=[Link]([Link](i*2,i*2+1))*16+[Link]
exOf([Link](i*2+1,i*2+2));

plainMasterKey[i]=[Link]([Link](i*2,i*2+1))*16+
[Link]([Link](i*2+1,i*2+2));

newcrypt();

wort="";

for(i=0;i<=7;i++){

44
wort=wort+[Link](((plainKey[i] & 0xF0)/16),((plainKey[i] & 0xF0)/16)+1);

wort=wort+[Link]((plainKey[i] & 0xF),(plainKey[i] & 0xF)+1)+" ";

[Link]=wort;

// --></SCRIPT>

<table border="0" cellpadding="5" cellspacing="0" width=100%><TR><TD bgcolor="#CCCCFF"


align="left"><font size=+5 face="Arial" color="#000040"><b>Key + PMK = PK</b></font></TD>

</TD></TR></table>

<center>

<table border="0" cellpadding="5" cellspacing="0" width=700><TR><TD><font size=2 face="Arial">

<b>Anleitung</b><br>

Dieses Programm dient dazu, den Plainkey herrauszufinden. Bitte gebt alle erforderlichen Daten <br>

ohne Leerzeichen ein. Wenn alle Eingaben korrekt sind, seht ihr unten den Plainkey.<br>

<br><br><br>

<form name="bestellung">

<center><table border="0">

<tr>

<td align="right"><font size="2" face="Arial"><b>Key: </b></font></td>

<td><font size="2" face="Arial"><input type="text"

size="16" maxlength="16" name="key" value="0000000000000000"

onchange="auswertung();"> </font></td>

<td align="right"><font size="2" face="Arial"><b>Date: </b></font></td>

<td><font size="2" face="Arial"><input type="text"

size="4" maxlength="4" name="datum" value="0000"

onchange="auswertung();"> </font></td>

</tr>

<tr>

<td align="right"><font size="2" face="Arial"><b>Plainmasterkey: </b></font></td>

<td><font size="2" face="Arial"><input type="text"

size="16" maxlength="16" name="plainmaster" value="0000000000000000"

45
onchange="auswertung();"> </font></td><td>&nbsp</td><td>&nbsp</td>

</tr>

</table>

<br><br><br>

<table border="0">

<tr>

<td align="right"><font size="2" face="Arial"><b>Hier der errechnete Plainkey:


</b></font></td>

<td><font size="2" face="Arial"><input type="text"

size="22" maxlength="24" name="plain" value="00 00 00 00 00 00 00 00"

> </font></td>

</tr>

</table>

</center>

</form>

</font></TD></TR></Table></center>

<br><br>

<center><font size="5" face="Arial"><a href="[Link]"


target="hauptfenster"><b>Zurück</b></a></font></center>

</body></html>

46
Dettaglio delle comunicazioni tra CAM e SMARTCARD
Da Log&crd

in ogni (&0 ((QWLWOHPHQW&RQWURO0HVVDJH) i tre gruppi di dati vengono inviati ad ogni gruppo di carte. il 'DWH
6WDPS e il &KDQQHO ,' sono gli stessi per tutte le carte, ma la Key è differente per ogni gruppo. Ciascun

PROVIDER ID (gruppo di cards) deve avere la propria chiave individuale.

Esistono, poi, gli (00 ((QWLWOHPHQW0DQDJHPHQW0HVVDJH) con i quali vengono inviate altre informazioni di
gestione.

Riassumento, gli (&0 e gli (00 trasportano informazioni importanti per la messa in chiaro delle
trasmissioni codificate. Questi vengono trasmessi a cadenze precise. Normalmente ogni 2 secondi per i
primi ed ogni 10 secondi per gli altri.

Cosa viene inviato alla CAM

Alla CAM (Modulo Condizionato di Accesso), le informazioni da elaborare giungono nel seguente formato:

Sync ID Lungh. Compresa vds Comando 9DORUH

la Signature ECM di ,GHQWLILWLYRGHOOD 01 00 00 Lunghezza NanoComandi Signature


Class=1 6& NanoComandi

Un piccolo esempio

82 40 12 C3 0D FF 5D 01 00 00 0A 62 03 49 54 41 5A C8 90 69 2B

12 = lunghezza dei dati


C3 = il valore che segue rappresenta il Serial HEX
0D FF 5D = in questo caso il Serial Hex
01 00 00 0A =
 49 54 41 = setta il country ITA

5A C8 90 69 2B = Signature

82 40 20 03 05 FA 6D 01 00 00 18 40 02 04 E8 56 02 27 4C 52 06 00 00 00 00 00 00 58 01 00 76 A4 31 CD 20

82 40 1C C3 0D FF 5D 01 00 00 14 68 0D 00 00 7E 35 99 A3 49 8E B9 FE 05 FA 6D 11 BD 14 A3 49

nel caso di DF1:

82 70 1C C3 79 C1 B9 01 00 00 14 28 0D 00 00 0D C7 F3 02 46 B6 4D 38 45 A2 1F 8C B2 A7 F4 AB

82 70 1C C3 79 C1 BA 01 00 00 14 28 0D 00 00 4F 76 94 62 F0 2F 8B 6C 45 A2 1E 4D 3B B2 87 E8

82 70 1C C3 79 C1 BB 01 00 00 14 28 0D 00 00 4C 6C 70 57 DF D1 9E C1 45 A2 1D 88 16 03 ED 30

Il Sync ID è uno dei principali motivi per cui molti programmi di monitor,
realizzati per lo più in Germania, non funzionano con D* e Str*. Infatti essi
attendono il valore 8270 e non 8240.
Tutto cio’ che segue questo valore rappresenta i veri e propri dati che la CAM
elaborerà.

I programmi di logging, altro non fanno che interpretare per noi i dati che
giungono nel formato presentato prima e ci danno la possibilità di capire meglio
cio’ che sta avvenendo:

Eccone un esempio

FDUGGLUHFWIHHDI +(;6(5,$/

 (03) 49 54 41 ;set country code: ’ITA’


[fb a5 d0 c9 58] 6,*1$785(

47
ed è a questo punto che vengono inviati la Master Key 00 (otto byte) ed un nuovo Provider ID – (sei byte)

FDUGGLUHFWIHHDI +(;6(5,$/

 (0D) 00 00 88 da 96 5d ae c3 ;set provider 00 id: 043e6a, Master Key 00


69 ee 04 3e 6a
[d7 f3 eb a5 76] 6,*1$785(

 (0D) CAMBIA PROVIDER 00/11 (PROV.) 00 MASTERKEY (00+8 BYTES) + PROVIDER ID(3 BYTES)

SGLUHFW HD 3529,'(5,'

 (02) 04 ca ;packet date: 04ca


 (02) 27 07
 (06) 00 00 00 00 00 00
[24 68 2d 93 3a] 6,*1$785(

Vengo attivati i canali sui quali abbiamo diritto alla visone

SGLUHFW HD 3529,'(5,'

 (02) 04 ca ;packet date: 04ca


 (06) ff fe 00 00 ff 00 ;add/mod: channel=fffe,date=0000,tmr=ff.00
 (06) ff f6 00 00 ff 00 ;add/mod: channel=fff6,date=0000,tmr=ff.00
[b9 a7 a0 cb 51] 6,*1$785(

Per arrivare a ciò, oramai, non c’è che l’imbarzzo della scelta. In un primo
mommento i tedeschi rappresentavano lo Stato dell’Arte in tali prodotti, poi,
via via, grazie alla buona volonta di programmatori nostrani, siamo passati da
una posizione di subordine ad una di tutto rispetto.

48
I Comandi per interagire con la SmartCard
Per interagire con la SmartCard bisogna utilizzare un programma (es. CardMaster o CardDevil) al quale
vengono dati in pasto dei files che contengono al loro interno una sequenza di comandi che la Smartcard sa
interpretare, questi files hanno come estensione del nome il suffisso .CRD (es. alld+.crd), esaminiamo ora la
struttura dei comandi che possono essere utilizzati in un file CRD e come interagiscono tra di loro e con la
SmartCard….

Estratto da Log&Crd

Struttura dei Comandi

I comandi di seguito riportati rappresentano il “set” con il quale la CAM ( 0odulo &ondizionato di $ccesso) e
la Smart Card si scambiano informazioni. In sostanza queste sono l’insieme di regole che consentono
l’interazione con la Smart Card.
Familiarizzare con essi rappresenta il punto di inizio per capire ciò che i file .crd compiono.

Comando DATA DIVISION Check Byte


Class Length DIPENDE DAL COMANDO Xor di tutti i
 CL ,6 R1 R2 XX byte + Xor
3F

CLASS ( CL )
00:???
01:ecm
02:get
04:set
05:keyreq

,16758&7,21 ,6

Dipende dalla Classe del Comando

REFERENCE ( R1 & R2 )
Dipendono dalla Classe del Comando

LENGTH
Numero complessivo di byte nel '$7$',9,6,21 che è differente per tutte Classi di Comando

&KHFN%\WH

Chiude la stringa che viene inviata o ricevuta dalla smartcard


OR eclusivo (XOR) di tutti i byte , alla fine XOR con 3F
Es:

01 01 00 00 00 39 02 04 6E 00 00 33 40 02 04 D0 CB 20 60 00 00 08 80 01 00 00 01 00 04 22 00 00 00
20 00 00 08 80 80 00 00 20 20 00 08 00 00 10 20 00 11 06 FF 02 00 00 FF 00 13 FB 74 4A C1 )&

01 xor 01 xor a 74 xor 4A xor C1 xor ) )&

6LJQDWXUH
Viene usata per convalidare il '$7$ ',9,6,21 attraverso una vera e propria firma digitale, è
composta da 5 byte di cui non è conosciuto l’agoritmo di calcolo. E’ però possibile, probabilmente grazie ad
un “bug” del sistema, conoscerne i primi quattro byte usando il comando   ' 03 00 00 Identificati i
primi quattro byte non resta che far variare il byte rimasto tra il valore 00 ed FF (cioè i 256 possibili valori),
fino ad ottenere una risposta positiva da parte della card  01 00 00 3F 00 00 03 00 40 00 in luogo della
risposta negativa  01 7C 00 00 00 00 00 .

49
Risultato:

01 02 00 00 0D 03 00 0E 00 00 00 00 00 00 00 00 00 00 %$&'((( 

Valore che rimane invariato salvo non venga inviato un nuovo comando che abbia esito positivo, in tal caso
la successiva Signature sarà diversa. Infatti essa, con tutta probabilità è generata tenendo conto del
contenuto della Smart Card.

50
--------------------------------------------------------------------
&ODVV&RPDQGL """  &/ 
--------------------------------------------------------------------

,6 R1 R2 Length. )XQ]LRQH

 00 00  RESET
 00 00  ff ff ff
 00 00  ASCII Serial +?
 00 00  Disable Write Protection, must follow nr.20 “FF”
 00 01  data expects if Ref1=1, how long? Error 67
 00 00  supplies 15 byte
 00 00  00 00 ff ff

51
--------------------------------------------------------------------
&ODVV&RPDQGL (&0  &/ 
--------------------------------------------------------------------

DATA DIVISION
Comando Azione
Class Length Azione Parametro Length Nano+ Nano Par Nano Par Signature Check Byte
1 1 x x
Signature
Xor di tutti
5 byte
   00 00 XX XX i byte +
Xor 3F
14243

Questo valore istruisce la Smartcard su, quale dato deve/devono agire il/i nanocomando/i
che la seguono

7LSRGLLQIRUPD]LRQLVXFXLDJLUH 3URYLGHU /XQJK


        Commenti
 0 0 0 Operazione su Hex serial
 0 0 0 Operazione Provider
  Provider 00
  Provider 10

  
Numero di byte validi che
  
seguono.I restanti fino a
concorrenza di 4 avranno
valore “00”
  

  

Valori frequenti (o per lo meno accertati)


0 0 0 0 0 0 1 0  ProvGroup00
0 0 0 0 0 0 1 1  ProvID00
0 0 0 0 1 0 1 0 $ ProvGroup10
0 0 0 0 1 0 1 1 % ProvID10
1 0 0 0 0 0 1 1 & Serial Hex

Risposta dalla SMARTCARD

Length DATI
  00 00 3F 00 00 03 Commando accetato
70 00 00
71 00 00 Commando non accetato, Provider ID Errato
72 00 00 Commando non accetato, Provider Group Errato
74 Comando non diretto a me
7B 00 00 Comando non accettato
7C 00 00 00 00 00 Commando non accetato,signatura Errata

52
--------------------------------------------------------------------
&ODVV&RPDQGL *(7  &/ 
--------------------------------------------------------------------

Comando
Class Length Check Byte
  ,6 R1 R2 XX Xor di tutti i
byte + Xor 3F

,6 R1 R2 Length 9DORUH Lung Funzione


. Risposta
 03 00   *HW&DUGV6HULDO1XPEHULQ$6&,,

 03 00 00 10 *HW&DUGV6HULDO1XPEHULQ+(;

 03 00 00 10 Get Cards Country Code


 03 00 00 18 Get Provider ID 00
 03 01 00 18 Get Provider ID 10
 00 00 01 a 3C Dump Channel id – blocchi da 00 a 09 – Prov. 00
 00 01 01 a 3C Dump Channel id – blocchi da 00 a 09 – Prov 10
 00 00 01/02 a Dump Channel id – blocchi da 00 a 09
 00 00 00 Allow 01 02 08 command for register dump. This
only needs to be run once.
 00 00 00 20 Register dump
 03 XX 40 << 40 Send CAM Key - length (40) XX = Key Number
(00 to 07) , YY = 8x9bytes keys. Vedi es. 1
$ 00 03 02 length (2), xx xx; CHECK dboxpin > 51: nok
50:ok
$ 01 01 04 (4 bytes) xx xx yy yy; cambia il pin, pin x=vecchio, pin
y=nuovo
$ 01 03 04 (4 bytes) xx xx yy yy; set dbox-pin x=vecchio,y=nuovo
$ 02 03 02 length (2), xx xx; CHECK dboxpin > 51:nok 5E:ok
% 00-03 00 GET Cards Country code OTHER way
& XX 00-02 zeros?
Ottiene i primi quattro bytes della signature dopo una
' 00 00 00 0E risposta non corretta
zeros + 4 byte signature with < C8000
( 02 00 00 40 READ Card file 1
( 03 00 00 40 READ Card file 2
Ottiene il Serial Number in formato ASCII, il ProvID
per Provider 00 ed una stringa di 8 + 5 byte.
) 00 00 00 1D &''($)

Anche per card Irdeto di paesi diversi. Si


presume che la stringa di 8 byte sia una
signature.
Ottiene il Serial Number ASCII, il ProvID per Provider
10 ed una stringa di 8 + 5 byte
) 00 01 00 1D )(&)$% .
Anche per card Irdeto di paesi diversi. Si presume che
la stringa di 8 byte sia una signature.
 00 00/01
???
 XX 00-
05??
?
 00 00/01
???

53
Esempio 1 – Send Cam Keys.

 02  03 XX 40 Y0 Y0 Y0 Y0 Y0 Y0 Y0 Y0 Y1 Y1 Y1 Y1 Y1 Y1 Y1 Y1 Y2 Y2 Y2 Y2 Y2 Y2 Y2

Y2 Y3 Y3 Y3 Y3 Y3 Y3 Y3 Y3 Y4 Y4 Y4 Y4 Y4 Y4 Y4 Y4 Y5 Y5 Y5 Y5 Y5 Y5 Y5 Y5 Y6 Y6 Y6 Y6
Y6 Y6 Y6 Y6 Y7 Y7 Y7 Y7 Y7 Y7 Y7 Y7 s1

- XX, Varia in funzione della chiave da utilizzare, da 00 a 07 si va ad utilizzare da Y0 a


Y7
- Y0 = Cam Key 00
- Y1 = Cam Key 01
- ~
- Y7 = Cam Key 07

- Risposta della SmartCard :


- 01 02 55 00 09 xx 00 00 6y = Chiave Accettata (6y = CRC)
- 01 02 57 ecc. = Chiave errata

Risposte dalla SMARTCARD

Comando a cui è
diretta la riposta
  00 00 ,6 R1 R2 Lng Ok – la parte restante contiene la risposta
00 50 Nok
54 00 Nok
55 00 Nok
41
67 Errore di lunghezza
69 Comando non disponibile
6B Errore su Reference (byte 4+5)
6D Errore su Codice Istruzione (byte 3)
6E Errore su Classe di Istruzione
6F No DIAGNOSTICS
7C Errore di Signature

54
--------------------------------------------------------------------
&ODVV&RPDQGL 3URJUDP  &/ 
--------------------------------------------------------------------

Si consiglia di utilizzare questi comandi dopo aver utilizzato i programmi di classe 6 e per riprogrammare una
scheda azzerata, una volta entrati in program mode non si possono inviare reset alla scheda (r0) pena
l’uscita dal program mode, per maggiori informazioni vedere il capitolo Tips&Tricks (Come Rianimare le
schede Azzerate o come cambiare il [Link] di una scheda)

Comando
Class Length
  ,6 R1 R2 XX

,6 R1 R2 Length. )XQ]LRQH

 00 00  Enter in Program Mode, seguono ascii serial nella


forma [, vedi es.1
 00 00 ' Comando di conferma per il Program Mode,
contiene una stringa fissa di bytes, vedi es. 2
 00 00  Scrive il Buffer (32 bytes di dati), si possono
inserire 32 “00”
 00 00 % Write ProviderID 00, vedi es. 3
 00 01 % Write ProviderID 10, vedi es. 3
% 00 00 & Write Country Code, vuole in ingresso il CoCo
nella forma della risposta da 01 02 0B, vedi es. 4
& 00 00  Close Program Mode

Esempio 1 – Enter in Program Mode.

 03  00 00 15 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x s1

- Risposta della SmartCard :


- 01 03 62 00 01 00 00 00 XX = Signature errata
- 01 03 61 00 01 00 00 00 XX = Signature corretta

Esempio 2 – Confirm Program Mode.

 03  00 00 0D 24 C4 02 09 4B f1 f8 0f s1

- I bytes dopo lo “0D” possono essere sostituiti con “AA”


- Risposta della SmartCard :
- 01 03 00 61 02 00 00 00 XX = Signature errata
- 01 03 00 60 02 00 00 00 XX = Signature corretta

55
Esempio 3 – Write ProvID.

 03  00 XX 3B PP 00 00 00 00 00 00 YY YY YY ZZ ZZ AN AN AN AN AN AN AN AN AN AN

AN AN KK KK KK KK KK KK KK KK K1 K1 K1 K1 K1 K1 K1 K1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1
R1 R1 R1 R2 s1

- XX, 00 = Provider 00, 01 = Provider 10


- PP, 00 = Provider 00, 11 = Provider 10
- YY = Prov_ID
- ZZ = Date
- AN = Bytes che completano la risposta : I bytes che vanno da “PP” ad “AN” si posso
copiare dalla risposta al comando 01 02 03 03 00 00 per il Provider00 e dalla risposta al
comando 01 02 03 03 01 00 per il Provider10 di una scheda funzionante, sono 24
bytes.
- KK = Key 0 – Non se ne cosce il significato, possono essere inseriti a “00”
- K1 = Key 1 – Non se ne cosce il significato, possono essere inseriti a “00”
- R1 = 11 bytes, si ricavano dalla risposta del comando 01 02 0C 00 00 00 per il
Provider00 e dalla risposta del comando 01 02 0C 00 01 00 per il Provider00 dato su
una scheda funzionante
- R2 = Byte di chiusura, si ricava dalla risposta del comando 01 00 01 00 00 00 dato su
una scheda funzionante, è l’8° byte.
- Risposta della SmartCard :
- 01 03 00 61 07 00 00 00 XX = Signature errata
- 01 03 00 61 07 00 00 00 XX = Signature errata

Esempio 4 – Write CoCo.

 03 % 00 00 1C XX XX XX R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 s1

- XX = Country Code
- R1 = Bytes che completano la risposta : I bytes che vanno da “XX” ad “AN” si posso
copiare dalla risposta al comando 01 02 0B 03 00 00.
- Risposta della SmartCard :
- 01 03 00 61 0B 00 00 00 XX = Signature errata
- 01 03 00 61 0B 00 00 00 XX = Signature errata

56
--------------------------------------------------------------------
&ODVV&RPDQGL 6(7  &/ 
--------------------------------------------------------------------

,6 5 5 )XQ]LRQH

 00 00 &DPELRGHO6HULDOLQIRUPDWR$6&,,±IXQ]LRQDVRORFRQ

OH6PDUW&DUGQRQSURWHWWHGDVFULWWXUD
 00 00 $WWLYDODSURWH]LRQHGDVFULWWXUD
 00 00 5LFKLHWDGLVWDWRVXOZULWHSURWHFWHG

Esempio del cambio dell’ ASCII Serial.

 04  00 00 14 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 43 36 35 31 30 36 41 20 20 20

QRWDWHFKHODULVSRVWDFRQWLHQHWXWWLFDUDWWHUL$6&,,VWDPSDELOL

Sostituire le x con il numero che si vuole abbia il Serial ASCII .


Qualora il comando non dovesse funzionare sostituire la parte incorniciata con una delle seguenti:

43 37 30 32 32 32 41 20 20 20
interpretazione ASCII C70222@

43 36 33 39 30 36 41 20 20 20
interpretazione ASCII C63906@

43 36 35 31 30 36 41 20 20 20
interpretazione ASCII C65106@

Risposta dalla SMARTCARD

01  40 non protetta
41 protetta

57
Calcolo del valore ci controllo del Serial ASCII

E’ probabile che molti di voi si siano chiesti a cosa serva l’ultimo valore del
Numero di Serie stampigliato sulla card, che tra l’altro non ne è stata ancora
trovata traccia nei registri interni. La risposta potrebbe essere che serva a
YDOLGDUH i valori precedenti, (in altre parole, un pò come l’ultimo carattere
del codice fiscale).
Il modo per effettuarne il calcolo è il seguente:

Posizione 1 2 3 4 5 6 7 8 9 10 11
Serial ASCII           
Moltiplicare
Pos. pari x1 X1 X1 X1 X1 X1
Pos. dispari x2 X2 X2 X2 X2 X2
Somma dei
14= 18= valori
1+4= 1+8= precedenti
Risultato           
VFDUWDUH
OHGHFLQH
 – x


Per completare il quadretto mancherebbe solo da capire la relazione tra Serial HEX e Serial ASCII.

58
--------------------------------------------------------------------
&ODVV&RPDQGL .(<5(48(67  &/ 
--------------------------------------------------------------------

Comando Length DATA DIVISION


Class Check Byte
 05 ,6 R1 R2 XX

Ch ID Provid Nr. Key 00 Lungh Nano’s Signature


Command’s 5 byte

I nano comandi ammessi sono:

 (02) SETTAGIO ATTUALE DATA (2 BYTES)


 (12) NR. KEY + ZZ =(13 / 12) + 16 BYTE (2 KEYS?)

,6 5 5 )XQ]LRQH

 00 00 - 02 5LFKLHVWD±,QYLDLO&KDQQHO,'LO.H\1XPEHUHOD.H\ vedi
es. 1

Esempio 1 – Channel Key Request.

 05  00 XX 23 YY YY PP KN 00 ML [40 02] ZZ ZZ [78 12] KN KP K1 K1 K1 K1 K1 K1 K1 K1

K2 K2 K2 K2 K2 K2 K2 K2 s1

- XX, 00 = Viene utilizzata solo una chiave – 02 = Vengono utilizzate entrambe le chiavi
- YY = Channel ID
- PP, 00 = Provider 00, 10 = Provider 10
- KN = Key Number (02. 04. ecc. ecc.)
- ML = Message Lenght, lunghezza del messaggio rimanente
- ZZ = Channel ID Date
- KP = Key Discriminator, 00 o 12 = utilizzare K1, 01 o 13 = Utilizzare K2, se XX = 02
allora vengono utilizzate entrambe le chiavi
- K1 = La prima chiave da 8 bit
- K2 = La seconda chiave da 8 bit
- Nota bene che il nano [40 02] a volte si trova nella forma [00 02]

59
Risposta dalla SMARTCARD

01  90 00 00 Non accesso per questo Channel Id o manca la key


9C 00 00 Masterkey Errore
9D 00 38 YY 00 OK Su questo Channel Id si puo dare Accesso, Channel Id
valida YY=00 se nel comando 78(12) il valore ZZ=13, YY=01
se ZZ=12 + ChannelID + Single/DoubleKey-byte + FFFF +
(8+8 bytes per 2 chiavi oppure 8 bytes per 1 chiave). Vedi es. 2
9E Scheda non attivata !!
9F Errore sconosciuto della scheda!
A0 Bouquet falsa!!

Esempio 2 – Smart Card Answer.

 05 ' 00 38 YY ?? ?? ID ID PR KT FF FF K1 K1 K1 K1 K1 K1 K1 K1 K2 K2 K2 K2 K2 K2 K2

K2 s1

- YY = 00 Si risponde all’invio di una chiave valida, 01 Si risponde all’invio di due chiavi


valide
- ?? = Due Bytes, non se ne sa l’utilizzo
- ID = Channel-ID
- PR = [Link], 00 oppure 10
- KT, 00 = Viene restituita solo una chiave – 02 = Vengono restituite entrambe le chiavi
- K1 = La prima chiave da 8 bit
- K2 = La seconda chiave da 8 bit

Per una spiegazione ed esempi più esaustivi si rimanda alla consulatazione di Actvate V11 di
007.4 ([Link] di Kenzo) oppure nel capitolo “Il Processo di Decrittazione”.

60
--------------------------------------------------------------------
&ODVV&RPDQGL 3URJUDP  &/ 
--------------------------------------------------------------------

Si consiglia di utilizzare questi comandi per riprogrammare una scheda azzerata, una volta entrati in
program mode non si possono inviare reset alla scheda (r0) pena l’uscita dal program mode, per maggiori
informazioni vedere il capitolo capitolo Tips&Tricks (Come Rianimare le schede Azzerate o come cambiare il
[Link] di una scheda)

Comando
Class Length
  ,6 R1 R2 XX

,6 R1 R2 Length. )XQ]LRQH

 00 00  Enter in Program Mode, seguono ascii serial nella


forma [, vedi es.1
 00 00 ' Comando di conferma per il Program Mode,
contiene una stringa fissa di bytes, vedi es. 2
 00 00 $ Write Serial, vedi es.3
 00 00  Write Card Type, vedi es.4
 00 02  Write Card File per il ProviderID 00, vedi es.5
 00 03  Write Card File per il ProviderID 10, vedi es.5
 00 00  Close Program Mode
$ 00 00 % Seguono 6 bytes a “00”, non se ne conosce
l’effetto.

Esempio 1 – Enter in Program Mode.

 06  00 00 15 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x s1

- Risposta della SmartCard :


- 01 06 62 00 01 00 00 00 XX = Signature errata
- 01 06 61 00 01 00 00 00 XX = Signature corretta

Esempio 2 – Confirm Program Mode.

 06  00 00 0D 24 C4 02 09 4B f1 f8 0f s1

- I bytes dopo lo “0D” possono essere sostituiti con “AA”


- Risposta della SmartCard :
- 01 06 00 61 02 00 00 00 XX = Signature errata
- 01 06 63 00 02 00 00 00 XX = Signature corretta

61
Esempio 3 – Write Serial.

 06  00 00 2A R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 VV TT TT TT TT TT TT

TT TT TT TT TT TT TT TT TT TT TT TT TT R2 s1

- R1 = 16 bytes, si ricavano dalla risposta del comando 01 02 01 03 00 00 dato su una


scheda funzionante.
- VV = Byte variabile, serve come variabile per il corretto checksum della stringa, si deve
calcolare in base alla risposta del comando per l’interrogazione del serialhex.
Inizialmente si pone a “00”, se si ha risposta errata allora lo si incrementa di uno e si
riprova finchè non si ottiene una risposta corretta (la risposta corretta è identificato dal
byte di checksum contenente il valore 0x18 che appare dopo il [Link] nella risposta
della SmartCard, se non appare 0x18 allora il comando è stato rifiutato e bisogna
tentare di nuovo variando il VV).
- TT = 19 bytes, attualmente non si sa come si ricavano, si consiglia di inserirli tutti a
“00”.
- R2 = Undicesimo byte dalla risposta del comando 01 00 01 00 00 00 dato su una
scheda funzionante.
- Risposta della SmartCard :
- 01 06 00 61 03 00 00 00 XX = Signature errata
- 01 06 64 00 03 00 00 00 XX = Signature corretta

Esempio 4 – Write Card Type.

 06  00 00 29 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 R1 PP PP PP PP PP PP PP PP R2

R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 R2 s1

- R1 = 13 bytes, si ricavano dalla risposta del comando 01 02 02 03 00 00 dato su una


scheda funzionante, la risposta è lunga 16 bytes, si scartano gli ultim 3bytes (CoCo)
che qui non vengono utilizzati.
- PP = Pin, sono i PIN presenti sulla scheda, possono essere impostati a “00”
- R2 = 15 bytes, si ricavano dalla risposta del comando 01 02 01 03 00 00 dato su una
scheda funzionante.
- Risposta della SmartCard :
- 01 06 00 61 04 00 00 00 XX = Signature errata
- 01 06 65 00 04 00 00 00 XX = Signature corretta

Esempio 5 – Write Card File.

 06  00 XX 45 YYx64 s1

- XX, 02 = Provider 00, 03 = Provider 10


- YY = 64 bytes of CardFile, si posso ricavare con il comando 01 02 0E 02 00 00 per il
Provider00 e 01 02 0E 03 00 00 per il Provider10 oppure si possono mettere tutti a “00”
- Risposta della SmartCard per XX=02:
- 01 06 00 61 06 00 02 00 XX = Signature errata
- 01 06 67 00 06 00 02 00 XX = Signature corretta
- Risposta della SmartCard per XX=03:
- 01 06 00 61 06 00 03 00 XX = Signature errata
- 01 06 67 00 06 00 03 00 XX = Signature corretta

62
I Nano Comandi – Il cuore della programmazione
I nanocomandi sono quei comandi che agiscono direttamente con le informazioni funzionali della scheda e
permettono la modifica effettiva dei parametri di decrittazione e visione dei programmi eccone una lista
proveniente da Log&Crd debitamente aggiornata

1$12&2'(6

2 Bytes Nanos = %\WH&RPPDQGR+ (1 Byte Lungezza del Nanos)

 (02) SETTAGIO ATTUALE DATA (2 BYTES)

 (09) SETTAGIO KEY PROVIDER GROUP (1 BYTE KEY IDENTIFICATOR + 8 BYTE KEY)
 (52) SETTAGIO MULTIKEY (2 KEYS) PROVIDER GROUP
 (E4) SETTAGIO MULTIKEY (4 KEYS) PROVIDER GROUP

 (06) ATTIVAZIONE/MODIFICA/DISATTIVAZIONE CHANNEL ID (2 BYTES CHANNEL ID, 2 BYTES


DATA, 2 BYTES LIMITE DI DATA)

 (01) 1 BYTE CHE RAPPRESENTA PROBABILMENTE IL TIMER DI SCADENZA PER IL PROVIDER


GROUP ( È RILEVABILE CON IL COMANDO 01 02 03 03 00 00, LEGGERE PIÙ AVANTI)

 (0D) CAMBIA PROVIDER 00/11 (PROV00=00, PROV10=11.) + 00 MASTERKEY (00+8 BYTES) +


PROVIDER ID(3 BYTES)

 (02) SETTAGIO ATTUALE DATA (2 BYTES)

 (09) SETTAGIO KEY PROVIDER GROUP (1 BYTE KEY IDENTIFICATORE + 8 BYTE KEY)
 (52) SETTAGIO MULTIKEY (2 KEYS) PROVIDER GROUP
 (E4) SETTAGIO MULTIKEY (4 KEYS) PROVIDER GROUP

 (06) ATTIVAZIONE/MODIFICA/DISATTIVAZIONE CHANNEL ID (2 BYTES CHANNEL ID, 2 BYTES


DATA, 2 BYTES LIMITE DI DATA)

 (02) DATE ???


 (06) SEI BYTE NORMALMENTE TUTTI A 00 ( COMANDO PRESENTE SOLO DURANTE
L’ATTIVAZIONE DELLE CARD)

 (00) CANCELLAZIONE TUTTI I CHANNEL ID

 (02) METTE 2 BYTES DIETRO ALLA DATA (31 00, SINN ?)


 (06) 6 BYTES PER CHE COSA ??? (NORMALMENTE SEMPRE 00 00 00 00 00 00)

 (01) 1 BYTE CHE RAPPRESENTA PROBABILMENTE IL TIMER DI SCADENZA PER IL PROVIDER


GROUP ( È RILEVABILE CON IL COMANDO 01 02 03 03 00 00, LEGGERE PIÙ AVANTI)

) (CC) MODIFICA IL CONTENUTO DI 4 REGISTRI (REG1, LOW BYTE, HIGH BYTE, REG2, LOW
BYTE, HIGH BYTE, REG3, LOW BYTE, HIGH BYTE, REG4, LOW BYTE, HIGH BYTE)

) (46) MODIFICA IL CONTENUTO DI 2 REGISTRI (REG1, LOW BYTE, HIGH BYTE, REG2, LOW
BYTE, HIGH BYTE)

) (C3) MODIFICA IL CONTENUTO DI UN REGISTRO (REG1, LOW BYTE, HIGH BYTE)

 (03) SETTA IL COUNTRY DI APPARTENENZA DELLA CARD

 (0D) CAMBIA PROVIDER 00/11 (PROV00=00, PROV10=11.) + 00 MASTERKEY (00+8 BYTES) +


PROVIDER ID(3 BYTES)

63
 (12) NR. KEY + (12 / 13) + 16 BYTE (2 KEYS?)

 (06) CANCELLAZIONE CHANNEL ID

 (00) CANCELLAZIONE TUTTI I CHANNEL ID

 (03) ATTENZIONE!!!!! QUESTO NANOCOMANDO E’ PERICOLOSO!!!! SEMBRA CHE SIA UN


ANALOGO DEL COMANDO ) (C3) MA SIN’ORA NON SE NE E’ ACCERTATO IL
COMPORTAMENTO, IN APPARENZA SERVIREBBE A SETTARE UN REGISTRO, NELL’UNICO
CRD DOVE COMPARE PER LA PRIMA VOLTA HA RESO INUTILIZZABILE LA SMARTCARD.

 (02) ??? HA A CHE FARE CON LA DATA??

&% (20) SELEZIONARE LA CARD IN PROVIDER GROUP (32 BYTES X 8BIT = 256 CARD)

$ (02) CANCELLA KEY


$ (0A) CANCELLA KEY

; VRQR FRPHJOL [  VHPSOLFHPHQWH DGDOWDSULRULWj RSSXUH RYHUZULWH  LQVRPPD VHPEUD VLDQR
FRPDQGL³IRUWLFPTQRQVRQRJOLXQLFLWXWWLLQDQR;KDQQRLOFRUULVSHWWLYR;FRPSUHVRTXHOOR

SHUODNH\HFFVHQRQIXQ]LRQDQRLIUDWHOOLSLFFROL;XVDWHL;´´´´

TXLQGLVWDQGRDTXDQWRDVVHULWRSULPDWXWWLLFRPDQGLFRPSUHVLWUDORH)SRWUHEEHURDYHUH

LOORURRPRORJRGDD)DGDOWDSULRULWjFRPHVHLOELWVWDELOLVVHTXHVWRWLSRGLIXQ]LRQDOLWj

       

"  ; ; ; ; ; ; 3ULRULWjQRUPDOH

"  ; ; ; ; ; ; 3ULRULWjDOWD

Qui di seguito riporto un mio tentativo di dare una spiegazione logica alla struttura dei comandi IRDETO

""3ULRULWj&DWHJRULD&RPDQGL

6786786444744486444447444448
GL1DQRFRPDQGL SHURJQLFDWHJRULD

        'HVFUL]LRQH

  [

  [ Agisce sulle Key



  [

  [

   [

  [

  [

  [

  [ ; ; ; ;

  [

  $[

  %[

  &[
  '[

  ([
  )[

64
&216,'(5$=,21,68/&20$1'2

&% (20) SELEZIONARE LA CARD IN PROVIDER GROUP (32 BYTES X 8BIT = 256 CARD)

Il Comando in questione, altro non è che un meccanismo con il quale è possibile selezionare nell’ambito di un Provider
Group uno specifico numero di carte contemporaneamente. Esso dovrebbe essere inviato SULPD del nanocomando che
deve compiere l’operazione. Questo permette alle card di stabilire se accettarlo o meno.

Pertanto una sequenza così strutturata permette ad un certo numero di card di ricevere, per esempio, il comando di
attivazione per un determinato Channel ID :

SJURXSD[[

&% (20)

00 00 00  30 92 02 00 04 10 01 00 00 00 00 08 10 00 40 00 01 00 00 10 00 00 00 10 20 40 82 01

 (06) FF 02 04 b8 00 00

32x8 =256 che altro non e’ che il numero complessivo delle Card di quel gruppo,
ognuno dei quali rappresenta in base alla posizione che riveste, la Card
nell’ambito del Provider Group:

0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 10 11 12 13 14 15 16 17 18 19 1 1 1 1 1 1
A B C D E F A B C D E F
00 08 10  20 28 30 38 40 48 50 58 60 68 70 78 80 88 90 98 A A B B C C D D E E F F
a a a a a a a a a a a a a a a a a a a a 0 8 0 8 0 8 0 8 0 8 0 8
07 0 17  27 2 37 3 47 4 57 5 67 6 77 7 87 8 97 9 a a a a a a a a a a a a
F ) F F F F F F F F A A B B C C D D E E F F
7 F 7 F 7 F 7 F 7 F 7 F

Per il calcolo è possibile applicare la seguente formula :

POSIZIONE(esadecimale) X 8 + POSIZIONE RELATIVA DEL BIT


Es: 03h x 8 = 18h + 3 = 1Bh

prendiamo ad esempio il valore del %\WHLQSRVL]LRQH che rappresenta , quindi,


le card dalla 18 alla 1F, il suo valore in forma binaria (12)= 00010010.
Posizione relativa 0 1 2 3 4 5 6 7
Valore bit 0 0 0 1 0 0 1 0
Posizione assoluta   $ % & ' ( )
Card Selezionata

* = card interessata all’operazione

Per chiarezza in questo esempio vengono selezionate le card con ProvID D%D(

65
Altro esempio, stavolta di una disattivazione:

 (06) FF 02 e prima di questi

&% (20) i cui byte stavolta sono:

FF FF FF ED CF 6D FD FF FB EF FE FF FF FF FF F7 EF FF BF FF FE FF FF EF FF FF FF EF DF BF 7D FE

pertanto ED = 11101101

Posizione relativa 0 1 2 3 4 5 6 7
Valore bit 1 1 1 0 1 1 0 1
Posizione assoluta   $ % & ' ( )
Card Selezionata

* = card interessata all’operazione

Per chiarezza in questo esempio vengono selezionate le card con ProvID DDD$D&D'
D)

Quindi l’operazione viene inviata a una serie di card nell’ambito di un ben definito Provider Group. Per identificare
la/le card interssata/e dall’operazione è sufficiente indentificare lo stato del bit corrispondente alla posizione nell’ambito
dei 256 bit possibili.

66
Come si scrive un file CRD

Bene, siamo arrivati al punto in cui possiamo scrivere un bel comando, per fare ciò basta un normale editor
di testi (va bene anche il notepad di windows), una volta lanciato il programma iniziamo a scrivere (ogni riga
riporta i bytes spiegati nella riga precedente in modo di avere alla fine il comando completo):

r0 – Reset SmartCard – è opportuno inserire una riga con questo comando ogni
volta che andiamo a scrivere un nuovo crd
[01] – intestazione, è uguale per tutti i comandi

Ora per esempio vogliamo scrivere un crd per l’inserimento della chiave 02 del provider 00, innanzitutto
andremo a settare il datestamp di sistema per il provider00, quindi avremo bisogno di un comando classe 1
(ECM) . . .
01 [01] – comando di classe 1 (ECM)
01 01 [00 00 00] – istruction e reference della classe 1 (assenti)
01 01 00 00 00 [XX] – lunghezza in bytes del data-division la calcoleremo alla
fine
01 01 00 00 00 XX [02] – Vado ad operare sul ProviderGroup00 – mi aspetto un
totale di 4 bytes di cui i due rimanenti (il ProviderGroup occupa solo 2 bytes)
saranno a 00
01 01 00 00 00 XX 02 [p0] – Macro CRD (le andremo ad esaminare dopo), e’ una
macro che i programmi compatibili con lo standard crd interpretano, in questo
caso il programma va a leggere il ProviderGroup00 e lo inserisce come parametro
al comando di operazione su ProviderGroup00 [02] che precede la macro
01 01 00 00 00 XX 02 p0 [00 00] – Bytes di padding (riempiono i due bytes a zero
come spiegato sopra)
01 01 00 00 00 XX 02 p0 00 00 [YY] – Lunghezza in bytes dei nanocomandi e
relativi argomenti che seguono, compresa signature, anche essa dovrà essere
calcolata alla fine.

01 01 00 00 00 XX 02 p0 00 00 YY [40 02] – NanoComando per il settaggio della


datestamp di sistema per il provider00, si aspetta 2 bytes di data.

01 01 00 00 00 XX 02 p0 00 00 YY 40 02 [i0date;] – Macro CRD che chiede


interattivamente di fornire la data (i due bytes vanno inseriti di seguito senza
spazi)

01 01 00 00 00 XX 02 p0 00 00 YY 40 02 i0date; [95 02 01 E2 01 02 03 04 05] –


NanoComando e dati di settaggio che segue l’impostazione di un datestamp, se ne
ignora il funzionamento

Ora calcoliamo le rispettive lunghezze e le andiamo ad inserire al posto di XX e


YY, quindi avremo 01 01 00 00 00 13 02 p0 00 00 0D 40 02 i0date; 95 02 01 E2 01
02 03 04 05

Questa prima riga setta la data del provider 00, passiamo ora a settare la chiave :

r0 – Reset SmartCard

[01 01 00 00 00] – questo oramai lo conosciamo

01 01 00 00 00 [XX] – anche questo

01 01 00 00 00 XX [02 p0 00 00] – come prima andiamo ad operare sul


ProviderGroup00

01 01 00 00 00 XX 02 p0 00 00 [YY] – anche questo

67
01 01 00 00 00 XX 02 p0 00 00 YY [40 02] – settiamo di nuovo il datestamp di
sistema, questa volta non ci sarà necessità del nano 95(02) perche’ l’andremo a
leggere direttamente dalla scheda nel passo successivo.

01 01 00 00 00 XX 02 p0 00 00 YY 40 02 [t0] – Macro CRD, legge dal provider00 il


datestamp corrente e lo inserisce come argomento del comando precedente.

01 01 00 00 00 XX 02 p0 00 00 YY 40 02 t0 [CB 20] NanoComando che seleziona un


gruppo di carte nel providergroup, segue l’argomento.

01 01 00 00 00 XX 02 p0 00 00 YY 40 02 t0 CB 20 [FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF] - in questo
caso facciamo in modo che questa chiave agisca su tutte le 256 carte che posso
appartenere al ProviderGroup00, infatti nell’argomento che segue (32 bytes x 8)
sono selezionate tutte le 256 possibili carte (per i dettagli del comando CB(20)
si rimanda al capitolo precedente)

01 01 00 00 00 XX 02 p0 00 00 YY 40 02 t0 CB 20 FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF [10 09] –
nanocomando per l’inserimento della KeyProviderGroup, aspetta in argomento 9
bytes di cui il primo e’ il Key Identificator.

01 01 00 00 00 XX 02 p0 00 00 YY 40 02 t0 CB 20 FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 10 09
[i0chiave_senza_spazi;] – Macro CRD che richiede interattivamente la chiave.

01 01 00 00 00 3C 02 p0 00 00 36 40 02 t0 CB 20 FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 10 09
i0chiave_senza_spazi; [s1]- Macro CRD che calcola la signature (per brevità ho
inserito le lunghezze).

Riepilogando il nostro CRD sarà composto dalle seguenti righe :

r0
01 01 00 00 00 13 02 p0 00 00 0D 40 02 i0date; 95 02 01 E2 01 02 03 04 05
r0
01 01 00 00 00 3C 02 p0 00 00 36 40 02 t0 CB 20 FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 10 09
i0chiave_senza_spazi; s1

Per chiarezza inseriamo qualche commento :

// Macro di inserimento Chiave nel Provider 00


// Reset Card
r0
// Inserimento DateStamp di sistema
01 01 00 00 00 13 02 p0 00 00 0D 40 02 i0date; 95 02 01 E2 01 02 03 04 05
// Reset Card
r0
// Inserimento chiave
01 01 00 00 00 3C 02 p0 00 00 36 40 02 t0 CB 20 FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 10 09
i0chiave_senza_spazi; s1

Ed ecco il nostro crd pronto per essere dato in pasto alla nostra schedina.

68
Andiamo ora ad analizzare qualche comando crd per verificarne il funzionamento :

Crd di attivazione Channel-ID

// Activate Stream Calcio


01 01 00 00 00 17 02 p0 00 00 11 40 02 T0 51 06 FF DF 00 00 FF 00 s1
| |---------- | | | |---- | |---- | |---- |---- |---- |---- |
| | | | | | | | | | | | | |-> Calcola
| | | | | | | | | | | | | Signature
| | | | | | | | | | | | |-> Expiration
| | | | | | | | | | | | Date (mai)
| | | | | | | | | | | |-> DateStamp
| | | | | | | | | | |
| | | | | | | | | | |-> Channel-ID
| | | | | | | | | |
| | | | | | | | | |-> Nanocomando per l’inserimento del
| | | | | | | | | Channel-id
| | | | | | | | |-> Macro CRD, legge la data e la setta
| | | | | | | | su Provider00
| | | | | | | |-> Nanocomando set data di sistema
| | | | | | |
| | | | | | |-> Lunghezza in bytes dei nanocomandi e
| | | | | | rispettivi argomenti + signature
| | | | | |-> Bytes di padding (vedi Comandi Classe 01)
| | | | |
| | | | |-> Macro CRD, Legge il ProvGroup00 della SC e lo
| | | | inserisce
| | | |-> Operazione su ProviderGroup00
| | |
| | |-> Numero dei Bytes in Hex fino alla fine della riga crd.
| |
| |-> Comando di Classe 01 (ECM)
|
|-> Intestazione

Tabella Macro CRD


In questa tabella sono elencate le macro riconosciute da qualsiasi programma che utilizza i files CRD.

R0 - Card reset
T0 - Legge il date corrente del Provider 00 ed inserisce (2 Bytes)
T1 - Legge il date corrente del Provider 10 ed inserisce (2 Bytes)
S0 - Legge il serial number in HEX ed inserisce (3 Bytes)

S1 - Termina la strigna e prova tutte le 256 possibilità una dietro l'altra

P0 - Legge il set del Providergroup 00 ed inserisce (2 Bytes)


P1 - Legge il set del Providergroup 10 ed inserisce (2 Bytes)
P2 - Legge il set del Provider ID 00 ed inserisce (3 Bytes)
P3 - Legge il set del Provider ID 10 ed inserisce (3 Bytes)
I0 - Crea le finestre per l'inserimento dei parametri manualmente
Parametri: I0Nome_finestra; Permette di dare un nome alla finestra
il comando deve terminare con ';' Spazi nel nome VIETATI.

Ogni crd inizia sempre con la macro R0, che resetta la card.

69
Chiavi in chiaro e KeyProviderGroup facciamo chiarezza

Bene, a questo punto bisogna fare un po’ di chiarezza su le cosidette chiavi in chiaro e sulle
KeyProviderGroup, le seconde, vengono inviate dall’emittente ai vari ProviderGroup, sono differenti per ogni
ProviderGroup che le decritta e le mette finalmente in chiaro pronte per essere utilizzate per la decrittazione
del programma(i) televisivo associato. Le Chiavi in chiaro sono il frutto della decodifica delle
KeyProviderGroup, vanno bene per tutte le schede e sono relative al canale(i) alle quali sono associate,
vengono conservate in appositi registri della SmartCard che variano a seconda della versione di ACS. Di
seguito viene riportato un estratto da un messaggio di “Dunlop” su di un forum di DigitalSin :
Quindi le Key 02, 04, 06 eccetera, vengono inviate criptate ai gruppi di card, ciascuna card la
decripta e la memorizza nelle locazioni dalla 72 in poi, ogni posizione di memoria contiene solo 2
byte della key.
Pare fin’ora che la key decriptata sia uguale per tutte le card dello stesso provider.
La key decriptata ( che viene quindi definita PlainKey oppure PK), prima della memorizzazione
effettua un passaggio nella locazione 08, che svolge le funzioni di buffer, questo ci permette, per
mezzo dell’apposito comando conosciuto come DumpBuffer, di leggere la PK.
Quindi ottenuta la PK che ci interessa possiamo inserirla nella card, in questo modo bypassiamo il
sistema di controllo per la decodifica in quanto la key che la CAM ricerca, si trova già nella card
decodificata.
Per memorizzare la PK utilizziamo il nano 5F XX, di questo nano conosciamo finora 3 possibili
varianti:
5F CC - Utilizzato per inviare i dati a 4 indirizzi di memoria
5F 46 - Utilizato per inviare i dati a 2 indirizzi di memoria
5F 03 (oppure 5F C3) - utilizzato per inviare i dati a 1 indirizzo di memoria
Il nano 5F invia i dati in gruppi di 3 byte in cui il prime è sempre l'indirizzo in cui deve essere
memorizzato.
Quindi per prima cosa occorre creare la stringa da inviare e si crea in questo modo:
[Provider]+[PK]+[Chiusura]
Il provider è un byte che può essere 00 (se il provider è 00) o 01 (se il provider è 10)
Il byte di chiusura invece è 00 se il provider è 00 oppure FF se il provider è 10.
Ottenuta la stringa la dividiamo a gruppi di 2 Byte e inseriamo prima di ciascun gruppo la locazione
in cui dobbiamo memorizzare i byte.
Esempio:
Se dobbiamo inviare la PK 02 del provider 00, e sappiamo che gli indirizzi della key02-prov00 vanno
dalla 72 alla 76, avremo:
72 [00] [pk1] 73 [pk2][pk3] 74[pk4][pk5] 75[pk6][pk7] 76 [pk8][00]
A questo punto scegliamo il nano 5F che ci sembra più idoneo e creiamo il crd, settando la lunghezza
corretta ed il gioco è fatto.
Tenete conto del fatto che è ininfluente l'ordine con cui lo mettete nel crd, importa solo che alla
fine la PK sia
memeorizzata correttamente nelle locazioni di memoria giuste.
Questi nani agiscono direttamente sulle locazioni di memoria, quindi non danno la riposta corretta
di accettazione signature al cardmaster, che infatti continua a cercare l'ultimo byte fino al 256, e
non vi risponde "Comando accettato", comunque il nano viene registrato poichè in tutte le possibili
combinazioni c'era quella giusta.
Le controindicazioni sono ovvie, se il provider cambia la key di decodifica, il lavoro fatto è
inutile.

- Altro messaggio sempre di “Dunlop”

Allora la PK è una qualunque chiave di decodifica ( non necessariamente la 00) in forma non
criptata, cioè in chiaro (Plain).
Questo perchè la Key di codifica di un canale deve per forza essere uguale per tutti, viene solo
criptata in modo diverso a seconda del gruppo di provider.
Per conoscere la PK occorre far fare il lavoro alla card in questo modo:
Trovare la Key di codifica per il proprio gruppo di card, o con un log, o in un archivio aggiornato.
Esempio la Key02 per Str**m del prov. 0354xx.
Inviare questa Key alla propria card con un classico crd che utilizzi il nano 10 09 - sconsigliato
l'uso del crd con il nano CB 20 in quanto è troppo lungo e supera la capacità del buffer, nel nano
non occorre inserire la signature con s1, ma è meglio mettere una signature fasulla tipo 00 00 00 00
00.
Lanciare il crd per il registro 07 che trovate in quasi tutte le raccolte di crd, ed è spiegato bene
anche nel manuale Capire log&crd, questo crd avvia l'algoritmo di decodifica della key e deposita la
key decodificata nel registro 08.
A questo punto lanciate il crd per la lettura del registro 08, che trovate negli stessi posti
indicati per il 07, e potete leggere la vostra PK.
Nel caso di Str**m la PK02 è sempre E6 xx xx 4e 99 xx ff 61.
A questo punto potete creare un crd con le modalità descritte nel post precedente ed inviarlo alle
locazioni giuste della memoria, nel caso di Key02-Prov00 vanno dalla 72 alla 76.
A questo punto dovrebbe essere chiaro perchè non possono coesistere sulla stessa card provider che
utilizzano la stessa key.
Ed è anche chiaro che se modificano la key di codifica, occorre cercare la nuova PK.
Naturalmente tutto questo è valido per le card v1.2, mentre per alcune 1.6 si è notato una
variazione delle locazioni di memoria, per cui potrebbe non funzionare.

70
Il processo di Decrittazione

Di seguito esponiamo il processo di Decrittazione che avviene tramite lo scambio di chiavi tra CAM e
SmartCard dopo l’inserimento della SmartCard, il documento è tratto da ACTIVATE V11 di 007.4 e tradotto
da Kenzo :

Questo che segue è una completa descrizione del processo di decriptaggio

Grazie al contributo di due anonimi

Nel dialogo iniziale fra la CAM e la card, la cam invia la Cam Key con il comando:
Inviato: IRD/Cam Key

01 02 09 03 xx 40
00 00 00 00 00 00 00 00 01 01 01 01 01 01 01 01
02 02 02 02 02 02 02 02 03 03 03 03 03 03 03 03
04 04 04 04 04 04 04 04 05 05 05 05 05 05 05 05
06 06 06 06 06 06 06 06 07 07 07 07 07 07 07 07

Con xx che vanno da 00 a 07. Il valore di xx determina quale delle 9 stringhe di byte deve essere utilizzata
per il processi di decriptaggio.

Così in:
01 02 09 03 00 40 vengono utilizzati i bytes da 00 a 07 (00 00 00 00 00 00 00 00)
01 02 09 03 01 40 vengono utilizzati i bytes da 08 a 15 (01 01 01 01 01 01 01 01)
01 02 09 03 02 40 vengono utilizzati i bytes da 16 a 23 etc..

Tuttavia, in alcuni sistemi xx è sempre 00 e vengono utilizzati solo i primi 9 bytes. In questi sistemi il i 40h
byte della cam key sembrano avere sempre lo stesso valore.
In altri sistemi (CI-cams e UEC decoder etc…) il valore della cam Key cambia ogni volta che si resetta.
Qualcuno conosce questo tipo di algoritmo. E’ uno pseudo-random oppure è un gruppo di numeri di diverse
cam key?.

Se i dati della card e della Cam sono corretti, la card accetta le key con:

Card accettata IRD/Cam Key


01 02 55 00 09 xx 00 00 6y

Il valore in 6y è il byte CRC (checksum).

Se si presenta un errore la riposta della card è:


01 02 57 ……..

e non avviene la decryptazione e la visione delle immagini.


--------------------------------------------------------------------------------------------
Dopo viene inviato un ECM.

Il primo passo è il controllo del ChID. La card controlla se il ChID contenuto nell’ECM si trova nella tabella
dei ChID con una data valida. Se la data è scaduta la card restituisce:
01 05 93 ……
se il ChID non è presente nella card, restituisce
01 05 90
e viene atteso il successivo pacchetto per il controllo.

Se il ChId è presente il passo successivo è la decryptazione della key.

Sono possibili due modalità e dipendono dal fatto che nella decriptazione venga utilizzata una Key ( prima
key o seconda key) oppure entrambe le key del comando ECM.
(VHPSLRGL(&0 (QWLWOHPHQW&RQWURO0HVVDJH 

71
01 05 00 00 kt 23 ch ID pp kn 00 1D 40 02
dd dd 78 12 kn kp z1 z1
z1 z1 z1 z1 z1 z1 z2 z2
z2 z2 z2 z2 z2 z2 ss ss
ss ss ss cs
Questo è distruttivo:-

01 05 00 00 kt 23 L’ ECM, lunghezza 23 bytes esadecimali. Kt indica se vegnolo utilizzate una


(kt=00) o due (kt=02) key.
ch ID Channel ID
pp Provider 00 oppure 10
kn Key number (02. 04. 0c etc.)
00 sempre 00? È un divisore?
1D Lunghezza
40 02 Set di data (può essere anche 00 02). Può trovarsi in diverse posizioni nella
stringa.
78 12 il nano 78 e la sua lunghezza
kn Nuovamente il numero di Key (02, 04, 0c etc.)
kp Blocco delle Key. Sempre 12 o 13 nel sistema Tedesco, ma potrebbe essere 00 o
01, solo il l’ultimo bit è significativo. Questo determina se deve essere utilizzato il
primo (z1) oppure il secondo (z2) degli 8 byte. Se kt=2 vengono utilizzati
entrambi.

z1 z1 z1 z1 z1 z1 z1 z1 I primi 8 bytes della key di decriptaggio


z2 z2 z2 z2 z2 z2 z2 z2 I secondi 8 bytes della key (non utilizzato?)
xx xx xx xx xx Signature
cs Il byte di controllo Checksum

Modalità 1 – Vengono utilizzate entrambe le key

Il primo ECM per ogni ChID ha sempre kt=02


01 05 00 00 02 xx (kt=02, a volte sono rischiesti entrambi gli 8 byte delle key)

Se la decriptazione ha successo la risposta è


01 05 9d….. e restituisce la data inclusa la key decriptata, e consente la visone delle immaggini.

Il gruppo di dati sarà qualcosa tipo:

01 05 9D 00 38 01 02 16
ch ID 00 kt FF FF k1 k1 k1 k1 k1 k1 k1 k1 k2 k2
k2 k2 k2 k2 k2 k2 cs

kt=2 in quanto la riposta è di 16 byte (k1+k2) dove k1 e k2 sono le key decriptate delle, rispettivamente, key
criptate z1 e z2.
Una volta che la CAM riceve uno 01 05 9d 00 risponde (decodificando) ed inizia ad inviare la stringa 01 05
00 00 00.
(se kt=00 vengono restituiti solo 8 byte della key)

Finchè la risposta non sarà 9D continuerà ad inviare 01 05 00 00 02.


----------------------------------------
La card elabora le key criptate utilizzando le PlainKey in chiaro del numero di key kn che si trova scritto nella
card. Le PlainKey sono le stesse per tutte le card dello stesso bouquet. L’algoritmo per il decriptaggio non è
conosciuto ( almeno pubblicamente). Perciò non è possibile emulare la procedura.
Questa comunque utilizza la Cam Key, la Data e la Plain Key.

0RGDOLWj – Viene utilizzata solo una key

Il primo ECM è di questo tipo:


01 05 00 00 00 26
ch ID pp kn 00 20 40 02 dd dd 48 01 00 78 12 kn

72
kp z1 z1 z1 z1 z1 z1 z1 z1 z2 z2 z2 z2 z2 z2 z2
ss ss ss ss ss cs

kt=00, di conseguenza è necessaria solo una key da 8 byte


Se kp=00 oppure 12, in questo algoritmo viene utilizzato solo z1, e la key decriptata z2 viene ingorata.
Se kp=01 oppure 13, solamente z2 viene utilizzato in questo algoritmo. La key decriptata z1 viene ignorata.

La risposta deve essere:

01 05 9D 00 38 tt 00 0E
ch ID pp kp FF FF k1 k1 k1 k1 k1 k1 k1 k1 cs

La risposta di k1 è basata unicamente sui valori di z1 (presumendo kp=00 oppure 12)


Il valore tt nella risposta, sembra sempre essere invertito a partire da kp nel gruppo di key inviato.
Così se kp=01 allora tt=00 oppure se kp=00 allora tt=01
Oppure
Se kp=13 allora tt=00 oppure se kp=12 allora tt=01.
Lo scopo del nano 48(01) è sconosciuto.
-------------------------------------------

Se la decodifica non ha successo:-


01 05 90 00 00 : Channel ID non trovato
01 05 93 00 00 : Channel ID non corretto
01 05 94 00 00 :?
01 05 97 00 00 :?
01 05 9C 00 00 : Errore nella Masterkey
01 05 9E 00 00 : Errato il decriptaggio della Key
01 05 9F 00 00 : Errore nella Key ( Key non trovata?)
01 05 A0 00 00 : Errato Bouquet?
--------------------------------------------------------------------

6FDPELGLGDWLIUD&$0H&DUGDOO DYYLR

Quando si accende il decoder o la CAM viene resettata, avviene uno scmabio di dati fra la CAM e la card.
La CAM effettua le richieste e la card risponde nel seguente modo:

Request : Country Code


01 02 02 03 00 00 3D
Reply : Country Code
01 02 00 00 02 03 00 10
02 01 99 17 01 17 02 17 03 17 04 07 41 44 45 55 (DEU)
A1
Request : Cards ASCII Serial Number
01 02 00 03 00 00 3F
Reply : Cards ASCII Serial Number
01 02 00 00 00 03 00 14
3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 43 36 34 32 30 33
41 20 20 20 30
Request : Cards HEX Serial Number
01 02 01 03 00 00 3E
Reply : Cards HEX Serial Number
01 02 00 00 01 03 00 10
00 17 00 00 01 00 17 00 00 01 02 00 xx xx xx 18
B9
Request : Cards Provider ID 00
01 02 03 03 00 00 3C
Reply : Cards Provider ID 00
01 02 00 00 03 03 00 18
00 p0 p0 p0 00 00 00 00 00 00 03 12 00 00 00 00
00 00 00 00 00 00 00 00 36
Request : Cards Provider ID 10
01 02 03 03 01 00 3D

73
Reply : Cards Provider ID 10
01 02 00 00 03 03 01 18
11 p1 p1 p1 00 00 00 00 00 00 03 18 00 00 00 00
00 00 00 00 00 00 00 00 2B
Request : Cards HEX Serial Number
01 02 01 03 00 00 3E
Reply : Cards HEX Serial Number
01 02 00 00 01 03 00 10
00 17 00 00 01 00 17 00 00 01 02 00 xx xx xx 18
B9
Request : Card File 1
01 02 0E 02 00 00 30
Reply : Card File 1
01 02 00 00 0E 02 00 40
D9 F9 0B 14 20 F1 AA 7D 0E 84 BE C2 FD E3 54 DE
F0 C8 FC BE B1 BA DD 43 78 68 45 99 07 7C 6B 6C
39 9A 07 E0 BC 35 E5 11 C3 01 9F 0D F1 C7 91 67
37 89 32 AB 44 65 CA AC B1 80 42 85 99 E7 21 C1
D5
Request : Card File 2
01 02 0E 03 00 00 31
Reply : Card File 2
01 02 00 00 0E 03 00 40
3F 5E 10 0D EB 30 4B 05 22 5D DB CA FE 24 26 7E
CF 78 0C 69 D1 75 7A 67 84 1F 2C A6 75 F6 0F 59
1E E0 18 FE A8 71 DD 25 D6 3F 6B 4E 05 67 1E D7
76 41 03 1B 31 17 6D B0 F6 2E F6 8A 39 67 7B E6
36
Request : Country Code
01 02 02 03 00 00 3D
Reply : Country Code
01 02 00 00 02 03 00 10
02 01 99 17 01 17 02 17 03 17 04 07 41 44 45 55 (DEU)
A1
Request : Cards HEX Serial Number
01 02 01 03 00 00 3E
Reply : Cards HEX Serial Number
01 02 00 00 01 03 00 10
00 17 00 00 01 00 17 00 00 01 02 00 xx xx xx 18
B9
Sending: IRD/Cam Key
01 02 09 03 00 40
B4 3C 56 92 CB 91 89 1E 9C A2 F1 C5 DF A0 11 E8
7D AB BF 23 DB CF 82 0A 5D E1 52 0B 2E 26 5F FC
D1 83 07 7A 92 4A 43 05 4B 3B FA 30 4D C8 1C BB
C7 C8 9C 51 22 2E 86 14 A2 41 72 24 0F 00 D2 81
7F
Card Accepting IRD/Cam Key
01 02 55 00 09 03 00 00 63
Request : Cards HEX Serial Number
01 02 01 03 00 00 3E
Reply : Cards HEX Serial Number
01 02 00 00 01 03 00 10
00 17 00 00 01 00 17 00 00 01 02 00 xx xx xx 18
B9
Request : Cards HEX Serial Number
01 02 01 03 00 00 3E
Reply : Cards HEX Serial Number
01 02 00 00 01 03 00 10
00 17 00 00 01 00 17 00 00 01 02 00 xx xx xx 18
B9
Request : Cards Provider ID 00
01 02 03 03 00 00 3C

74
Reply : Cards Provider ID 00
01 02 00 00 03 03 00 18
00 p0 p0 p0 00 00 00 00 00 00 03 12 00 00 00 00
00 00 00 00 00 00 00 00 36
Request : Cards Provider ID 10
01 02 03 03 01 00 3D
Reply : Cards Provider ID 10
01 02 00 00 03 03 01 18
11 p1 p1 p1 00 00 00 00 00 00 03 18 00 00 00 00
00 00 00 00 00 00 00 00 2B
Request : Cards HEX Serial Number
01 02 01 03 00 00 3E
Reply : Cards HEX Serial Number
01 02 00 00 01 03 00 10
00 17 00 00 01 00 17 00 00 01 02 00 xx xx xx 18
B9

Sending: Key Packet


01 05 00 00 02 23
Ch ID 10 06 00 1D 78 12 06 12 B6 A7 75 3B 90 1C
00 DB AA 05 82 FF F9 3E C6 C9 40 02 03 18 0C DD
61 22 7A 1C
Reply : Key Packet / Decrypted
01 05 9D 00 38 00 02 16
Ch ID 00 12 FF FF 61 14 BE E6 60 FD 45 F6 BB 09
EA ED 79 58 82 25 78

Come si può vedere molti di questi dati vengono richiesti ed inviati più volte. L'ultimo byte di ogni risposta è il
checksum. Il gruppo di key decriptate viene ripetutamente inviato ogni 10 o 20 secondi. Lo stesso pacchetto
di key può essere inviato consecutivamente fino a dieci volte, dipende dalle scelte del provider. Fino a
quando cambia.
Alcuni decoder hanno un software che utilizza un diverso set per lo scambio di comandi. Alcuni ( in
particolare l’UEC) inviano un’intera stringa di comandi se il numero dei provider nella card è superiore a due
( viene determinato dalla stringa del SerialHex). Altre Cam accetteranno solo fino ad un massimo di 4
provider.

75
Cos’è un Blocker e un SuperBlocker

Un Blocker è un dispositivo costituito da una basetta che riproduce fedelmente i contatti di una SmartCard a
standard iso 7816, un microcontrollore programmabile (PIC) ed uno o più slot per SmartCard (generalmente
sono due).
Lo scopo principale del Blocker è quello di bloccare tutti i comandi di switch-off e di aggiornamento che il
provider invia alla SmartCard, per fare questo esiste un programma sul PIC che filtra opportunamente il
flusso di informazioni che la CAM invia alla SmartCard e lascia passare solo i comandi per la decrittazione
del canale, inoltre il dual-blocker offre l’opportunità di inserire due SmartCard nell’unico slot disponibile sul
decoder, bisogna comunque fare attenzione alla versione della CAM in nostro possesso, la PIC va
programmata in maniera differente a seconda delle varie CAM e se il sistema è Irdeto o Seca.
La programmazione della PIC si ottiene tramite un programmatore di PIC (Attenzione a non confonderlo con
lo SmartMouse, il Programmatore di PIC ha lo zoccoletto per integrati…), uno dei più diffusi in rete è il
LUDPIPO, potete scaricarvi gli schemi dal sito [Link] .
Il SuperBlocker è un evoluzione del semplice blocker, è stato realizzato modificando il concetto del blocker
originale per permettere la visione di due emittenti che utilizzano la stessa chiave su una sola SmartCard, ne
esistono di due tipi, Il SuperBlocker Specifico che non modifica la SmartCard, ma bisogna modificare il
codice del PIC ogni volta che si inserisce una SmartCard diversa, ed il SuperBlocker Universale che invece
riprogramma la SmartCard di volta in volta, la paternità del SuperBlocker va al forum SinExpert di DigitalSin
da un idea di Tuleman e dal codice di Brixia, TheKL@N ha invece prodotto un software che
automaticamente modifica il codice sorgente del PIC con i dati letti direttamente dalla SmartCard, il software
si chiama AutoSuperBlocker.

Ecco il file di Help del Programma creato da Merlin :

L'utilizzo di questo programma è molto semplice.

76
Basta inserire la Card, selezionare la Seriale sulla quale è connesso il vostro programmer (settare il vostro
programmer a 6Mhz, Invert=No), scegliere dal menu a tendina il provider della vostra card (Stream o D+),
settare il ritardo (150ms e' risultato essere OK per molti tipi di seriali), e premere COLLEGA.
Dopo un breve esame, il programma visualizzerà i dati della card (SerialHex, ProvId, e riconoscera'
automaticamente la versione di card che state utilizzando. (Attenzione... questo programma e' solo per le
ACS 1.2 o ACS 1.6 di Stream o D+.
A questo punto, per generare il file .asm per poi essere assemblato in file .hex, per poi essere 'sbattuto' sul
pic del vostro blocker, il programma deve calcolare le 2 signature e i rispettivi check byte all'inserimento delle
2 key02. Per fare questo, cliccate sul pulsante 'TRASMETTI KEY02 DI STREAM e D+'.
Confermate la scelta e attendete. A procedura completata, saranno abilitate anche altre opzioni (Tipo
l'inserimento della Key08 di Stream e l'attivazione dei Chid usati da entrabi i Providers)
Se volete sfruttare queste opzioni, vi basterà cliccare l'apposito pulsante, metre se volete attivare anche i
chid, dovrete prima selezionarli (cliccando sul pulsante 'SELEZIONE CHID DA ATTIVARE' e poi trasmettere
il tutto alla card cliccando il pulsante 'INVIA CHID SELEZIONATI ALLA CARD').
Per quanto riguarda la generazione del [Link] modificato con i dati della card che intendete usare, dovrete
prima scegliere il tipo di cam del vostro dekoder (Irdeto CAM o ALLCAM oppure CAM_CI) e poi cliccare sul
pulsante 'CREA FILE .ASM'. Se tutto sarà ok, verrà generato il file .asm nella directory dove avete scelto di
salvare tale file. (il nome del file generato, avrà questa interpretazione:
“[Link]”.
Ora potrete procedere ad assemblare il file .asm e creare il file .hex. Per far questo cliccare il pulsante
'ASSEMBLA FILE .ASM E CREA FILE .HEX. Dopo pochi secondi, il file ,hex verrà creato e lo troverete nella
directory nella quale avete scelto precedentemente di salvare il vostro file .asm.
Ora che avete il vostro HEX, non dovete fare altro che 'sbatterlo' sul pic del vostro bloker e...... BUONA
VISIONE !

77
Gli Emulatori

Finalmente è stato scovato l’algoritmo di crtittografazione / decrittografazione utilizzato da Irdeto, nella


sezione “Funzionamento di una Smartcard Irdeto” è stato pubblicato il primo sorgente uscito su Internet
dell’emulatore Irdeto, è in C ed è stato scritto per Linux, anche se non è la versione definitiva questo
sorgente può essere utilizzato per la progettazione di altri emulatori più evoluti.
Nel campo degli emulatori di SmartCard SAT, il programma Voyager è una pietra miliare, originariamente
sviluppato per emulare i sistemi ViaAccess adesso il Voyager emula ViaAccess, Seca, Irdeto, D2Mac e chi
piu’ ne ha piu’ ne metta, il programma nasce su “-=[ CompuSAT Satellite BBS ]=-“ che adesso è
raggiungibile via Internet al seguente indirizzo : [Link] ed è giaà stato testato sui ns. sistemi
con esiti più che positivi.
Nel caso di Irdeto e Seca il programma emula una SmartCard dei suddetti sistemi a fronte della corretta
compilazione del file [Link] dove vengono definiti sia le chiavi da utilizzare che i channels-id, è da
notare che nel caso di Irdeto se viene fornita un valido ProviderID e la sua corretta PlainMasterKey il
programma si comporta come una SmartCard AutoUpdate e di conseguenza è in grado di autoaggiornarsi le
chiavi di crittografazione.
La versione che implementa Irdeto funzionante e testata è la 1.81, di seguito alcune informazioni
direttamente dal sito :

1HZV9R\DJHU9HUVLRQZLWKIXOO,UGHWRVXSSRUWLVUHOHDVHG

1.81:. 20-02-2000

. Implemented Irdeto. Decoding of channels is possible if you provide the plainkey in the keyfile.
. Fixed a bug in Seca that caused the screen to disappear for a short period of time every now and then.
. Fixed a bug in the Seca Country codes. This caused some decoders not to work.
. Fixed a problem in the keyfile. After reading the SECA keyword. Voyager loaded only 1 Seca key and got
back to Eurocrypt modus. From
now on the keyfile is devided in sections with the keywords EUROCRYPT, SECA and IRDETO After reading
such a keyword, Voyager will keep on reading keys for this system until it reads one of the other keywords.
. Fixed some minor bugs in the Seca, Viaccess and the D2Mac parts.
. Updated parts of the documentation.
. Added some extra Seca ID's. All should be in now, if you know of a new one, send me a log from a card
that is working with it.
. Made some extra space by removing some double parts.
. Voyager is now over 100 kb big, but still runs fine on older systems.
. This release is tested on my old 386/20mhz system and runs on all supported systems.

9R\DJHUJHQHUDOLQIRUPDWLRQ

Voyager is a smartcard emulator program that can be used to decrypt D2Mac-Eurocrypt, MPEG2 (Seca,
Viaccess and Irdeto), DMX and Videocrypt 1 & 2 channels.
Voyager runs on allmost any ms-dos based computer system (8088-PentiumPro).
The program also runs under various multitaskers like Desqview, and works within Windows if you have
made the right settings. (Read the documentation files for the settings)
For optimal performance it's adviced to use this program under dos though.
In order to use this program you will need a so called season interface (a device that connects between the
serial port of your computer and the smartcard reader of the decoder.)
You can make this device yourself or buy it from a good satellite dealer.
When you add the "D3" parameter you will see full log's of the transmitted data.
With the "L" parameter you can write the logs to a file.

(FFRDOFXQH6FUHHQ6KRWVGHO9R\DJHU

78
(FFRRUDXQ9R\DJHU.H\

; Voyager keyfile v1.0 (C) William Jansen 27-02-2000


; --------------------------------------------
;The format is:
;
;EUROCRYPT
;UNIQUE nn nn nn nn nn (5 byte unique card address)
;
;CHANNEL name (name of the channel)
;IDENT nn nn nn (3 byte channel identification)
;SHARED nn nn nn nn (4 byte Shared card address)
;INDEX nn KEY nn nn nn nn nn nn nn (1 byte key index followed by the
; 7 byte key)
;
;SECA
;CHANNEL name (name of the channel)
;IDENT nn nn (2 byte channel identification)
;INDEX nn KEY nn nn nn nn nn nn nn nn(1 byte key index followed by the
; 8 byte key)
;
;IRDETO
;CHANNEL name (name of the channel)
;IDENT nn nn (2 byte channel identification)
;INDEX nn KEY nn nn nn nn nn nn nn nn(1 byte key index followed by the
; 8 byte key)
;Use the EUROCRYPT, SECA and IRDETO keywords to separate the
;various key parts.
; --------------------------------------------
EUROCRYPT
; --------------------------------------------
UNIQUE 00 00 00 00 00

CHANNEL TV3/Z-TV/TV6
IDENT=00 04 00
SHARED=00 00 00 00
INDEX=08 KEY=73 13 c6 8a 35 fd e7

CHANNEL TV1000/Cinema
IDENT=00 04 10
SHARED=00 00 00 00
INDEX=08 KEY=48 63 c5 b3 da e3 29
INDEX 09 KEY 9e 29 33 f6 b5 f8 f2
INDEX 0b KEY 9b ae 42 56 3e 45 05
INDEX 0c KEY 82 25 2e a3 04 e1 c7
INDEX 0d KEY 47 75 32 70 ee e2 2f

79
INDEX 0e KEY 73 82 c3 50 f4 92 e9
INDEX 0f KEY be a1 02 32 f4 8e bf

CHANNEL CTV Package


IDENT=00 04 30
SHARED=00 00 00 00
INDEX=08 KEY=84 66 30 e4 da fa 23
INDEX=09 KEY=46 94 ec 7d 0b 90 ed

CHANNEL Canal+ Nordic EC-S2


IDENT=00 2b 10
SHARED=00 00 00 00
INDEX=00 KEY 55 bd f4 30 ce 3b a2
INDEX=01 KEY 7d 09 e2 28 32 f6 4a
INDEX=02 KEY 4a 38 db 86 b2 35 7b
INDEX=03 KEY 51 cd 17 eb 1c 23 ab

CHANNEL CTV EC-S2


IDENT=00 2b 20
SHARED=00 00 00 00
INDEX=00 KEY=17 38 fa 8a 84 5a 5e
INDEX=02 KEY=06 b9 d6 b7 05 65 49

CHANNEL Canal+ Nordic EC-S2


IDENT=00 2b 30
SHARED=00 00 00 00
INDEX=02 KEY=f3 26 d9 e6 dc 2d 54

CHANNEL CTV EC-S2


IDENT=00 2b 40
SHARED=00 00 00 00
INDEX=00 KEY=af 44 09 2c 9c 60 23

CHANNEL TVS EC-S2


IDENT=00 2b 50
SHARED=00 00 00 00
INDEX=00 KEY=5c 8b 11 2f 99 a8 2c
INDEX=01 KEY=36 FC 2B 2A F7 6F 11

CHANNEL Canal Digital (DR2/Kanal5/NTV2/NRK)


IDENT=00 2b 60
SHARED=00 00 00 00
INDEX=00 KEY=98 25 98 3b bc 6b ae
INDEX=02 KEY=0d c3 56 af f5 81 16
INDEX=03 KEY=ad 09 0f 9e a2 07 32

CHANNEL Canal Digital Update ID


IDENT=00 2b b0
SHARED=00 00 00 00
INDEX=00 KEY=00 00 00 00 00 00 00
INDEX=01 KEY=00 00 00 00 00 00 00

CHANNEL Canal Digital Update ID


IDENT=00 2b c0
SHARED=00 00 00 00
INDEX=00 KEY=00 00 00 00 00 00 00
INDEX=01 KEY=00 00 00 00 00 00 00

CHANNEL RDV/Eurotica
IDENT=00 2d 10 (Current key unknown)
SHARED=00 00 c0 00
INDEX=00 KEY=00 00 00 00 00 00 00

CHANNEL RDV/Eurotica UPDATE ID


IDENT=00 2d 80 (Current key unknown)
SHARED=35 69 c0 00
INDEX=00 KEY=00 00 00 00 00 00 00

CHANNEL EROS TV
IDENT=00 2e 10 (Current key unknown)
SHARED=36 2c 00 00
INDEX=00 KEY=00 00 00 00 00 00 00

CHANNEL EROS TV UPDATE ID


IDENT=00 2e 80 (Current key unknown)
SHARED=36 2c 00 00
INDEX=00 KEY=00 00 00 00 00 00 00

CHANNEL Bizarre
IDENT=00 2f 10 (Current key unknown)
SHARED=36 ee 90 00
INDEX=00 KEY=00 00 00 00 00 00 00

CHANNEL Bizarre UPDATE ID


IDENT=00 2f 80 (Current key unknown)
SHARED=36 ee 90 00
INDEX=00 KEY=00 00 00 00 00 00 00

CHANNEL Canal Courses

80
IDENT=00 1c 00 (Current key unknown)
SHARED=00 00 00 00
INDEX=08 KEY=00 00 00 00 00 00 00

;=====VIACCESS=====
CHANNEL AB SAT NUM MPEG2
IDENT 00 70 00
SHARED 00 00 12 30
INDEX 08 KEY 00 00 00 00 00 00 00
;--------------------------------------------
SECA
;--------------------------------------------
CHANNEL CANAL DIGITAAL NL
IDENT 00 19
INDEX 0c KEY bd 25 a0 ba fe 2c 55 f2 December 1999, old
INDEX 0d KEY d1 bd 14 d6 24 7c 37 a3 January 2000, old

CHANNEL CANAL+
IDENT 00 03
INDEX 0c KEY 00 00 00 00 00 00 00 00
INDEX 0D KEY 00 00 00 00 00 00 00 00
INDEX 0E KEY 00 00 00 00 00 00 00 00

CHANNEL Canal Satellite


IDENT 00 04
INDEX 0c KEY 00 00 00 00 00 00 00 00
INDEX 0D KEY 00 00 00 00 00 00 00 00
INDEX 0E KEY 00 00 00 00 00 00 00 00

CHANNEL CanalSatelite Espana


IDENT 00 1C
INDEX 0c KEY 00 00 00 00 00 00 00 00

CHANNEL CYFRA +
IDENT 00 1D
INDEX 0C KEY 45 DC 69 F4 6E 48 C5 C1
INDEX 0D KEY 00 00 00 00 00 00 00 00
INDEX 0E KEY 00 00 00 00 00 00 00 00
;--------------------------------------------
IRDETO
;--------------------------------------------
PRO00 01 4d 45
PRO10 00 02 00
MASTERKEY00 56 4F 0B 10 3C CD C8 6F
MASTERKEY10 00 00 00 00 00 00 00 00

CHANNEL SCT
IDENT=0001
INDEX=02 KEY=CB 6B C4 FB 7A F4 79 4A
INDEX=04 KEY 11 a8 72 26 01 84 a0 9a
INDEX=06 KEY=07 90 8F E0 70 65 80 1A
IDENT=0002
INDEX=02 KEY=CB 6B C4 FB 7A F4 79 4A
INDEX=04 KEY 11 a8 72 26 01 84 a0 9a
INDEX=06 KEY=07 90 8F E0 70 65 80 1A

CHANNEL Canal Digitaal


IDENT=FFF3
INDEX 02 KEY=98 09 7D 7A AA 17 51 9E
IDENT=FFFE
INDEX=02 KEY=98 09 7D 7A AA 17 51 9E

CHANNEL HELLAS
IDENT=FFD8
INDEX=04 KEY=5f 28 39 ea 1e 6e 34 60
IDENT=FFFB
INDEX=04 KEY=5f 28 39 ea 1e 6e 34 60
IDENT=FFF2
INDEX=04 KEY=5f 28 39 ea 1e 6e 34 60
IDENT=FFF3
INDEX=04 KEY=5f 28 39 ea 1e 6e 34 60
IDENT=FFFD
INDEX=04 KEY=5f 28 39 ea 1e 6e 34 60
IDENT=FFDB
INDEX=04 KEY=5f 28 39 ea 1e 6e 34 60
IDENT=FFFC
INDEX=04 KEY=5f 28 39 ea 1e 6e 34 60
IDENT=FFEB
INDEX=04 KEY=5f 28 39 ea 1e 6e 34 60
IDENT=FFEA
INDEX=04 KEY=5f 28 39 ea 1e 6e 34 60
IDENT=FFED
INDEX=04 KEY=5f 28 39 ea 1e 6e 34 60
IDENT=FFDC
INDEX=04 KEY=5f 28 39 ea 1e 6e 34 60
IDENT=FFC8
INDEX=04 KEY=5f 28 39 ea 1e 6e 34 60
IDENT=FFD9

81
INDEX=04 KEY=5f 28 39 ea 1e 6e 34 60
IDENT=FFE9
INDEX=04 KEY=5f 28 39 ea 1e 6e 34 60
IDENT=FFE7
INDEX=04 KEY=5f 28 39 ea 1e 6e 34 60
IDENT=FFD4
INDEX=04 KEY=5f 28 39 ea 1e 6e 34 60

CHANNEL Premiere World


IDENT=7530
INDEX=11 KEY=4C AC 0D 7F 74 59 49 25
IDENT=4E2A
INDEX=06 KEY=B1 70 A2 CB 7F 1B 08 4F
IDENT 61 b3
INDEX 02 KEY 4c ac 0d 7f 74 59 49 25
INDEX 04 KEY 29 DD E7 82 F1 99 EE 4B
INDEX 0A KEY 4F B5 09 63 45 D6 C7 8D
INDEX 0C KEY bf 6e cb 1c 8c 63 09 f4
INDEX 10 KEY 7d b3 28 50 a9 e5 e6 d8
INDEX 11 KEY 4c ac 0d 7f 74 59 49 25
IDENT ff fc
INDEX 0A KEY df 6a cb 45 bd 43 3a 66

CHANNEL Telepiu
IDENT=FFFE
INDEX 06 KEY 73 2C 0D 6B 7E 16 2F B5
IDENT=FFF5
INDEX 06 KEY 73 2C 0D 6B 7E 16 2F B5
IDENT=FF02
INDEX 06 KEY 73 2C 0D 6B 7E 16 2F B5
IDENT=FEAD
INDEX 06 KEY 73 2C 0D 6B 7E 16 2F B5
IDENT=FF03
INDEX 06 KEY 73 2C 0D 6B 7E 16 2F B5
IDENT=FFF0
INDEX 06 KEY 73 2C 0D 6B 7E 16 2F B5
IDENT=FFFA
INDEX 06 KEY 73 2C 0D 6B 7E 16 2F B5
IDENT=FFF6
INDEX 06 KEY 73 2C 0D 6B 7E 16 2F B5
IDENT=FFEF
INDEX 06 KEY 73 2C 0D 6B 7E 16 2F B5
IDENT=FFAC
INDEX 06 KEY 73 2C 0D 6B 7E 16 2F B5
IDENT=FFB5
INDEX 06 KEY 73 2C 0D 6B 7E 16 2F B5
IDENT=FFD1
INDEX 06 KEY 73 2C 0D 6B 7E 16 2F B5
IDENT=FF54
INDEX 06 KEY 73 2C 0D 6B 7E 16 2F B5
IDENT=FFBF
INDEX=02 KEY=AE E8 F3 AD 62 2F AD 6E
INDEX 04 KEY DF A0 D1 2F C6 89 22 DE
INDEX 06 KEY 73 2C 0D 6B 7E 16 2F B5
INDEX 08 KEY 86 3A 60 65 78 39 C5 89

CHANNEL Stream
IDENT=FFE7
INDEX=02 KEY=E6 59 84 4E 99 18 FF 61
IDENT=FFE9
INDEX=08 KEY=09 58 F6 15 AE A3 5F 93
IDENT=FFD2
INDEX=08 KEY=09 58 F6 15 AE A3 5F 93
IDENT=FFD3
INDEX=08 KEY=09 58 F6 15 AE A3 5F 93
IDENT=FFFF
INDEX=00 KEY=A6 8C 73 58 05 00 4A 5E
IDENT=FFDF
INDEX=08 KEY=09 58 F6 15 AE A3 5F 93
IDENT=FFF2
INDEX=08 KEY=09 58 F6 15 AE A3 5F 93
IDENT=FFF8
INDEX=08 KEY=09 58 F6 15 AE A3 5F 93
IDENT=FFFa
INDEX=08 KEY=09 58 F6 15 AE A3 5F 93
IDENT=FFFB
INDEX=08 KEY=09 58 F6 15 AE A3 5F 93

CHANNEL Mc_Holland
IDENT=FFFE
INDEX=02 KEY=98 09 7D 7A AA 17 51 9E
IDENT=FFEE
INDEX=02 KEY=98 09 7D 7A AA 17 51 9E
IDENT=FFF0
INDEX=02 KEY=98 09 7D 7A AA 17 51 9E
IDENT=FFF3
INDEX=02 KEY=98 09 7D 7A AA 17 51 9E

82
IDENT=FFF5
INDEX=02 KEY=98 09 7D 7A AA 17 51 9E

New received keys added:


-----------------------
IRDETO
IDENT 00 01
INDEX 04 KEY 24 f2 74 04 2b ba f1 bc
IDENT 00 01
INDEX 06 KEY d2 85 be 31 4e 5e d5 98
IDENT 00 02
INDEX 06 KEY d2 85 be 31 4e 5e d5 98
IDENT ff f5
INDEX 06 KEY d2 85 be 31 4e 5e d5 98

New received keys added:


-----------------------
IRDETO
IDENT 00 01
INDEX 04 KEY a7 e0 8e ec 18 07 9e ac

83
CardEMU.

CardEmu è un nuovo prodotto tedesco, si differisce dal Voyager per il fatto che emula solamente Irdeto e
per la gestione delle chiavi, come Voyager gira meglio in dos puro anche se su macchine veloci va bene
anche in finestra, è molto veloce e leggero, l’abbiamo provato su un 486sx a 25MHz e non ha battuto ciglio,
unica accortezza non caricare troppi device drivers e TSR che ne rallentano l’esecuzione e quindi ne
provocanno la perdita del sincronismo.

Ecco le opzioni disponibili :

C:\TEMP>cardemu /?
Usage : CARDEMU <filename> <Options> CardEmu ßeta9

<Filename> must be 8 characters or less with no extension, if filename is


= or < than 4 chrs, it will auto increment '0000'-'9999' to the filename.

<Options> -U =
Extract UPDATES/EMM & UNKNOWN Commands/Bytes to Disk
-A =
Extract ALL Raw Hex bytes to disk
-C =
Extract all COMMANDS to disk
-N =
Turn BEEP ON during Updates/EMM
-x =
Comport x = -2, -3, or -4, defaults to COM 1
-y =
Force lines per page, where 'y' can be the following
J = 25 lines, K = 43 lines, L = 50 lines
-Ixx = Interrupt request line xx = 2 to 15 (Optional)
-S = Sets baud rate to 3.58 Mhz Mode

Ed ecco una ScreenShot :

84
MasterEMU.

MasterEmu tanto per cambiare è un ottimo prodotto tedesco dal noto sito MASTERCRD per l’emulazione di
una SmartCard IRDETO, nota simpatica è che con ogni nuova release viene sempre fornito il sorgente della
release precedente, in modo da poter studiare e volendo modificare l’algoritmo e/o l’intero programma.
Dalle prime versioni il programma si è evoluto moltissimo, ora nel file di configurazione si possono definire
ProviderID e Masterkey per ogni provider (cosa che per esempio Voyager non permette).
Ecco il file di configurazione della versione 3.5 :

#Premiere World / ATV / Canal+ / Adult X


PID: 1000
Provider00: FFFFEE
Provider10: FFFFEE
Country: GER
7530 11 4CAC0D7F74594925
755E 0C BF6ECB1C8C6309F4
0075 0C BF6ECB1C8C6309F4
007D 0C BF6ECB1C8C6309F4
4E2A 06 B170A2CB7F1B084F
FFF3 02 98097D7AAA17519E
FFF5 02 98097D7AAA17519E
FFEE 02 98097D7AAA17519E

#Telepiu
PID: 1000
Provider00: FFFFEE
Provider10: FFFFEE
Country: GER
FF03 06 732C0D6B7E162FB5
FFF5 06 732C0D6B7E162FB5
FEAD 06 732C0D6B7E162FB5

#Blue Stram
PID: 1000
Provider00: FFFFEE
Provider10: FFFFEE
Country: GER
FFE9 08 0958F615AEA35F93
FFE7 02 E659844E9918FF61

#Satisfaction Club
PID: 1000
Provider00: FFFFEE
Provider10: FFFFEE
Country: GER
0001 02 CB6BC4FB7AF4794A
0001 04 11A872260184A09A
0001 06 07908FE07065801A
0002 02 CB6BC4FB7AF4794A
0002 04 11A872260184A09A
0002 06 07908FE07065801A

#Nova Hellas
PID: 1000
Provider00: 110023
Provider10: 234566
Country: GER
FFF2 0C 2D394D63E1645F6E
FFFB 0C 2D394D63E1645F6E
FFEB 0C 2D394D63E1645F6E
FFED 0C 2D394D63E1645F6E
FFDB 0C 2D394D63E1645F6E

85
FFE9 0C 2D394D63E1645F6E
FFFC 0C 2D394D63E1645F6E
FFDC 0C 2D394D63E1645F6E
FFD9 0C 2D394D63E1645F6E
FFE7 0C 2D394D63E1645F6E

#Telekom Kabel Media Vision


PID: 1500
Provider00: FFFFEE
Provider10: FFFFEE
Country: TEL
0001 02 7B5F0C1EEED528CD
2710 02 E8C57FFD985024AD
FFFC 0A DF6ACB45BD433A66

ende

date stand 10.03.2000

Ed ecco alcune ScreenShots :

86
IPNOTICA.

Ipnotica è un bel software italiano prodotto da Manlius e sfornato dalla fucina di DigitalSin che tanto per
cambiare si riconferma il sito guida italiano per il satellite hacking.

Ipnotica è il primo emultatore di SmartCards Irdeto fatto interamente in Italia, ha funzioni di AutoUpdate,
calcola e autoaggiorna le PlainKeys fornendo natualmente la PlainMasterKey, inoltre per ogni emittente si ha
un database on-line dove risiedono le chiavi, i channels-id ed i providers-id per ogni emittente.

Comodo anche il tool per la decrittazione on-line delle chiavi, certo che da quando il sito MASTERCRD ha
svelato gli algoritmi di decrittazione l’emulazione è diventata una realta’ consolidata.
Unico neo secondo il sottoscritto è il formato binario del database delle chiavi e dei channels-id, un formato
testuale sarebbe stato piu’ comodo da interpretare nel caso si volesse aggiornare o per fare dei cut&paste
delle chiavi anche per scambiarle con altri programmi.

87
Tips&Triks

&RPHVLULFDYDQROH3ODLQ.H\

Per ACS 1.2:


Bisogna inserire la key che vogliamo mettere in formato Plain con i comandi tradizionali tipo :
r0
01 01 00 00 00 1a 02 p0 00 00 14 40 02 t0 50 09 02 XX XX XX XX XX XX XX XX s1

in questo caso inseriamo una key 2 dopo di che facciamo un dump del registro 8.

r0
01 02 07 00 00 00
01 02 08 00 00 00

Ora vediamo la risposta della card

<-01 02 00 00 08 00 00 20 3B 00 00 00 00 14 40 02 05 11 50 09 02 XX XX XX XX XX XX XX XX 99 E2
EA D5 46 7D C1 CA CB DF 97

Nelle posizioni (XX) evidenziate in verde troviamo scritta la famosa Plain Key

Per ACS 1.6 il discorso è un po’ più difficile, infatti il registro 08 non funziona, in questo caso ci viene in aiuto
JJ che per primo ha scovato il trucco per effettuare il dump :

r0
// Dump plainkey 1.2/1.6 by JJ
// PRIMA ITERAZIONE
// invio cmd key update con signatura falsa
01 01 00 00 00 1E 03 P2 00 18 01 02 00 00 40 02 _date key (2 bytes) 10 09 _key (9 bytes) 11 22 33 44
55
// date stamp con signatura false con byte address
01 01 00 00 00 0D 03 P2 T0 00 50 11 22 33 44 55
// Get command (leggere i byte 19 e 20 della risposta)
01 02 03 03 00 00
// SECONDA ITERAZIONE
// invio cmd key update con signatura falsa
01 01 00 00 00 1E 03 P2 00 18 01 02 00 00 40 02 _date key (2 bytes) 10 09 _key (9 bytes) 11 22 33 44
55
// date stamp con signatura false con byte address
01 01 00 00 00 0D 03 P2 T0 00 54 11 22 33 44 55
// Get command (leggere i byte 19 e 20 della risposta)
01 02 03 03 00 00
// TERZA ITERAZIONE
// invio cmd key update con signatura falsa
01 01 00 00 00 1E 03 P2 00 18 01 02 00 00 40 02 _date key (2 bytes) 10 09 _key (9 bytes) 11 22 33 44
55
// date stamp con signatura false con byte address
01 01 00 00 00 0D 03 P2 T0 00 58 11 22 33 44 55
// Get command (leggere i byte 19 e 20 della risposta)
01 02 03 03 00 00
// QUARTA ITERAZIONE
// invio cmd key update con signatura falsa
01 01 00 00 00 1E 03 P2 00 18 01 02 00 00 40 02 _date key (2 bytes) 10 09 _key (9 bytes) 11 22 33 44
55
// date stamp con signatura false con byte address
01 01 00 00 00 0D 03 P2 T0 00 5C 11 22 33 44 55
// Get command (leggere i byte 19 e 20 della risposta)
01 02 03 03 00 00
// QUINTA ITERZIONE
// invio cmd key update con signatura falsa
01 01 00 00 00 1E 03 P2 00 18 01 02 00 00 40 02 _date key (2 bytes) 10 09 _key (9 bytes) 11 22 33 44
55
// date stamp con signatura false con byte address
01 01 00 00 00 0D 03 P2 T0 00 60 11 22 33 44 55
// Get command (leggere i byte 19 e 20 della risposta)
01 02 03 03 00 00

88
Per quanto riguarda la PlainMasterKey su ACS 1.6 i comandi solo simili, solo non serve ripetere la scrittura
della chiave :

r0
// Dump plainmasterkey 1.6 by JJ (contribution with caronte)
// invio cmd mk con signatura falsa
01 01 00 00 00 1E C3 S0 00 18 01 02 00 00 28 0D 00 00 _(8 bytes masterkey prov00) _Provider00 (3
bytes) 11 22 33 44 55
// PRIMA ITERAZIONE
// date stamp con signatura false con byte address
01 01 00 00 00 0D 03 P2 T0 00 4C 11 22 33 44 55
// Get command (leggere i byte 19 e 20 della risposta)
01 02 03 03 00 00
// SECONDA ITERAZIONE
// date stamp con signatura false con byte address
01 01 00 00 00 0D 03 P2 T0 00 50 11 22 33 44 55
// Get command (leggere i byte 19 e 20 della risposta)
01 02 03 03 00 00
// TERZA ITERAZIONE
// date stamp con signatura false con byte address
01 01 00 00 00 0D 03 P2 T0 00 54 11 22 33 44 55
// Get command (leggere i byte 19 e 20 della risposta)
01 02 03 03 00 00
// QUARTA ITERAZIONE
// date stamp con signatura false con byte address
01 01 00 00 00 0D 03 P2 T0 00 58 11 22 33 44 55
// Get command (leggere i byte 19 e 20 della risposta)
01 02 03 03 00 00
// crd che non ho capito cosa serve prova a toglierlo
01 01 00 00 00 0F 03 P2 00 09 40 02 T0 11 22 33 44 55

&RPHVLFDPELDQRL3,1

Ecco una spiegazione dei Vari PIN presenti sulla scheda, da Activate v11 tradotto da Kenzo :

01 02 0A 0x xx xx Comando principale dei PIN number.

Ci sono quattro possibili PIN Numbers nella card. Vengono identificati dal quinto byte del comando per i PIN
number.

00 - Parental PIN
01 - IPPV PIN
02 - Home-Shopping PIN
03 - General PIN

Nell’esempio che segue viene utilizzato il parental PIN

01 02 0A 02 00 02 xx xx ; inserisce il PIN number, (Risposta 50 = corretto, 51 = errato)

Se la risposta è 50 lo stesso comando viene inviato una seconda volta a conferma del comando
corretto, il codice restituito è 5E.

01 02 0A 01 00 04 xx xx yy yy; cambia il PIN, x = vecchio pin, y = nuovo pin (risposta 51 =


sbagliato xx xx, 52 = OK)

Il PIN number può essere trovato inviando tutti i possibili 9999 codici in modo sequenziale fino alla
restituzione del codice 50/5E e non 51.
Questo può essere fatto con il menù Nosferatu del DVB98/2000 o con un semplice programma DOS
chiamato Irdetpin.

Risposte ai comandi della classe 2

89
00: OK
50: sbagliato
51: sbagliato
53: sbagliato
54: sbagliato
55: sbagliato
56: sbagliato
57: sbagliato
67: La lunghezza non è corretta.
69: Comando non consentito
6B: Errata reference (byte 4+5)
6C:La card non supporta questa classe di istruzioni (byte 2?) ??
6D: il codice delle istruzioni non è programmato o errato (byte 3) ?
6E: La card non supporta questa classe di istruzioni (byte 2?)
6F: Non è attribuibile una diagnostica precisa

90
/(&$57($==(5$7((',/6(5,$/+(;±8QR6WXGLR$SSURIRQGLWRGL³7´

Mi sento in dovere di ringraziare in maniera particolare “T” per il suo continuo impegno nello studio di questa problematica e per la sua
generosa disponibilità alla pubblicazione dei suoi studi in questo manuale, esorto chiunque abbia intenzione di accingersi in questo
studio di collaborare con “T” scrivendo all’indirizzo e-mail information@[Link] . TheFax

,1752'8=,21(

Un problema purtroppo ricorrente e’ l’azzeramento completo dei valori delle carte. Per una serie di cause
capita, infatti, che le nostre smart cards perdano tutti i dati che le identificano. Cio’ accade spesso a causa di
cali o picchi di tensione (sia dello smartmouse che comunque della CAM) che cancellano tutti i dati.
In base a quanto finora verificato, non e’ possibile ripristinare nella card tutti i valori precedenti; sembra
tuttavia che alcune procedure abbiano riportato i valori preesistenti, ma ancora e’ troppo presto per
confermare che cio’ sia possibile e, soprattutto, ripetibile.
Mi limitero’ pertanto a trattare argomenti confermati e sicuri; mi impegno comunque a completare questo
documento con future release specifiche alle nuove scoperte in merito.
Ringrazio intanto tutti coloro che hanno studiato e scritto le diverse procedure, quali (in ordine sparso)
DarkAngel e Danny, Lee Chuck, Mario, Lulu, Terminus, Pesciolino e Siddori, Sina84, TH382, Mauro, Soko,
Bepos, Pandora, Decript, CanalJimmy e, ovviamente Calc. Sicuramente mi saro’ dimenticato qualcuno:
spero che non si offendera’!
Chiarisco anche che il mio apporto in materia e’ solo quello di compilatore di un manuale che cerca di essere
piu’ chiaro possibile: non ho inventato nulla! Questo documento nasce infatti grazie alla collaborazione di
tutta la comunita’.
Ho diviso il documento in piu’ sezioni, cosi’ da rendere piu’ semplice la lettura sia ai principianti che ai piu’
esperti (che potranno saltare fino alla ultima sezione). Le sezioni comprendono:
- LA TEORIA: brevi cenni su come ripristinare il funzionamento di una carta, spiegando alcune nozioni
elementari
- LA PROCEDURA: spiegazione nel dettaglio della procedura di Calc
- PER ESPERTI: dove trattero’ lo studio dei seriali e il riazzeramento di una card

/$7(25,$/D3UHFRQGL]LRQH

Tra la miriade di documenti disponibili online sul tema della ULYLWDOL]]D]LRQH a mio giudizio la procedura piu’
semplice e’ quella dell’ottimo Calc. Ritengo pertanto indispensabile per capire questo argomento attingere
dal suo documento (ricco di screenshots e disponibile qui: [Link]
Calc fa riferimento a tre stati in cui la card puo’ essere:
- &$5'1215($77,9$: la card non da’ alcun ATR (su Cardwizard compare la scritta "Keine ATR!").
Tale card deve essere riportata allo stato di SUHFDUG con una delicata procedura che trattero’
nel capitolo "LA PROCEDURA: Recuperare l’ATR delle CARD NON REATTIVE".
- 35(&$5': card da inizializzare per la programmazione. Avra’ questi valori:
SERIAL HEX: 00 00 00
ATR: 3B 9F 21 0E 49............(;ƒ!pIRDETO ACS.....)
PROVIDER00 e 10: 00 00 00
DATE00 E 10: 00 00
SERIAL ASCII: 730 oppure una serie di caratteri casuali (Cardmaster)
SERIAL ASCII: _ oppure una serie di caratteri casuali (Cardwizard)
PROTEZIONE: nessuna
INITCARD: card inizializzata e pronta per la programmazione
SERIAL HEX: FF FF FF
ATR: 3B 9F 21 0E 49............(;ƒ!pIRDETO ACS.....)
PROVIDER00 e 10: FF FF FF
DATE00 E 10: FF FF
SERIAL ASCII: _yyyyyyyyy0 (Cardwizard)
PROTEZIONE: nessuna
Credo sia opportuno aggiungere a questo elenco un ultimo stato che ho riscontrato, anche se ancora non
sono riuscito a capire il comportamento di queste carte:
- &$5'&21$75$: la differenza tra queste card e le CARD NON REATTIVE e' semplicemente il
fatto che queste carte ci danno si' un ATR, ma questo e' a 00000 (lo si vede con Cardwizard,
perche' a volte Cardmaster non le vede nemmeno!). Purtroppo non ho ancora informazioni

91
sicure a riguardo; alcuni sostengono che siano come le CARD NON REATTIVE e che
possano quindi essere rivitalizzate, altri invece affermano che non ci sia nulla da fare e che
la card resti sempre fissa a 000000. Personalmente, ne ho una tra le mani che non vuole
proprio saperne di ritrovare l’ATR. Pertanto, se siete riusciti a riavere l’ATR da una di queste
cards, contattatemi (cosicche’ possa aggiornare questo documento).

/$7(25,$&RPH)XQ]LRQD"

Credo sia necessario spendere due parole su come seguire questa procedura per renderla piu’ chiara
possibile anche per chi non ha esperienza in merito.
Praticamente, la nostra card dovra’ passare per tutti gli stati sopraccitati per poter poi essere programmata
con il crd [Link] (sempre di Calc); alternativamente, se, caso molto raro, la card si trovera’ gia’ in uno
stato successivo (ex: avete una card che e’ gia’ ,1,7&$5'), bastera’ iniziare da quel punto la procedura.
Riassumendo, nella maggior parte dei casi dovrete seguire questo schema:
a. partirete da una &$5'1215($77,9$
b. il capitolo "LA PROCEDURA: Recuperare l’ATR delle CARD NON REATTIVE" vi spieghera’
come portarla a 35(&$5'
c. il capitolo "LA PROCEDURA: Trasformare la PRECARD in INITCARD" vi spieghera’ come
portarla ad ,1,7&$5'
d. ed infine il capitolo "LA PROCEDURA: Il crd di Calc" vi spieghera’ come renderla funzionante al
100%
Vi consiglio di leggere almeno una volta tutto il testo per poi rileggerlo con programmatore e card alla mano,
cosi’ da evitare errori.

/$352&('85$5HFXSHUDUHO $75GHOOH&$5'1215($77,9(

Dopo aver constatato che la card, ahime’, e’ una &$5' 121 5($77,9$, dovremo cercare di recuperare
l’ATR e pertanto portarla a 35(&$5'.
Vi raccomando la massima attenzione perche’ e’ molto facile compromettere definitivamente il
funzionamento della carta in questa delicatissima fase.
Armatevi innanzitutto di pazienza e costanza, perche’ a volte le carte in questa condizione sono testarde;
non preoccupatevi se insiste a non trovare l’ATR: nella mia esperienza TUTTE le carte in stato di &$5'
1215($77,9$sono state portate a 35(&$5'.

ATTENZIONE: in alcuni casi si e’ risolto il problema semplicemente pulendo per bene i contatti del chip con
dell'alcool. Prima di cominciare provate anche quello…

Occorre innanzitutto utilizzare Cardwizard v. 1038 (o successive); tale programma ha infatti la funzione
"Reanimation", studiata appunto per recuperare l'ATR.
Ecco come fare.
- Avviate Cardwizard e selezionate il tab-menu Expertenmode; selezionate poi il tab Reanimation
- Nel tab centrale (Smart Mouse / Card Reader) vi consiglio di mettere ATR OK Stop a 1 (di default lo
troverete a 3). Cio' vuol dire che la prima volta che trova l' ATR, si ferma.
- Premete Starte Reanimation (vedrete che il counter verde comincia ad andare)
- A questo punto mettete e togliete la carta dallo slot fino ad ottenere l'ATR.
Questa e' la procedura "base". Se togliere e mettere la carta non bastasse, occorre "giocare" anche sulle
seguenti cose:
- durante il togli/metti, cambiate ripetutamente il quarzo dello Smartmouse da 6 a 3.57
- sempre durante il metti/togli, spegnete ed accendete ripetutamente lo Smartmouse
- se per 5 minuti tutto cio' non ha funzionato, mandate un KILL00 alla carta e ricominciate
Tutto questo sembra confuso e difficile….ci vorrebbero quattro mani! Ma la mia (seppur piccola) esperienza
in materia mi dice che piu' smanettate, piu' sara' facile ritrovare l'ATR

Ad un certo punto vedrete che Cardwizard si fermera'. Tornate allora nella finestra principale Kartenubersicht
e controllate che i dati corrispondano a quelli di una PRECARD (l'ATR in particolare modo!).
Se cio' non fosse, continuate con la "Reanimation": ci siete comunque vicini!

92
Quanto spiegato molto verbosamente qui sopra e’ spesso in realta’ solo questione di pochi minuti. Se dopo
mezz’ora di tentativi non avrete ottenuto nessun risultato, vi consiglio di controllare innanzitutto queste due
cose:
- che la pila dello smartmouse sia carica (nei modelli con alimentatore ovviamente controllate che
l’alimentatore funzioni). Per fare cio’ NON usate altre carte funzionanti, perche’ potreste rovinare pure
quelle! Usate un tester (anche quelli che trovate nelle confezioni delle pile vanno bene!)
- che non stiate commettendo errori: rileggete questo capitolo e riprovate.

Se proprio non riusciste, potete mandare un email a information@[Link] chiedendo aiuto e spiegando bene
il vostro "caso".

Se invece, come mi auguro ci sarete riusciti, passate al prossimo capitolo: in meno di un minuto avrete di
nuovo la vostra card funzionante.

/$352&('85$7UDVIRUPDUHOD35(&$5'LQ,1,7&$5'

Dopo esservi riposati il polso (evito facili battute in merito…), potrete procedere con la seconda fase. A
questo punto tutto e' praticamente automatico!
Seguo sempre la procedura di Calc (la piu' semplice). Lo scopo ora e' di "azzerare" la carta, o meglio "FF-
arla". Questo perche' e' stato scoperto che quando la carta viene programmata dal produttore, questa e'
nella condizione di ,1,7&$5' (e cioe' con le FF).
Visto quindi che noi vogliamo riprogrammare la carta, sara' necessario riportarla in tale stato.

Per fare cio' e' sufficiente mandare questa stringa di comando alla carta:
01 00 05 00 00 16 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF S1

Riprendo la spiegazione di Calc:


"[…] Data la connessione (.DUWH OHVHQ  bisogna fare prima di tutto un'importantissima verifica: si tratta di
verificare se i primi quattro bytes della prima signature che verrà scritta corrisponde ai seguenti: ) % %
' […] Questo è il comando che trasforma una 35(&$5' in una ,1,7&$5'. Il comando va lanciato nella

finestra ³H[SHUW PRGH´ scrivendolo direttamente […]. Procedete poi a lanciarlo con il pulsante “senden” e
guardate subito in basso dove c’è “Sign Status:......”. Guardate la figura e noterete che la ricerca della
signature è partita (barre blu); notate pure che compaiono i quattro bytes richiesti. $SSHQDQRWDWH TXHVWL 
E\WHVLQWHUURPSHUHLPPHGLDWDPHQWHLOFRPDQGRFRQLOSXOVDQWH³$EEUXFK´>«@ "

Se invece non ottenete i 4 bytes, dovrete prima riazzerare la carta (vedi "PER ESPERTI: Come riazzerare
una carta") e poi ricominciare dal capitolo "LA PROCEDURA: Recuperare l'ATR delle &$5' 121
5($77,9(.

A me, tuttavia, non e' mai successo che questo comando fallisse…quindi non preoccupatevi!

/$352&('85$,OFUGGL&DOF

Siete praticamente arrivati in fondo. A questo punto basta mandare il file .crd di Calc (che incollo qui sotto
per esigenze di completezza di informazione) ed il gioco e' fatto.
Il motivo per il quale consiglio questa procedura e' che la carta diventa a tutti gli effetti funzionante, anche
senza blocker. Se volete saperne di piu' leggete il capitolo "PER ESPERTI: Trovare un SHEX valido".

Ecco il crd [Link]


//*** Irdeto cards program with signature *** by calc member of SinExpert board
of digitalsin ***
//Tnx to Tulemann, Blutorsky and th382
01 02 10 00 00 00
01 00 05 00 00 16 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F1 B3 B0 3D
8D
01 02 01 03 00 00
01 02 0b 00 00 00
01 02 03 03 00 00
01 02 03 03 01 00

93
01 02 00 03 00 00
r0
01 04 00 00 00 14 30 30 30 34 32 39 36 37 38 32 43 36 30 34 33 34 41 20 20 20
01 04 01 00 00 00
r0
01 06 01 00 00 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 B6 DF AA 58 65
01 06 02 00 00 0d 00 00 00 00 00 00 00 00 09 55 20 77 C8
01 02 10 00 00 00
01 06 03 00 00 2a ff ff ff 00 00 00 00 00 00 00 eb 83 56 33 4b 97 ca 27 01 99 06
01 06 02 06 03 06 04 07 00 02 33 01 41 18 ff 95 C9 5A D3 F6 8C
01 06 04 00 00 29 02 01 99 06 01 06 02 06 03 06 04 07 41 00 00 00 00 00 00 00 00
ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 59 33 7F 00 8C
01 06 0a 00 00 0b 00 00 00 00 00 00 28 64 31 DA 96
01 06 08 00 00 05 D6 58 83 12 FE
r0
01 03 01 00 00 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 28 CD 1B 8A
01 03 02 00 00 0d 00 00 00 00 00 00 00 00 01 C4 F0 75 81
01 03 07 00 00 3b 00 00 03 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 ff ff ff ff ff ff
ff ff 00 00 00 55 73 FF BB 99 30
01 03 07 00 01 3b 00 00 04 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff ff ff 00 00 00 ff ff ff ff ff ff
ff ff 00 00 00 55 2D 20 60 20 E5
01 03 0b 00 00 1c 49 54 41 00 8c 00 64 00 14 00 00 00 00 40 53 69 6E 45 78 70 65
72 74 F4 5A 17 B0 84
01 03 0c 00 00 05 67 A3 61 F3 E9
r0

Come noterete, il bello di questo .crd e’ che Calc ha gia calcolato (ops!) tutte le signature! Questo e’ possibile
perche’ questo .crd genera sempre lo stesso SHEX su tutte le cards. Il SHEX che troverete sara’ sempre:
$$&.

/$352&('85$&RQFOXVLRQL

Come avrete potuto constatare, a parte la prima sezione che richiede una certa manualita’, il resto e’
davvero semplice ed immediato. Esistono, come ricordavo all’inizio, diversi altri sistemi con relativi docs che
ottengono buoni risultati, ma questo sistema e’ indubbiamente il piu’ semplice e puo’ essere facilmente
seguito anche dai meno esperti.
Vi ripeto ancora una volta: la procedura cosi’ come ce la ha regalata Calc e’ davvero una passeggiata.
Le card non avranno bisogno di blocker (come invece alcune card rivitalizzate necessitano) e nemmeno di
indirizzare le stringhe al Provider anziche’ al SHEX (procedura che si utilizza con card che hanno un SHEX
non valido. Per ulteriori informazioni a riguardo, rimando al capitolo "PER ESPERTI: Trovare un SHEX
valido").
Concludo questa sezione ringraziando tutti coloro che mi hanno dato una mano a raccogliere le informazioni
necessarie per poter redigere un documento completo ed esauriente. Mi auguro che possa servire a tutti
coloro che hanno card "bruciate" e che possano tornare ad utilizzarle in maniera regolare.
ATTENZIONE: se avete un abbonamento regolare (come spero!!!!) cambierete il vostro SHEX e quindi non
potrete piu’ ricevere aggiornamenti di chiavi, switch on di canali, etc.
E’ molto piu’ semplice invece rivolgersi ad un rivenditore e chiedere una card in sostituzione. Dovrete
restituire la vecchia card (a meno che non riusciate a farvela lasciare…) e ve ne daranno una nuova. In base
al gestore potrete spendere nulla o Lit. 89.000.
Pertanto vi consiglio di utilizzare questa procedura SOLO su card scadute o straniere.

94
3(5(63(57,&RPHULD]]HUDUHXQDFDUWD

Innanzitutto una piccola premessa. Vi consiglio caldamente di evitare queste procedure perche’ potrebbero
compromettere seriamente il funzionamento delle vostre cards e del vostro programmatore. E’ per questa
ragione che ho incluso questo capitolo nella sezione PER ESPERTI: siete avvisati.

Esistono moltissimi sistemi che ho sentito online per riportare una carta allo stato di &$5'1215($77,9$;
spesso si basano sulle stesse metodologie usate per passare da &$5'1215($77,9$ a 35(&$5'.
Ho cercato di includere piu’ sistemi possibili per poter cosi’ consentire a tutti di trovare quella piu’ consona.
Cominciamo!
- CDEVIL. Il sistema piu’ diffuso e’ quello di avviare CDEVIL e premere F1. Cosi’ facendo il programma
manda un reset alla carta. Ora dovrete inserire e levare ripetutamente la carta per una ventina di volte,
molto velocemente.
- SUPERCLINIKA. Praticamente la stessa cosa. Mandare il reset e mettere e togliere la carta.
- CARDMASTER 0.4. Inserire la carta nel phoenix oppure smartmouse; premere il tasto Connect; estrarre
e reinserire velocemente la carta piu’ volte. In mezz'ora massimo si ottiene una card azzerata (e polso
rotto….)
- SWITCH. Collegare uno switch sull’alimentatore del programmatore e dare e togliere corrente con la
frequenza di 5 volte al secondo.
- ON/OFF. Senza aver caricato alcun programma, accendere il programmatore, inserire la card e dare e
togliere corrente cinque o sei volte al programmatore. Dopodiche’ lanciare il programma e controllare.
- FREQUENZA + INVERSIONE. Come i sistemi precedenti (reset), ed in piu’ modificare anche la
frequenza (metterla a 3.5) e l’inversione (quella per le DPSC).
- REANIMATION. Utilizzare la funzione di rianimazione per azzerare una carta funzionante, inserendo e
togliendo la card ripetutamente e contemporaneamente interrompendo l’alimentazione (on/off).
- CRD KILLER. Utilizzare il file [Link]: 01 01 00 00 00 3D C3 s0 00 37 94 03 81 00 AE 94
03 82 E8 F3 94 03 83 AD 62 94 03 84 2F AD 94 03 85 6E 00 94 03 A3 00 09 94 03
A4 58 F6 94 03 01 02 03 94 03 A6 A3 5F 93 03 87 93 00 s1
- BLOCKER. Inserire il blocker hardware nel ricevitore acceso ed inserire e togliere la card ripetutamente.

Sono tutti sistemi poco ortodossi, ma si sono rivelati efficienti in piu' casi. Non saprei consigliarne uno in
particolare perche' sono comunque tutti stati sperimentati da persone diverse e, caso per caso, tutti hanno
funzionato. Personalmente io utilizzo la funzione di Reanimation di CardWizard…almeno ho gia' il
programma pronto a rianimare!
Ad ogni modo, in pratica tutti i sistemi fanno la stessa cosa….

3(5(63(57,*OLE\WHVGHO6+(;

Questa e' senza dubbio la parte piu' interessante del documento.


La procedura sopra riportata altro non fa che rimandare tutti i dati della vostra carta; ovviamente, anche il
SHEX. Pertanto viene da se' che all'interno della procedura troveremo una stringa che scrive anche il SHEX.
Purtroppo pero' non e' possibile scrivere il SHEX semplicemente mandando un comando XX alla locazione
di memoria YY (e cioe' come le PK per esempio). O meglio, cosi' non sembra.
Vediamo una stringa in particolare del .crd di Calc.
01 06 03 00 00 2a ff ff ff 00 00 00 00 00 00 00 eb 83 56 33 4b 97 ca 27 01 99 06
01 06 02 06 03 06 04 07 00 02 33 01 41 18 ff 95 C9 5A D3 F6 8C
Grazie all'apporto di TH382 si e' scoperto che gli 8 bytes dopo gli 00 (e cioe' in questo caso eb 83 56 33 4b
97 ca 27) altro non sono che una key che determina il SHEX: al variare di questi bytes cambiera' anche il
SHEX della carta!
Certo, 8 bytes generano una quantita' di combinazioni quasi incalcolabile, ma e' comunque molto
interessante capire che questi sono i bytes che codificano il SHEX della carta. Come gia' citato, nel caso del
file da noi utilizzato questo sara' A8 09 AC. Tutto cio' e' stato ampiamente suffragato da moltissime prove
pratiche. Pertanto, su qualsiasi ,1,7&$5'si ottiene sempre lo stesso SHEX se gli 8 bytes sono uguali.

95
3(5(63(57,7URYDUHXQ6+(;YDOLGR

E’ innanzitutto necessario specificare che non tutti i SHEX che troverete modificando gli 8 bytes della key
saranno validi ed utilizzabili. Infatti, oltre ai tre bytes del SHEX e’ necessario ottenere anche altri valori; e’
stato infatti provato che tali bytes, di cui parlero’ qua sotto, influenzano il funzionamento del SHEX e lo
rendono NON VALIDO: cio’ significa che la card non dara’ una signature valida a tutti i comandi indirizzati al
SHEX!
Vediamo innanzitutto cosa ci risponde una mia carta rigenerata quando mando una richiesta di SHEX:
Befehl : Serien Nummer
<- 01 02 00 00 01 03 00 10 FF FF FF 00 00 00 00 00 00 00 B4 67 XX XX XX 18 24
NOTA: le xx sono il SHEX

In particolare modo ci interessano i bytes che per maggior chiarezza ho messo in BLU (B4) e ROSSO (18)
perche’ in base a quei valori la nostra card funzionera’ o rimarra’ inutilizzabile (sigh!).
Il piu’ importante e’ quello rosso, che nel mio caso e’ 18; si tratta infatti di un byte di verifica del SHEX.
Dovrete pertanto variare la key di 8 bytes fino ad ottenere una risposta dove tale valore sara' uno dei
seguenti:
18, 58, 98 oppure D8.
Ho sentito, ma non ne ho avuto conferma, che anche 08, 28, 38, 48, 68, 78, 88, A8, B8 e C8 dovrebbero
andare bene. Per favore, se avete possibilita’ di provare fatemi sapere in modo da poter completare questo
documento.
L’altro dato da ricercare e’ il byte in blu (nel mio esempio B4). Questo valore e’ una specie di timer di risposta
della carta (o perlomeno sembra avere questo effetto!): piu’ il valore e’ alto e piu’ la card rispondera’
lentamente alla cam, fino a diventare inutilizzabile. Questo byte deve avere un valore massimo di 20, e
pertanto i valori accettabili sono:
02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E,
1F oppure 20.
Tuttavia si puo’ ovviare al problema del time out della cam utilizzando la card con un blocker hardware che
funzionerebbe da buffer ed eviterebbe il problema. Per esempio, nel mio caso ho trovato B4; purtroppo infatti
non sono riuscito a trovare una stringa di risposta della card dove ci fosse sia il corretto byte rosso che
quello blu. Ad ogni modo, anche con B4 la mia card funziona al 95% con il blocker: nonostante un utilizzo
molto intensivo della card, mi e’ successo solo una volta dopo parecchi giorni che si impiantasse (cosa che
comunque ogni tanto succede anche con card nuove….). Un semplice cam reset e tutto va a posto. Non ho
riscontrato altri effetti collaterali: a parte questo la card funziona benissimo.

3(5(63(57,6+(;&ORQLQJ

Veniamo alla parte piu' interessante. Devo ringraziare innanzitutto Liqua Liqua per la sua continua
collaborazione in questo progetto.
Anche se in questo campo siamo ancora in fase di studio, ho deciso comunque di includere questo
capitoletto: sono sicuro che sara' interessante per molti e mi auguro che vogliate collaborare a questa ricerca
contattandomi direttamente via email.
L'idea di partenza e' tanto semplice quanto interessante: in teoria, variando gli 8 bytes di cui parlavamo
prima, sarebbe possibile ottenere un SHEX valido ED in uso da un gestore per poter controllare se la card si
possa autoaggiornare e possa diventare effettivamente un clone della card con lo stesso SHEX.
Sempre in teoria, infatti, non si dovrebbero inviare chiavi o Channel Id, ma la card verrebbe
automaticamente aperta dal gestore. Ovviamente, verranno aperti solo i canali ai quali la carta "originale"
sara' abbonata. In pratica la carta sara' al 100% identica a quella originale
Purtroppo io non ho ancora avuto fortuna a riguardo e non sono riuscito, nonostante le numerose prove
fatte, a trovare SHEX validi e utilizzati (colpa sicuramente del poco tempo a disposizione!)

Chi invece ci e' riuscito afferma che comunque la card non si aggiorna perche' la signature mandata dal
gestore non viene accettata dalla carta. Questo dovrebbe dipendere dal fatto che il SHEX non e' composto
solo dai tre bytes che troviamo nelle finestre dei vari programmi….e per ottenere un clone sarebbe
necessario trovare "tutti" i bytes. Ovviamente questo rende la ricerca molto ardua se non impossibile.
Torniamo allora un attimo indietro.
Nelle card normali (e cioe' quelle non azzerate) i valori sono sempre: 02 00 XX XX XX 18…
Questo ci farebbe pertanto pensare che una carta con questi valori E con un SHEX utilizzato da qualsiasi
gestore si possa autoaggiornare. Proprio in questi giorni sto collaborando con Liqua per avere conferma a

96
riguardo; quando saranno raggiunti obiettivi concreti ed interessanti questo documento sara’
opportunamente aggiornato. Per ora rinnovo la mia richiesta di aiuto.

3(5(63(57,,O'%GHL6+(;

Poco tempo fa TH382 posto’ sul SinExpert un interessante messaggio che suggeriva un sistema per crearci
un database di SHEX validi. Ha infatti notato che anche l’invio del SHEX passa per il registro 08, e pertanto
e’ possibile dumparlo durante il program mode, cosi’ controllando quale SHEX mi risultera’ a procedura
ultimata. In questo modo si ottengono velocemente tantissime risposte, che potranno poi essere confrontate
e verificate, cosi’ creando un DB di key e relativi SHEX.
Con l’aiuto di Sina84 e Liqua Liqua abbiamo lavorato su questo progetto.
Ecco come fare: e’ semplicissimo!
Tagliate il crd di calc in modo da arrivare fino alle stringhe
01 06 02 00 00 0d 00 00 00 00 00 00 00 00 09 55 20 77 C8
01 02 10 00 00 00
Invece di mandare la stringa con la chiave per il SHEX di calc, modificate gli 8 bytes della chiave con valori
sequenziali. E’ anche necessario modificare i 5 bytes della signature in 00 00 00 00 00.
Vi consiglio di prepararvi un crd con i valori in sequenza (cambiandone 1 per volta, per esempio: caso eb 83
56 33 4b 97 ca 01, poi caso eb 83 56 33 4b 97 ca 02, etc.) e mandarlo con Cardwizard (in alternativa si
possono usare le nuove funzionalita’ di Cardmaster 1.0, ma il problema e’ il fatto che mi dicono che questo
programma memorizzi un massimo di 300 linee).
Dunque, subito dopo la stringa 01 06 03… fate un dump
01 02 07 00 00 00
01 02 08 00 00 00
Otterrete cosi' il SHEX completo che quella combinazione degli 8 bytes vi da'.

Utilizzando questa procedura e' possibile creare un mega database con tantissimi SHEX. Sara' poi possibile
selezionare tra questi quelli attivi che hanno valori di verifica e "timer" accettabili e quindi capire in che modo
la carta risponde ai comandi mandati dal gestore.

Sto ora studiando in questa direzione e cerco persone che abbiano voglia di collaborare. Vi prego pertanto di
contattarmi se avete intenzione di partecipare!
Proprio mentre questo documento sta per essere pubblicato mi sono arrivate altre informazioni in merito.
Non essendomi pero' io ancora cimentato in queste operazioni e non potendo piu' tardare con l'invio del
"plico" a The Fax, ho deciso di tenere le novita' per la prossima release, sperando di avere anche il vostro
aiuto!!!

&21&/86,21,

Come avrete potuto constatare sono molti gli argomenti ancora in sospeso. Se la procedura di
rivitalizzazione e' ormai un argomento assodato e verificato, la ricerca del SHEX ancora e' solo in fase di
studio.

Rinnovo ancora una volta i miei ringraziamenti a tutti coloro che hanno contribuito a questo tema e ribadisco
la mia disponibilita', tempo permettendo a proseguire con le ricerche in tal senso.

T
information@[Link]

97
&RPH5LDQLPDUHOHVFKHGH$]]HUDWHRFRPHFDPELDUHLOVHULDOKH[GLXQDVFKHGD
(Da un messaggio di una lista Tedesca)

Questa procedura si adatta alle schede cosidette “azzarate” (che presentano tutti “00” all’ ATR), non a quelle
che presentano tutti “FF”.

Primo Passo - Verificare l’ATR della scheda :

Normalmente la risposta ATR di una scheda IRETO è contenuta nella sua ROM tranne i primi 4
bytes, di questi i primi 3 indicano lo stato della scheda e l’ultimo è la checksum della stringa ATR.

00 00 11 XX - Scheda Azzerata con WriteProtect rimosso


FF 00 11 XX - Scheda Annullata con “FF” e WriteProtect rimosso
00 00 21 XX - Scheda Azzerata con WriteProtect attivo
FF 00 21 XX - Scheda Annullata con “FF” e WriteProtect attivo
FF 00 20 XX - Scheda Annullata con “FF” e WriteProtect attivo ed irreversibile
00 00 20 XX - Scheda Azzerata con WriteProtect attivo ed irreversibile

Secondo Passo – Il SoftWare e la preparazione

Questo metodo riconverte anche le shede annullate ad “FF”, bisogna utilizzare il programma
CardWizard che ha il vantaggio di inviare i dati alla scheda anche se essa non è più fisicamente
nello slot.

1) Bisogna mettere la SmartCard Azzerata in modalità WriteProctect con il comando 01 04 01 00


00 00, se il comando è stato accettato la scheda risponderà con 01 04 41 00
2) Scrivere un file CRD per CardWizard in questo modo :
01 00 05 00 00 15 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF x1
Con la macro x1 CardWizard ripeterà il comando con x1 che varia da 00 a FF, il risultato
migliore si ottiene ripetendo 10 volte questa linea in modo da ripetere 2550 volte il comando.
3) Questo passo è da seguire se la scheda non si “FFa” solamente con il CRD precedente, ora chi
se la sente a mettere il saldatore sul suo SmartMouse non avrà problemi per il seguito, il
risultato dei tests è il seguente, se il file viene inviato alla scheda e l’alimentazione viene rimossa
con una frequenza di 5 volte al secondo la scheda si Annullerà con “FF” nell’arco di un minuto.
Normalmente non faremmo mai queste cose, ma abbiamo bisogno di Annullare completamente
la scheda nel caso che abbiamo una “00”. Per questa operazione possiamo semplicemente
mettere a livello alto il pin di RESET, si può modificare lo SmartMouse utilizzando il jumper per
l’inversione del segnale di RESET collegandolo con due fili ad uno switch che muoveremo alla
frequenza di 5 volte al secondo. Quando leggeremo i 3 bytes a FF 00 11 allora avremo
completato l’operazione con successo.
4) Utilizziamo ora il comando 01 04 00 00 00 14 per scrivere il nuovo serial number (che avremo
preso da una scheda funzionante.
5) Ora riscriviamo il comando per il Write Protect 01 04 01 00

Terzo Passo – La Scrittura in classe “06”

Ora andremo a riscrivere completamente una scheda appena uscita dal secondo passo, per
ottenere poi una scheda che funzionerà perfettamente con i comandi di classe 01 01 e che automaticamente
riceva gli aggiornamenti direttamente dall’emittente (Chiavi, Channel-id ecc. ecc.)

1) Innanzitutto bisogna prendere i dati da una scheda funzionante “sorgente”, avremo bisogno del
serialnumber, del Provider00 e della Masterkey.
2) Utilizziamo ora i comandi di classe 06, ATTENZIONE, non iviare RESET durante la
programmazione con comandi di classe 06, altrimenti la scheda uscirà dalla modalità
programmazione e bisognerà ripetere le operazioni dall’ inizio.
3) Se utilizziamo il CardWizard è opportuno non premere il bottone “Card Read” in modo da non
inviare reset alla scheda.
4) Verifichiamo di essere sempre in program mode 06 dalle risposte delal scheda, se la scheda
risponderà sempre con 01 06 ecc. allora siamo in program mode.

98
5) Inviamo ora il comando 01 06 01 00 00 15 (10 Bytes di dati) S1, come dati qui metteremo i primi
10 bytes del serial number ascii preso dalla scheda “sorgente”.
6) Verifichiamo sempre la risposta corretta (se disponibile) dopo ogni operazione, le risposte della
scheda le possiamo verificare nel capitolo Comandi di questo manuale.
7) Inviamo ora il comando 01 06 02 00 00 0D (8 bytes di dati) S1, attualmente non sapiamo come
ricavarci gli 8 byte di chiave, li metteremo tutti a “AA”
8) Inviamo ora il comando 01 06 04 00 00 29 (13 bytes di dati) (8bytes di PIN) (15 bytes di dati)S1,
I 13 bytes di dati sono i 13 bytes di risposta del comando 01 02 02… che ci viene fornito dalla
scheda “sorgente”, la risposta completa è di 16 bytes, i rimanenti 3 bytes che sono il Country
Code vengono scartati, Per gli 8 butes di PIN li possiamo mettere a 00 oppure come preferite, i
restanti 15 bytes sono la risposta al comando 01 02 01 03 della scheda “sorgente”.
9) Adesso inviamo il comando 01 06 06 00 02 45 (64 bytes di dati) S1, i 64 bytes sono il cardfile
per il provider00, siccome questi dati sono decodificati in qualchemodo dirante la scrittura non è
assolutamente utile inerire quelli della scheda “sorgente” e quindi li possiamo inserire a “00”
10) Stessa cosa per il comando 01 06 06 00 03 45 (64 bytes di dati) S1, in questo caso per il
Provider10.
11) Adesso viene la parte più complicata, inviamo il comando così composto : 01 06 03 00 00 2A
(16 bytes di dati) (1 byte variabile) (19 bytes di dati) (1 byte di dati) S1, i primi 16 bytes sono la
risposta al comando 01 02 01 03 00 00 dato alla scheda “sorgente”. Il byte “variabile”
inizialmente vene posto a “00” e poi viene incrementato di 1 durante il ciclo. I 19 bytes di dati
sono a “00”, il byte finale è l’undicesimo byte della risposta al comando 01 00 01 00 00 00 della
scheda “sorgente”. Vediamo ora come si comporta il byte “Variabile”, per verificare se il
comando ha avuto successo andremo a controllare il nostro nuovo [Link] o con un crd di
lettura del seriale hex o ad esempio con il bottone “serial” del CardWizard (che lo legge senza
inviare un reset), ora leggeremo la risposta della nostra scheda e verificheremo che dopo il
[Link] ci sia riportato anche 0x18 come checksum, se non è così allora dovremo
incrementare il byte variabile e ridare il comando finchè la risposta all’interrogazione del serial
hex non dia quel byte a 0x18.
12) Se siamo riusciti ad impostare il serial ora invieremo il c0mando 01 06 0A 00 00 0B (6bytes di
dati), i 6 bytes non si sa cosa siamo, li metteremo a “00”.
13) Ora chiudiamo la fase di programazione classe “06” con il comando 01 06 08 00 00 05 S1 epoi
un bel reset

Quarto Passo – La Scrittura in classe “03”

Ora continueremo a scrivere la scheda con i comandi di classe “03”

1) Utilizziamo ora i comandi di classe 03, ATTENZIONE, come per i comandi di classe “06” è
assolutamente vietato iviare RESET durante la programmazione, altrimenti la scheda uscirà
dalla modalità programmazione e bisognerà ripetere le operazioni dall’ inizio.
2) Inviamo il comando 01 03 01 00 00 15 (10 bytes di dati) S1, i 10 bytes sono il serial number che
abbiamo ottenuto dalla scheda “sorgente” come descritto nella programmazione “06”
3) Inviamo ora 01 03 02 00 00 0D (8bytes di dati) S1, sempre 8 bytes di chiave sconosciuti, si
possono mettere tutti ad “AA”
4) Ora il comando 01 03 05 00 00 25 (32 bytes di dati) S1, Questo è il message-buffer, anche qui
possiamo mettere 32 “00”
5) Inviamo adesso 01 03 07 00 00 3B (24 bytes di dati) (18 bytes di dati) (11 bytes di dati) (1 byte
dati) S1, I primi 24 bytes sono la risposta della scheda “sorgente” al comando 01 02 03 03 00
00, i successivi 18 sono sconosciuti e vengono impostati a “00”, i successivi 11 sono la risposta
della scheda “sorgente” al comando 01 02 0C 00 00 00, l’ultimo byte e’ l’8° byte della risposta
della scheda “sorgente” al comando01 00 01 00 00 00.
6) Inviamo adesso 01 03 07 00 01 3B (24 bytes di dati) (18 bytes di dati) (11 bytes di dati) (1 byte
dati) S1, I primi 24 bytes sono la risposta della scheda “sorgente” al comando 01 02 03 03 01
00, i successivi 18 sono sconosciuti e vengono impostati a “00”, i successivi 11 sono la risposta
della scheda “sorgente” al comando 01 02 0C 00 01 00, l’ultimo byte e’ l’8° byte della risposta
della scheda “sorgente” al comando01 00 01 00 00 00.
7) Il prossimo comando è 01 03 0B 00 00 1C (23 bytes di dati) S1, i 23 bytes sono la risposta della
scheda “sorgente” al comando 01 02 0B 00 00 00
8) Se fin qui è andato tutto bene possiamo infine chiudere la programmazione “03” con il comando
01 03 0C 00 00 05 S1, e dara un bel reset.

99
Quinto Passo – Rifiniamo il lavoro

A questo punto non ci rimane che inviare i classici comandi 01 01 per il caricamento delle PlainKey e
dei channel-id e cominciare a vedere se la scheda ci permette la visione dei canali, dopo possiamo
verifichiamo se la scheda accetta i normali comandi di aggiornamento che la CAM invia al nuovo
ProviderGroup.

100
3URFHGXUDSHUXVDUHO XQLYEORFNHU

(Da un messaggio di Marco della lista CRD_EXPERTS)

Allora seguite alla lettera le mie indicazioni e vedrete come funzionera’ l’univblocker.
La mia procedura e’ riferita ad una card 1.2 (stream-d+-premiere...).
La mia procedura non crea una sct clonecard x cui sct non si vedra’, x cui non cambiando il prov00 della tua
card non importa se non hai la mk.
Unzippate il file che ho mandato in attach, in una directory (/L7URYHUHWHLQIRQGRDOPHVVDJJLRQRPHILOH
SHUXWLOL]]DUOLWDJOLDWHOLHGLQFROODWHOLQHLUHODWLYLILOHQG7KHID[).

Inserite la Vs card nello smartmouse, dovrete usare il programma creacrd di jj, versione 2.80 in su.
Segnatevi su un pezzo di carta il tuo prov00 e il datestamp relativo al prov00.
Ora aprite il crd [Link] e mettete al posto delle xx xx xx il tuo prov00 e al posto delle yy yy il date stamp
che avete segnato prima e salvate.
Inviate lo stesso file alla card e segnate la signature, i sei byte 11 22 33 44 55 66 che leggete dopo 6E 00.

Fate lo stesso col file [Link], dopo averlo modificato inviatelo alla card e segnate la signature che
leggete dopo 61 00.

Il primo file ti trova la signature di d+, il secondo quella di stream.

Adesso caricate nella card, senza modificare, il crd chid_key08.crd.

LPSRUWDQWHHVHJXLUHOHRSHUD]LRQLULVSHWWDQGRO RUGLQHGDPHHVSRVWRQHFHVVDULR[ODULXVFLWDILQDOH

Ora con un editor, tipo ultraedit aprite il file asm che ho mandato.
A meta’ del file, alla riga L0282, leggerete una cosa del genere:

L0282 MOVLW 001H ;A


CALL L001D
MOVLW 001H
CALL L001D
MOVLW 000H
CALL L001D
MOVLW 000H
CALL L001D
MOVLW 000H
CALL L001D
MOVLW 022H
CALL L001D
MOVLW 003H
CALL L001D
MOVLW 0XXH
CALL L001D
MOVLW 0XXH
CALL L001D
MOVLW 0XXH

Scorrendo dall'alto verso il basso, troverete delle XX(in rosso sopra te le ho evidenziate) lì devi inserire il
prov00, 2 byte x rigo.
Scorrendo ancora più giu' troverete delle YY(in rosso), lì metteretei il datestamp che avate segnato prima

MOVLW 000H
CALL L001D
MOVLW 018H
CALL L001D
MOVLW 040H
CALL L001D
MOVLW 002H
CALL L001D
MOVLW 0YYH
CALL L001D
MOVLW 0YYH

Ancora + giu' troverete delle SS (sempre in rosso), lì mettete la signature di d+.

101
MOVLW 076H
CALL L001D
MOVLW 06EH
CALL L001D
MOVLW 000H
CALL L001D
MOVLW 0SSH
CALL L001D
MOVLW 0SSH
CALL L001D
MOVLW 0SSH
CALL L001D
MOVLW 0SSH
CALL L001D
MOVLW 0SSH
CALL L001D
MOVLW 0SSH
CALL L001D
GOTO L0275

Ora spostatevi alla riga L0223, qui troverete in colore blu sempre xx, yy, ss, dove metterete il prov00 il date
stamp uguali a quelli che usati prima e poi metterete al posto delle ss la signature di stream.

Poi salvate il file.

Adesso assemblate.

Poi scrivete sul pic, usando:

Pwr time on
Watch dog off
Oscillatore rc esterno
protezione off

Buona visione!!!!

File [Link] :

r0
// Plainkey 02 Telepiù - Provider 00 - for ACS 1.2
// trova signature relativa al prov00 xx xx xx e datestamp yy yy
01 01 00 00 00 22 03 xx xx xx 00 18 40 02 yy yy 5F CC 72 00 AE 73 E8 F3 74 AD 62
75 2F AD 5F C3 76 6E 00 s1

File [Link] :

r0
// Plainkey 02 Stream - Provider 00 - for ACS 1.2
// trova signature relativa al prov00 xx xx xx e datestamp yy yy
01 01 00 00 00 22 03 xx xx xx 00 18 40 02 yy yy 5F CC 72 00 E6 73 59 84 74 4E 99
75 18 FF 5F C3 76 61 00 s1

File chid_key8.crd :

//Con questo crd, con il PIC programmato con il [Link]


//si ottiene il SB senza bisogno di complicati calcoli per firme varie
//by GPShady

// Chid
01 01 00 00 00 3b 03 p2 00 35 51 06 fe b5 00 00 ff 00 51 06 fe b4 00 00 ff 00 51
06 FF fe 00 00 FF 00 51 06 FF fa 00 00 ff 00 51 06 FF f6 00 00 FF 00 51 06 FF ef
00 00 ff 00 s1
01 01 00 00 00 3b 03 p2 00 35 51 06 fe f1 00 00 ff 00 51 06 FE F6 00 00 FF 00 51
06 FF 02 00 00 ff 00 51 06 FF f0 00 00 ff 00 51 06 FF 03 00 00 ff 00 51 06 FF 54
00 00 ff 00 s1

102
01 01 00 00 00 3b 03 p2 00 35 51 06 ff ff 00 00 ff 00 51 06 ff e9 00 00 ff 00 51
06 FF d2 00 00 FF 00 51 06 FF d3 00 00 ff 00 51 06 FF e7 00 00 FF 00 51 06 FF df
00 00 ff 00 s1

01 01 00 00 00 3b 03 p2 00 35 51 06 ff 98 00 00 ff 00 51 06 Ff 95 00 00 FF 00 51
06 FF f8 00 00 ff 00 51 06 FF f6 00 00 ff 00 51 06 FF 03 00 00 ff 00 51 06 FF 52
00 00 ff 00 s1

// Key 08 stream
01 01 00 00 00 1e 03 p2 00 18 5f cc 81 00 09 82 58 F6 83 15 AE 84 A3 5F 5f c3 85
93 00 s1

File [Link] :
; Disassemblato dell’HEX postato da GPshady su UHF
; no comment by tulemann :))
;
; [Link]
;
; This file is produced by PiX 1.12
TITLE "C:\WINDOWS\DESKTOP\LUDIPIPO\PIX\[Link]"
LIST P=16F84

INDIR EQU 00H ; Indirect pointer


RTCC EQU 01H ; Real time clock / counter
PCL EQU 02H ; Program counter low byte
STATUS EQU 03H ; Status register
CY EQU 0 ; Carry/borrow bit
DC EQU 1 ; Digit carry
Z EQU 2 ; Zero flag
PD EQU 3 ; Power down
T0 EQU 4 ; Time-out bit
RP0 EQU 5 ; Register page select bits
RP1 EQU 6 ; Not used in 16C84
RP2 EQU 7 ; Not used in 16C84
FSR EQU 04H ; Indirect pointer
PORTA EQU 05H ; PORT A
PORTB EQU 06H ; PORT B
EEDATA EQU 08H ; Eeprom data
EEADR EQU 09H ; Eeprom address
PCLATH EQU 0AH ; Program counter high byte
INTCON EQU 0BH ; Interrupt control
TRISA EQU 085H ; Data direction port A
TRISB EQU 086H ; Data direction port B
EECON1 EQU 088H ; Eeprom control
W EQU 0 ; W reg. as destination
F EQU 1 ; F file as destination

ORG 0000H

L0000 GOTO L0136 ;A

NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
L0013 ADDLW 001H ;V
BTFSS STATUS,02H ;Skip if bit = 1
GOTO L0013
RETURN

L0017 MOVF 0FH,F ;K


BTFSC STATUS,02H ;Skip if bit = 0
GOTO L005F
BTFSC 0FH,00H ;Skip if bit = 0
GOTO L003E
GOTO L001D

L001D MOVWF 0CH ;«

103
XORWF 17H,F
MOVLW 008H
MOVWF 0DH
MOVLW 0E0H
CALL L0013
L0023 BTFSS PORTB,00H ;A Skip if bit = 1
GOTO L0023
BSF STATUS,005H
BCF PORTB,000H
BCF STATUS,005H
BCF PORTB,000H
MOVLW 0DBH
CALL L0013
NOP
L002C RRF 0CH,F ;A
BTFSC STATUS,00H ;Skip if bit = 0
BSF PORTB,000H
BTFSS STATUS,00H ;Skip if bit = 1
BCF PORTB,000H
MOVLW 0DCH
CALL L0013
DECFSZ 0DH,F ;Skip if Zero
GOTO L002C
NOP
NOP
BSF PORTB,000H
BSF STATUS,005H
BSF PORTB,000H
BCF STATUS,005H
MOVLW 0FEH
CALL L0013
RETURN

L003E MOVWF 0CH ;A


XORWF 17H,F
MOVLW 008H
MOVWF 0DH
MOVLW 0E0H
CALL L0013
L0044 BTFSS PORTB,00H ;A Skip if bit = 1
GOTO L0044
BSF STATUS,005H
BCF PORTB,000H
BCF STATUS,005H
BCF PORTB,000H
MOVLW 0DBH
CALL L0013
NOP
L004D RRF 0CH,F ;A
BTFSC STATUS,00H ;Skip if bit = 0
BSF PORTB,000H
BTFSS STATUS,00H ;Skip if bit = 1
BCF PORTB,000H
MOVLW 0DCH
CALL L0013
DECFSZ 0DH,F ;Skip if Zero
GOTO L004D
NOP
NOP
BSF PORTB,000H
BSF STATUS,005H
BSF PORTB,000H
BCF STATUS,005H
MOVLW 0D0H
CALL L0013
RETURN

L005F MOVWF 0CH ;B


XORWF 17H,F
MOVLW 008H
MOVWF 0DH
MOVLW 0E0H
CALL L0013
L0065 BTFSS PORTB,07H ;A Skip if bit = 1
GOTO L0065
BSF STATUS,005H
BCF PORTB,007H
BCF STATUS,005H
BCF PORTB,007H
MOVLW 0DBH
CALL L0013
L006D RRF 0CH,F ;A
BTFSC STATUS,00H ;Skip if bit = 0
BSF PORTB,007H
BTFSS STATUS,00H ;Skip if bit = 1
BCF PORTB,007H
MOVLW 0DCH
CALL L0013
DECFSZ 0DH,F ;Skip if Zero

104
GOTO L006D
NOP
NOP
BSF PORTB,007H
BSF STATUS,005H
BSF PORTB,007H
BCF STATUS,005H
MOVLW 0D0H
CALL L0013
RETURN

L007F MOVF 0FH,F ;J


BTFSC STATUS,02H ;Skip if bit = 0
GOTO L00B3
BTFSC 0FH,00H ;Skip if bit = 0
GOTO L0085
GOTO L009C

L0085 MOVLW 008H ;A


MOVWF 0DH
L0087 BTFSS PORTB,00H ;A Skip if bit = 1
GOTO L0087
L0089 BTFSC PORTB,00H ;A Skip if bit = 0
GOTO L0089
MOVLW 0CAH
CALL L0013
NOP
L008E BCF STATUS,000H ;A
BTFSC PORTB,00H ;Skip if bit = 0
BSF STATUS,000H
RRF 0CH,F
MOVLW 0DCH
CALL L0013
NOP
DECFSZ 0DH,F ;Skip if Zero
GOTO L008E
MOVLW 0E8H
CALL L0013
MOVF 0CH,W
XORWF 17H,F
RETURN

L009C MOVLW 008H ;M


MOVWF 0DH
L009E BTFSS PORTB,00H ;A Skip if bit = 1
GOTO L009E
L00A0 BTFSC PORTB,00H ;A Skip if bit = 0
GOTO L00A0
MOVLW 0CAH
CALL L0013
NOP
L00A5 BCF STATUS,000H ;A
BTFSC PORTB,00H ;Skip if bit = 0
BSF STATUS,000H
RRF 0CH,F
MOVLW 0DCH
CALL L0013
NOP
DECFSZ 0DH,F ;Skip if Zero
GOTO L00A5
MOVLW 0FEH
CALL L0013
MOVF 0CH,W
XORWF 17H,F
RETURN

L00B3 MOVLW 008H ;A


MOVWF 0DH
L00B5 BTFSS PORTB,07H ;A Skip if bit = 1
GOTO L00B5
L00B7 BTFSC PORTB,07H ;A Skip if bit = 0
GOTO L00B7
MOVLW 0CAH
CALL L0013
NOP
L00BC BCF STATUS,000H ;A
BTFSC PORTB,07H ;Skip if bit = 0
BSF STATUS,000H
RRF 0CH,F
MOVLW 0DCH
CALL L0013
NOP
DECFSZ 0DH,F ;Skip if Zero
GOTO L00BC
MOVLW 0E8H
CALL L0013
MOVF 0CH,W
XORWF 17H,F
RETURN

105
L00CA MOVLW 03FH ;M
MOVWF 17H
MOVLW 001H
CALL L0017
MOVF 12H,W
CALL L0017
MOVF 0FH,F
BTFSS STATUS,02H ;Skip if bit = 1
GOTO L00D7
MOVF 18H,W
CALL L0017
MOVF 19H,W
CALL L0017
L00D7 MOVF 13H,W ;A
CALL L0017
MOVF 14H,W
CALL L0017
MOVF 15H,W
CALL L0017
MOVF 16H,W
CALL L0017
MOVF 16H,F
BTFSC STATUS,02H ;Skip if bit = 0
GOTO L00EE
MOVF 11H,F
BTFSS STATUS,02H ;Skip if bit = 1
GOTO L00F1
MOVLW 01BH
MOVWF FSR
MOVF 16H,W
MOVWF 10H
L00E9 MOVF INDIR,W ;A
CALL L0017
INCF FSR,F
DECFSZ 10H,F ;Skip if Zero
GOTO L00E9
L00EE MOVF 17H,W ;B
CALL L0017
RETURN

L00F1 MOVF 16H,W ;A


MOVWF 10H
L00F3 CALL L02FD ;A
CALL L0017
DECFSZ 10H,F ;Skip if Zero
GOTO L00F3
GOTO L00EE

L00F8 MOVLW 03FH ;I


MOVWF 17H
CALL L007F
XORLW 001H
BTFSS STATUS,02H ;Skip if bit = 1
GOTO L00F8
CALL L007F
MOVWF 12H
XORLW 005H
BTFSC STATUS,02H ;Skip if bit = 0
GOTO L0109
XORLW 007H
BTFSC STATUS,02H ;Skip if bit = 0
GOTO L0109
XORLW 003H
BTFSS STATUS,02H ;Skip if bit = 1
GOTO L00F8
L0109 MOVF 0FH,F ;B
BTFSC STATUS,02H ;Skip if bit = 0
GOTO L0110
CALL L007F
MOVWF 18H
CALL L007F
MOVWF 19H
L0110 CALL L007F ;A
MOVWF 13H
CALL L007F
MOVWF 14H
ANDLW 0F0H
BTFSS STATUS,02H ;Skip if bit = 1
GOTO L00F8
CALL L007F
MOVWF 15H
ANDLW 0F0H
BTFSS STATUS,02H ;Skip if bit = 1
GOTO L00F8
CALL L007F
MOVWF 16H
SUBLW 041H
BTFSS STATUS,00H ;Skip if bit = 1

106
GOTO L00F8
MOVF 16H,F
BTFSC STATUS,02H ;Skip if bit = 0
GOTO L012D
MOVLW 01BH
MOVWF FSR
MOVF 16H,W
MOVWF 10H
L0128 CALL L007F ;A
MOVWF INDIR
INCF FSR,F
DECFSZ 10H,F ;Skip if Zero
GOTO L0128
L012D CALL L007F ;A
MOVF 17H,F
BTFSS STATUS,02H ;Skip if bit = 1
GOTO L00F8
RETURN

NOP
NOP
NOP
NOP
L0136 MOVLW 0FFH ;A
TRIS PORTA
TRIS PORTB
MOVWF PORTA
MOVWF PORTB
MOVLW 07FH
OPTION
MOVLW 003H
MOVWF PCLATH
BSF STATUS,005H
BCF PORTB,005H
BCF STATUS,005H
BSF PORTB,005H
CLRF 0FH
BSF PORTB,000H
BSF PORTB,001H
BSF PORTB,007H
BCF PORTB,005H
MOVLW 000H
MOVWF 0EH
MOVLW 000H
MOVWF 11H
MOVLW 014H
MOVWF 10H
L014E CALL L02FD ;A
CALL L005F
DECFSZ 10H,F ;Skip if Zero
GOTO L014E
L0152 CLRF 18H ;K
CLRF 19H
CLRF 0FH
CALL L00F8
BTFSC 12H,02H ;Skip if bit = 0
GOTO L0206
BTFSC 12H,01H ;Skip if bit = 0
GOTO L01AC
MOVLW 003H
MOVWF 16H
CLRF 1CH
CLRF 1DH
CLRF 1EH
MOVLW 03FH
MOVWF 13H
CLRF 11H
CALL L00CA
GOTO L0152

NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP

107
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
L01AC MOVF 13H,W ;A
BTFSC STATUS,02H ;Skip if bit = 0
GOTO L01C5
XORLW 001H
BTFSC STATUS,02H ;Skip if bit = 0
GOTO L01CB
XORLW 003H
BTFSC STATUS,02H ;Skip if bit = 0
GOTO L01D1
XORLW 001H
BTFSC STATUS,02H ;Skip if bit = 0
GOTO L01D7
XORLW 00AH
BTFSC STATUS,02H ;Skip if bit = 0
GOTO L01DF
XORLW 003H
BTFSC STATUS,02H ;Skip if bit = 0
GOTO L01EE
XORLW 004H
BTFSC STATUS,02H ;Skip if bit = 0
GOTO L01F6
XORLW 01FH
BTFSC STATUS,02H ;Skip if bit = 0
GOTO L01FE
GOTO L0152

L01C5 MOVLW 015H ;A


MOVWF 11H
MOVLW 014H
MOVWF 16H
CALL L00CA
GOTO L0152

L01CB MOVLW 02AH ;A


MOVWF 11H
MOVLW 010H

108
MOVWF 16H
CALL L00CA
GOTO L0152

L01D1 MOVLW 03BH ;A


MOVWF 11H
MOVLW 010H
MOVWF 16H
CALL L00CA
GOTO L0152

L01D7 MOVLW 04CH ;A


BTFSC 15H,00H ;Skip if bit = 0
MOVLW 065H
MOVWF 11H
MOVLW 018H
MOVWF 16H
CALL L00CA
GOTO L0152

L01DF MOVLW 040H ;A


MOVWF 16H
CLRF 11H
MOVLW 001H
MOVWF 0FH
CALL L00CA
NOP
NOP
NOP
MOVLW 055H
MOVWF 18H
CLRF 16H
CLRF 0FH
CALL L00CA
GOTO L0152

L01EE CLRF 16H ;A


MOVLW 050H
MOVF 14H,F
BTFSS STATUS,02H ;Skip if bit = 1
MOVLW 05EH
MOVWF 18H
CALL L00CA
GOTO L0152

L01F6 MOVLW 07EH ;A


BTFSC 14H,00H ;Skip if bit = 0
MOVLW 0BFH
MOVWF 11H
MOVLW 040H
MOVWF 16H
CALL L00CA
GOTO L0152

L01FE MOVLW 058H ;A


MOVWF 18H
MOVLW 0BFH
MOVWF 11H
MOVLW 040H
MOVWF 16H
CALL L00CA
GOTO L0152

L0206 CLRF 11H ;A


MOVF 16H,W
MOVWF 1AH
MOVLW 001H
MOVWF 0FH
CALL L00CA
CALL L00F8
MOVF 16H,F
BTFSS STATUS,02H ;Skip if bit = 1
GOTO L0220
BTFSS 0EH,00H ;Skip if bit = 1
GOTO L0216
MOVLW 000H
MOVWF 0EH
CALL L0223
GOTO L0219

L0216 MOVLW 00FH ;A


MOVWF 0EH
CALL L0282
L0219 CLRF 13H ;A
MOVF 1AH,W
MOVWF 16H
MOVLW 001H
MOVWF 0FH
CALL L00CA

109
CALL L00F8
L0220 CLRF 0FH ;A
CALL L00CA
GOTO L0152

L0223 MOVLW 001H ;A


CALL L001D
MOVLW 001H
CALL L001D
MOVLW 000H
CALL L001D
MOVLW 000H
CALL L001D
MOVLW 000H
CALL L001D
MOVLW 022H
CALL L001D
MOVLW 003H
CALL L001D
MOVLW 0XXH
CALL L001D
MOVLW 0XXH
CALL L001D
MOVLW 0XXH
CALL L001D
MOVLW 000H
CALL L001D
MOVLW 018H
CALL L001D
MOVLW 040H
CALL L001D
MOVLW 002H
CALL L001D
MOVLW 0YYH
CALL L001D
MOVLW 0YYH
CALL L001D
MOVLW 05FH
CALL L001D
MOVLW 0CCH
CALL L001D
MOVLW 072H
CALL L001D
MOVLW 000H
CALL L001D
MOVLW 0E6H
CALL L001D
MOVLW 073H
CALL L001D
MOVLW 059H
CALL L001D
MOVLW 084H
CALL L001D
MOVLW 074H
CALL L001D
MOVLW 04EH
CALL L001D
MOVLW 099H
CALL L001D
MOVLW 075H
CALL L001D
MOVLW 018H
CALL L001D
MOVLW 0FFH
CALL L001D
MOVLW 05FH
CALL L001D
MOVLW 0C3H
CALL L001D
MOVLW 076H
CALL L001D
MOVLW 061H
CALL L001D
MOVLW 000H
CALL L001D
MOVLW 0SSH
CALL L001D
MOVLW 0SSH
CALL L001D
MOVLW 0SSH
CALL L001D
MOVLW 0SSH
CALL L001D
MOVLW 0SSH
CALL L001D
MOVLW 0SSH
CALL L001D
L0275 CALL L009C ;A
CALL L009C

110
CALL L009C
CALL L009C
CALL L009C
CALL L009C
CALL L009C
CALL L009C
CALL L009C
CALL L009C
CALL L009C
CALL L009C
RETURN

L0282 MOVLW 001H ;A


CALL L001D
MOVLW 001H
CALL L001D
MOVLW 000H
CALL L001D
MOVLW 000H
CALL L001D
MOVLW 000H
CALL L001D
MOVLW 022H
CALL L001D
MOVLW 003H
CALL L001D
MOVLW 0XXH
CALL L001D
MOVLW 0XXH
CALL L001D
MOVLW 0XXH
CALL L001D
MOVLW 000H
CALL L001D
MOVLW 018H
CALL L001D
MOVLW 040H
CALL L001D
MOVLW 002H
CALL L001D
MOVLW 0YYH
CALL L001D
MOVLW 0YYH
CALL L001D
MOVLW 05FH
CALL L001D
MOVLW 0CCH
CALL L001D
MOVLW 072H
CALL L001D
MOVLW 000H
CALL L001D
MOVLW 0AEH
CALL L001D
MOVLW 073H
CALL L001D
MOVLW 0E8H
CALL L001D
MOVLW 0F3H
CALL L001D
MOVLW 074H
CALL L001D
MOVLW 0ADH
CALL L001D
MOVLW 062H
CALL L001D
MOVLW 075H
CALL L001D
MOVLW 02FH
CALL L001D
MOVLW 0ADH
CALL L001D
MOVLW 05FH
CALL L001D
MOVLW 0C3H
CALL L001D
MOVLW 076H
CALL L001D
MOVLW 06EH
CALL L001D
MOVLW 000H
CALL L001D
MOVLW 0SSH
CALL L001D
MOVLW 0SSH
CALL L001D
MOVLW 0SSH
CALL L001D
MOVLW 0SSH

111
CALL L001D
MOVLW 0SSH
CALL L001D
MOVLW 0SSH
CALL L001D
GOTO L0275

NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
L02FD MOVF 11H,W ;B
ADDWF 10H,W
ADDWF PCL,F
RETLW 000H ;’.’
RETLW 0A0H ;’ ’
RETLW 032H ;’2’
RETLW 02EH ;’.’
RETLW 031H ;’1’
RETLW 056H ;’V’
RETLW 020H ;’ ’
RETLW 053H ;’S’
RETLW 043H ;’C’
RETLW 041H ;’A’
RETLW 020H ;’ ’
RETLW 04FH ;’O’
RETLW 054H ;’T’
RETLW 045H ;’E’
RETLW 044H ;’D’
RETLW 052H ;’R’
RETLW 049H ;’I’
RETLW 00EH ;’.’
RETLW 021H ;’!’
RETLW 09FH ;'Ÿ'
RETLW 03BH ;';'
RETLW 000H ;'.'
RETLW 020H ;' '
RETLW 020H ;' '
RETLW 020H ;' '
RETLW 042H ;'B'
RETLW 033H ;'3'
RETLW 031H ;'1'
RETLW 038H ;'8'
RETLW 033H ;'3'
RETLW 036H ;'6'
RETLW 043H ;'C'
RETLW 037H ;'7'
RETLW 039H ;'9'
RETLW 038H ;'8'
RETLW 036H ;'6'
RETLW 030H ;'0'
RETLW 031H ;'1'
RETLW 030H ;'0'

112
RETLW 031H ;’1’
RETLW 030H ;’0’
RETLW 030H ;’0’
RETLW 000H ;’.’
RETLW 018H ;’.’
RETLW 010H ;’.’
RETLW 068H ;’h’
RETLW 097H ;'—'
RETLW 000H ;'.'
RETLW 002H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 0FFH ;'ÿ'
RETLW 0FFH ;'ÿ'
RETLW 0FFH ;'ÿ'
RETLW 000H ;'.'
RETLW 041H ;'A'
RETLW 054H ;'T'
RETLW 049H ;'I'
RETLW 041H ;'A'
RETLW 05DH ;']'
RETLW 004H ;'.'
RETLW 006H ;'.'
RETLW 003H ;'.'
RETLW 006H ;'.'
RETLW 002H ;'.'
RETLW 006H ;'.'
RETLW 001H ;'.'
RETLW 006H ;'.'
RETLW 099H ;'™'
RETLW 001H ;'.'
RETLW 002H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 031H ;'1'
RETLW 092H ;'’'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 001H ;'.'
RETLW 05AH ;'Z'
RETLW 001H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 092H ;'’'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 000H ;'.'
RETLW 004H ;'.'
RETLW 000H ;'.'
RETLW 011H ;'.'
RETLW 000H ;'.'
RETLW 061H ;'a'

113
RETLW 01AH ;’.’
RETLW 069H ;’i’
RETLW 013H ;’.’
RETLW 0CFH ;'Ï'
RETLW 069H ;'i'
RETLW 03EH ;'>'
RETLW 098H ;'˜'
RETLW 085H ;'…'
RETLW 006H ;'.'
RETLW 0B2H ;'²'
RETLW 096H ;'–'
RETLW 000H ;'.'
RETLW 0D5H ;'Õ'
RETLW 083H ;'ƒ'
RETLW 0FFH ;'ÿ'
RETLW 0F2H ;'ò'
RETLW 09CH ;'œ'
RETLW 003H ;'.'
RETLW 03FH ;'?'
RETLW 065H ;'e'
RETLW 08EH ;' '
RETLW 00BH ;'.'
RETLW 02EH ;'.'
RETLW 0E0H ;'à'
RETLW 0F1H ;'ñ'
RETLW 050H ;'P'
RETLW 079H ;'y'
RETLW 07FH ;' '
RETLW 07BH ;'{'
RETLW 00AH ;'.'
RETLW 09CH ;'œ'
RETLW 0B8H ;'¸'
RETLW 06AH ;'j'
RETLW 0DEH ;'Þ'
RETLW 0BBH ;'»'
RETLW 05EH ;'^'
RETLW 0CEH ;'Î'
RETLW 0F3H ;'ó'
RETLW 04DH ;'M'
RETLW 0C7H ;'Ç'
RETLW 020H ;' '
RETLW 062H ;'b'
RETLW 0BAH ;'º'
RETLW 018H ;'.'
RETLW 0B8H ;'¸'
RETLW 03CH ;'<'
RETLW 061H ;'a'
RETLW 0CEH ;'Î'
RETLW 0E3H ;'ã'
RETLW 046H ;'F'
RETLW 082H ;'‚'
RETLW 084H ;'„'
RETLW 06FH ;'o'
RETLW 05DH ;']'
RETLW 0A7H ;'§'
RETLW 0F6H ;'ö'
RETLW 087H ;'‡'
RETLW 082H ;'‚'
RETLW 0D1H ;'Ñ'
RETLW 09DH ;' '
RETLW 09DH ;' '
RETLW 03EH ;'>'
RETLW 0C2H ;'Â'
RETLW 000H ;'.'
RETLW 0F7H ;'÷'
RETLW 089H ;'‰'
RETLW 08BH ;'‹'
RETLW 009H ;'.'
RETLW 073H ;'s'
RETLW 092H ;'’'
RETLW 008H ;'.'
RETLW 053H ;'S'
RETLW 0F8H ;'ø'
RETLW 092H ;'’'
RETLW 07BH ;'{'
RETLW 0BCH ;'¼'
RETLW 081H ;' '
RETLW 00DH ;'.'
RETLW 037H ;'7'
RETLW 0B5H ;'µ'
RETLW 07BH ;'{'
RETLW 082H ;'‚'
RETLW 0E4H ;'ä'
RETLW 01FH ;'.'
RETLW 0CCH ;'Ì'
RETLW 04EH ;'N'
RETLW 006H ;'.'
RETLW 085H ;'…'
RETLW 0FCH ;'ü'

114
RETLW 0D1H ;'Ñ'
RETLW 043H ;'C'
RETLW 052H ;'R'
RETLW 0CFH ;'Ï'
RETLW 0CEH ;'Î'
RETLW 0D7H ;'×'
RETLW 078H ;'x'
RETLW 095H ;'•'
RETLW 074H ;'t'
RETLW 047H ;'G'
RETLW 0A8H ;'¨'
RETLW 04AH ;'J'
RETLW 0F0H ;'ð'
RETLW 02EH ;'.'
RETLW 0B6H ;'¶'
RETLW 047H ;'G'
RETLW 04DH ;'M'
RETLW 03BH ;';'
RETLW 071H ;'q'
RETLW 0BDH ;'½'
RETLW 02AH ;'*'
RETLW 099H ;'™'
RETLW 05EH ;'^'
RETLW 0D0H ;'Ð'
RETLW 021H ;'!'
RETLW 090H ;' '
RETLW 039H ;'9'
RETLW 0F1H ;'ñ'
RETLW 0E2H ;'â'
RETLW 045H ;'E'
RETLW 044H ;'D'
RETLW 012H ;'.'
RETLW 03FH ;'?'
RETLW 091H ;'‘'
RETLW 0FAH ;'ú'
RETLW 0DCH ;'Ü'
RETLW 0A1H ;'¡'
RETLW 039H ;'9'
RETLW 019H ;'.'

ORG 2000H

DATA 3FFFH
DATA 3FFFH
DATA 3FFFH
DATA 3FFFH

ORG 2007H

DATA 3FF1H

ORG 2100H

DATA 0000h, 0000h, 0000h, 0000h, 0000h, 0000h, 0000h


DATA 0000h, 0000h, 0000h, 0000h, 0000h, 0000h, 0000h
DATA 0000h, 0000h, 0000h, 0000h, 0000h, 0000h, 0000h
DATA 0000h, 0000h, 0000h, 0000h, 0000h, 0000h, 0000h
DATA 0000h, 0000h, 0000h, 0000h, 0000h, 0000h, 0000h
DATA 0000h, 0000h, 0000h, 0000h, 0000h, 0000h, 0000h
DATA 0000h, 0000h, 0000h, 0000h, 0000h, 0000h, 0000h
DATA 0000h, 0000h, 0000h, 0000h, 0000h, 0000h, 0000h
DATA 0000h, 0000h, 0000h, 0000h, 0000h, 0000h, 0000h
DATA 0000h
END

115
/2**,1*0LQLJXLGDDOO¶XWLOL]]RGLPORJH0U[ORJ±%\*LREEH

Allora ragazzi eccovi una miniguida, all’utilizzo dei principali


strumenti per il log.
I programmi che saranno trattati sono le ultime versioni di
CCSuite, Mlog 2.0, e MRXlog2Mdb.
Premetto che neanch’io conosco tute le potenzialità e funzioni dei
tre programmi in questione in quanto alcune di esse non le ho mai
provate, vuoi per mancanza di mezzi (al momento non possiedo
un’interfaccia SCSII) vuoi per mancanza d’interesse verso alcune
Funzioni più particolari.

Settaggi del Nokia Mediamaster.

Innanzitutto bisogna stabilire in che modalità si vuole loggare; la modalità più semplice a mio modo
di vedere se si possiede un Nokia Mediamaster con installato il DVB2000 è la modalità “Pid Menù
via seriale”
In tale modalità QRQqQHFHVVDULDDOFXQDPRGLILFDDO00
Poi bisogna stabilire cosa si vuole loggare.

  /RJGHO&K,GGLXQFDQDOH

Se si vuole loggare il ChId di un canale bisogna innanzitutto scoprire il suo Pid ECM, per fare
ciò ci si posiziona sul canale e si premono i tasti Guide

3RLWDVWR

3RLWDVWR 3RLWDVWR

vi apparirà la seguente schermata, dal quale potete ricavare il Pid in


questione che in questo caso particolare è:

)LJ$

$')

116
A questo punto bisogna andare nel Download Menù del Mediamaster:

3RLWDVWR

3RLWDVWR

)LJ

a questo punto premendo il tasto  del telecomando si andrà ad


inserire il Pid ECM che avevamo trovato in precedenza.
Gli altri valori del menù andranno settati come in figura ad
eccezione del Buffer che dipende da Programma che si usa per
Loggare.
Settati tutti i parametri, il MM è pronto per iniziare il Log
basta premere il tasto  del telecomando per partire, e nuovamente
 per interrompere.
2) /RJGL.H\VH0.
In questo caso la differenza sta nell’impostare nel Menù Download
il Pid EMM al posto di quello ECM che si andrà a ricavare sempre
nel menù Cam Info (vedi fig.A) e che è sempre uguale per lo stesso
Bouquet e cioè 012c per D+ e 00C0 per Stream.

117
8WLOL]]RGL0ORJD
Per quanto riguarda mlog eccoti la prima schermata quando lanci la
prima volta il programma:

Clicca su Options, e setta la lingua in italiano

Queste finestrae vanno settate in questo


modo

118
Questa è la schermata più importante del programma in quanto
Proprio qui si sceglie cosa si vuole loggare

Questa zona
si usa solo si
è spuntata
l’opzione
“solo propria
Qui scegli il Bouquet da loggare carta”

4XLVFHJOL Qui inserisci i


LO serial Hex
)RUPDWR della tua card
GHOORJ . e di altre se
vuoi loggare
solo i dati di
determinate
cards.

Non serve attivarla sui Bouquet


Italiani

Questa zona serve a filtrare le key che si vogliono Questa opzione sembra funzioni
loggare : se si cerca una o più key specifiche si solo se si logga per una carta
clicca su chiavi scelte e si inseriscono le chiavi specifica, e con l’opzione ”chiavi
che si vogliono loggare nell’apposito spazio, scelte”
altrimenti si clicca su tutte le chiavi.

Attivando queste opzioni, il


prog una volta trovati
Masterkey, ChID e Key per
una determinata card scrive
i file per il programmatore
nel formato che si è scelto:
(crd, icp, etc)
(va quindi usata in
abbinamento all’opzione
solo propria carta e dopo
aver compilato la zona Dati
Id propria carta)

Qui si sceglie il
programmatore
che si vorrà
utilizzare, e
quindi il formato
dei File. 119

Opzione utile solo per Bouquet tedeschi


6HWWDJJL :
da usare per log generici su un Bouquet, per tutti i gruppi di

carte per ricerca key, MK ChId)

con la configurazione sottostante invece si loggheranno le Key 02 –08 e MK della


carta i cui dati sono stati inseriti nell’apposita sezione e una volta trovati
tutti i dati, il programma dovrebbe scrivere i Crd in formato cardmaster ed
interrompere il log.

120
Una volta settate le varie opzioni ed aver salvato i settaggi, si
preme ok ed apparirà la maschera principale sottostante:

Funzioni da usare per


Bouquet tedeschi

Fare attenzione
che sia settato in
questo modo

per quanto riguarda il %XIIHU da settare nel menù Datadownload del


MM gli autori consigliano di usare il valore , poiché con valori
più elevati si rischia che il log si interrompa da solo.
Per iniziare il log a questo punto basta avviare il log con il pulsante 3 del telecomando e cliccare
sul pulsante inizio loggare del MLOG. A log terminato, si clicca sul pulsantino interrozione Apparirà
una finestra che ci chiede se vogliamo visionare una parte del log, e poi una ulteriore finestra che
ci chiede se si vuole riprendere nuovamente il log o abbandonarlo definitivamente.
Si può scegliere di riprendere il log anche dopo aver cambiato
canale o spento il ricevitore, basta riposizionarsi sullo stesso
canale, o su un canale dello stesso Bouquet, far partire il log
dal menù data Download del MM e quindi riprendere il log cliccando
su inizio loggare.
Alla fine del log il prog genera due file uno con estensione .(<
che conterrà solo le KEY e MK scritte in modo ordinato con
relativi Provider e serial Hex, e un altro con estensione /2*che
conterrà tutto il traffico che ha letto.
Questi due file si potranno usare entrambi per creare un archivio
in Access tramite il Programma MrxLog2mdb crato da MRX e descritto
più avanti in questa guida.
Le ulteriori funzioni del programma, tipo quelle da usare per i Bouquet tedeschi, o le funzioni SCSI,
o ancora il Log in modalità “menù di bloccaggio”, da usare con Menù Nosferatu e Modifica del MM,
non sono state implementate in questa guida perché non sono mai state usate dal Sottoscritto per
mancanza di mezzi.
Un’aiuto comunque si potrà trovare nel README del prog.
Chiunque volesse darmi una mano a completare l’opera con le parti
mancanti può inviare il materiale a g_giobbe@[Link]

121
Utilizzo di CCsuite

Una volta avviato il prog compare la finestra sottostante

se si vuole loggare in modalità “Download pid menù” per un log


generico su tutti i gruppi di carte alla ricerca di Keys, MK,
basta settare il MM come descrittto nella prima parte in Fig 1.
E lasciare i settaggi di CCsuite come nella figura soprastante.
Poi si clicca su FRQQHFW, ed in basso a destra comparirà il nome
del canale che si sta loggando, si avvia il log dal mediamaster.
Si clicca su VWDUW, e ci apparirà una finestra in cui inserire il
nome dell’archivio che si vuole Access che si vuole creare, una
volta dato immesso il nome che può essere un file nuovo la prima
volta o un file già esistente le volte successive,si da l’ok, e si
cominceranno a vedere i dati letti dal Logger a schermo.
Per terminare la sessione si stoppa il MM, con il tasto 3 e si
clicca sul pulsante HQG; il Logger a questo punto elabora i dati e
li manda nell’archivio creato.
N.B.
Man mano che l’archivio cresce si possono verificare dei ritardi
alla partenza del log che cresceranno con il crescere
dell’archivio.

122
Log del ChId con CCsuite

Per loggare il Channel ID di un canale si setta il MM come


descrittto nella prima parte di questo documento, inserendo il Pid
ECM, e si setta il Ccsuite come in basso:

Il valore del ChId e della Key in uso sul canale in oggetto


appariranno, nella finestra in basso

Altre funzioni

Set Filters:
Questa funzione permette di loggare per una carta specifica i vari nano
comandi, quindi MK, Key, etc.

Ecco un esempio su come loggare una key 02 per una card specifica
i cui dati in Esadecimale sono stati inseriti nell’apposita
maschera.

123
%DVH&RQYHUWHU
questa è un’utilissimo convertitore di dati da
dec->Hex; dec->bin
+H[!GHF!ELQ
ELQ!GHF!+Hx
Programmer:

è un bel programmer che si può usare sia in maniera tradizionale


usando crd già pronti come si fa con cardmaster, sia in modo
interattivo con il logger.
Nel primo caso dopo aver settato nella voce SETUP la Com su cui è
inserito il Phoenix, si inserisce la card nello SmartMouse-
Phoenix, si preme su connect.
Poi una volta letta la card si potrà inviare il crd che si vuole
leggendolo con il pulsante Load dalla posizione in cui è stato
salvato.

124
Il SURJUDPPHU si può usare in sinergia con il logger, cioè mentre
si logga ad esempio il ChId di un canale, settando opportunamente
la sezione “Query e crd” si può mandare il crd creato dal Chid
loggato direttamente al programmer con il tasto “move crd to
Programmer”.

N.B.
Tutto ciò che ho scritto riguardo al programmer, non l’ho mai
verificato poiché non l’ho mai usato.(se qualcuno che lo conosce
meglio vuole mandarmi una descrizione dettagliata del
funzionamento provvederò ad integrare questa parte della guida.

Log con Interfaccia Season Classica

Innanzitutto bisogna settare il programma nel seguente modo:

125
6HWWDOD

YHORFLWjGHOOD

FRPD

%DXG
,QVHULVFLL

GDWLGHOOD

FDUGGL

FXLYXRL

ORJJDUHL

GDWL

A questo punto si spunta la voce Season

Poi si preme il connect, poi start, e si da un nome al File

126
archivio. Dopodichè si può inserire la Season nel ricevitore, e
comincerai a vedere i dati scorrere nelle finestre.

6($621

7RJOLHUHLOSRQWLFHOORH

DOLPHQWDUHFRQXQD

VRUJHQWHHVWHUQD

 
9ROW

Attenzione, mentre per il channel Id, l’attesa è brevissima,


appare quasi istantaneamente, per le keys, i tempi potrebbero
essere molto lunghi.

Good Logs

127
Utilizzo di MrXlog 1.1

Il programma in questione, è un’utilissimo catalogatore di key e


Mk che ti permette di creare un’archivio di tutte le key e MK
loggate per i Provider Stream e Telepiù.
Il programma in questione è in grado di interpretare i formati
generati dai più diffusi logger, e permette inoltre di archiviare
anche tutte le MK dell’archivio 7HOHSL3/$ e simili.

Si Installa preferibilmente nella stessa directory di Mlog2.0a.


Lo lanci ti appare questa schermata:

clicca su scegli e dai un nome al file di Access che vuoi creare.

Una volta creato il file ti appare questa schermata:

a questo punto se vuoi elaborare un log clicca su converti da log:

128
Qui metti il prog che hai
usato per loggare

Qui metti il provider che


hai loggato

poi scegli sfoglia per prendere il file del log:

dopo aver scelto il file clicca su elabora.


Quando avrà finito di elaborare, avrà messo nel database
[Link] (o il nome che tu hai scelto)tutte le key e le MK trovate.

Per fare una ricerca ad esempio di una MK clicca sul pulsante masterkeys:

129
Ti appare la finestra masterkeys navigator qui puoi scegliere il
Provider della card di cui devi trovare la MK (stream, Telepiù) e
poi o li scorri con le freccette oppure se conosci ad esempio il
serial clicchi sul binocolo ti appare questa finestra dove vai a
digitare il serialhex e lui ti trova la MK e Prov00.
La stessa procedura farai se vuoi trovare una key, con la
differenza che cliccherai sul bottone keys del menù principale.

Questo documento è stato fatto per tutti coloro i quali si


avvicinano per la prima volta a questi programmi, è stato quindi
redatto in forma molto elementare, molte cose anche se sono
scontate le ho scritte lo stesso, spero ti avervi fatto cosa
gradita e di non aver tralasciato nulla di importante. Se avete
consigli o volete darmi una mano a migliorare la guida scrivete…

Saluti By Giobbe.

130
,OVLVWHPD0(',$*8$5'GL6(&$

SECA MEDIAGUARD – Da MediaGuard Musing di John McDonald, Traduzione di Goopher

Questo documento è un primo tentavivo di descrivere il sistema di criptaggio digitale Mediaguard per pay-TV
prodotto da SECA (Societe Europeene de Controle D'Acces), e utilizzato da alcune emittenti europee,
compresa CANAL+. La documentazione non è completa ma tratta i concetti base e le istruzioni più
importanti, inclusi l’algoritmo di decriptaggio utilizzato e il calcolo della segnatura di messaggio. Quando altre
funzionalità saranno più chiare verranno aggiunte le relative informazioni.

Ho scritto questo documento solo per scopi didattici e ho voluto mantenere la trattazione a livello
teorico di modo che permetta al lettore di confrontare e vedere le differenze tra il Sistema
Mediaguard e quello Eurocrypt.
Per alcuni versi Mediaguard è molto simile ad Eurocrypt da cui riprende certi concetti (es. invio di
comandi, Indirizzo Unico [UA], Indirizzo Condiviso [SA]) ma per altri è molto diverso (es.
Supercriptaggio, Pay-per-View). Posso dire che ad oggi è la prima volta che diversi sistemi sono
stati studiati per supportare un sistema di criptaggio con modem Pay-TV.
Non è mia intenzione che le informazioni qui contenute siano utilizzate per contravvenire alla legge
di alcun paese così non ho incluso informazioni sulla chiave né alcun dettaglio sulla costruzione di
una smartcard funzionante.
Poiché utilizzerò dei termini introdotti nel sistema Eurocrypt senza darne alcuna spiegazione sul
loro significato, si assume che il lettore abbia già una certa familiarità can tale sistema.

Il lettore deve essere grato ad Amadeus che è autore di gran parte del lavoro fatto e a MacDouf, autore di
parte del materiale introduttivo iniziale.

67587785$',&20$1'2(&20$1'2$16:(5725(6(7

Il sistema Mediaguard, per quanto riguarda la struttura di


pacchetto ed il protocollo utilizzato, aderisce allo standard ISO $755LFKLHVWDGL5HVHW $QVZHU7R
7816. 5HVHW  4XHVWR FRPDQGR ID SDUWH GHOOH
L’intestazione del comando (Header command) è composta da VSHFLILFKH ,62 4XDQGR XQD
5 byte ed ha la forma
VPDUWFDUG YLHQH DWWLYDWD SHU OD SULPD

YROWD HG RJQLYROWD FKH YLHQH UHVHWWDWD

(,)/(1 GHYH LQYLDUH XQ IOXVVR GL GDWL YHUVR


&/$ ,16 3 3
3 O HVWHUQR DWWUDYHUVR OD SRUWD VHULDOH LQ

PRGRGDSRWHUFRPXQLFDUHDOULFHYLWRUH

LUHTXLVLWLGHOODFDUGFRPHOHWHQVLRQLGL
Dove:
SURJUDPPD]LRQH GL FRPXQLFD]LRQH H

FRVu YLD / $75 SHUPHWWH DOOD VFKHGD GL

&/$ R &ODVV E\WH: Il primo byte di un messaggio per lo VSHFLILFDUH VH FRPXQLFD L GDWL FRQ
ISO7816 e rappresenta la classe a cui l’istruzione o SRODULWj QRUPDOH R LQYHUWLWD HG LQ SL
comando appartengono. Per una carta DSS, il CLA è
VHWUDVPHWWHUjSHUSULPRO 06%RO /6% 
0x48 (ASCII 'H', per "Hughes", probabilmente). Per le
TXDOH VDUj LO EDXUDWH XWLOL]]DWR TXDOH
carte dell'inglese SkyTV, il CLA è 0x53 (ASCII 'S',
presumibilmente per "Sky"). WHQVLRQH GL SURJUDPPD]LRQH ULFKLHGH

L’unica classe di istruzioni valida è C1 a differenza di TXDQWD WHQVLRQH ULFKLHGH SHU XQD
Eurocrypt che supporta anche 87 e CA FRUUHWWD SURJUDPPD]LRQH VH XVD

: Il secondo byte di un messaggio


,16 R ,QVWUXFWLRQ E\WH FRPXQLFD]LRQL GL WLSR VLQFURQR R
per la ISO7816. Questo byte può avere qualunque valore,

131
anche se solo alcuni sono elaborati come istruzioni valide per la smartcard. Si noti che nel caso di una
card "H", quasi tutti i valori delle istruzioni provocano una risposta, ma solo molte di queste risposte non
anno alcun senso per la smartcard, vengono inviate unicamente per nascondere i valori corretti e
rallentare un eventuale attacco di hacker con un brute-force.

3 H 3: Rispettivamente il terzo ed il quarto bytes di un messaggio per l’ ISO7816. Questi sono dei
parametri per il messaggio da inviare all’ ISO7816. Talvolta sono usati, altre volte no, ma sono sempre
presenti. Se non vengono utilizzati hanno usualmente il valore 0x00.

/(1,/(1 /XQJKH]]D GHL E\WH R 3: Il quinto byte di un messaggio per la


ISO7816. Strettamente indispensabile, questo byte indica alla carta il numero
totale dei bytes che invieremo, ma per la carta DSS questo byte è
principalmente utilizzato per indicare alla smartcard quanti altri byte si
invieranno per completare il messsaggio. Si noti che questo gruppo di valori
in alcuni casi è più grande del numero reale di byte che seguiranno, ma mai
più piccolo. In base alle specifiche dell'ISO7816-3 questo byte dovrebbe
indicare il totale dei byte inviati o ricevuti come parte dell'intera
transazione ( Es. se dopo l'header sono stati inviati 6 bytes ed il
ricevitore aspetta altri 3 bytes (non contando SW (vedi sotto)), il LEN
bovrebbe essere 09.

La stringa del comando ANSWER-TO-RESET (d’ora in poi denominata con ATR) è tipicamente

3B F7 11 00 01 40 xx xx xx 03 0E 6C B6 D6 90 00 VHFRQGR-2+10$&'21$/'

3B F7 11 00 01 40 96 xx xx xx 0E 6C B6 D6 90 00 VHFRQGR0DF'RXI

ed evidenzia che in Mediaguard viene utilizzata la Convenzione Diretta (Direct Convention: prima il bit meno
significativo) ad una velocità di trasmissione di 9600 baud. In Eurocrypt invece è utilizzata la Convenzione
Inversa (Inverse Convention).
I 3 byte mascherati (contrassegnati con xx xx xx) possono variare ma non per ogni singola smartcard.

,1,=,$/,==$=,21( 67$5783

Immediatamente dopo la ricezione dell’ATR la CAM invia alla Smartcard l’intestazione di comando

C1  00 00 03

che è una richiesta di informazioni.


La Smartcard risponde (ACK) con il byte  (il normale protocollo ISO 7816) e successivamente riceve 3
byte dalla CAM. Questi 3 byte specificano alla Smartcard che informazione è richiesta dalla CAM. Nella fase
di inizializzazione questi 3 byte sono sempre 04 00 01. Più avanti incontreremo altre richieste di informazio-
ni.
La CAM invia

C1  00 00 0D

Che è la richiesta di inviare l’informazione appena richiesta. In Mediaguard i comandi C1 34 / C1


32 agiscono in coppia, il primo definendo l’informazione desiderata ed il secondo richiedendone
l’invio.

La Smartcard risponde con

132
 B2 GDWDE\WHV! 04 .

GDWDE\WHV! può variare ma tipicamnete è 01 00 00 00 00 00 00 00 00 FF FF.

Il dialogo è analogo a quello della classe di processo 87 presente in Eurocrypt, in realtà, per l’emittente è
possibile inviare un comando che disattiva la stringa di inizializzazione nello stesso modo in cui può essere
disabilitato il blocco FAC in Eurocript così da impedire alla Smartcard l’inizializzazione stessa.

,'(17,),&$=,21('(//$60$57&$5'

In ogni Smartcard è stampato un numero di 9 cifre che se espresso in esadecimale è un numero di 4 byte
che rappresenta l’indirizzo unico (UA) della Smartcard.
Subito dopo la sequenza di inizializzazione la CAM invia:

C1 ( 00 00 08

che chiede alla Smartcard di identificarsi. La Smartcard risponde con:

( 00 25 00 00 8$!.

Non conosco il significato dei primi 4 byte ed ho visto altri valori per il secondo byte; probabilmente potrebbe
essere il codice di regione.

Per inciso, l’emittente (Broadcaster) può aggiornare l’UA di una Smartcard tramite segnale TV con una certa
facilità cosicchè non dovrebbe essere necessario spedire una nuova carta nel caso in cui questa dovesse
essere stata clonata.

(17,7¬6833257$7( ,VWUX]LRQL[

Come per alcuni decoder Eurocrypt, la CAM di Mediaguard vuole conoscere in anticipo quante e
quali entità sono supportate dalla Smartcard. La CAM inizia tale processo di acquisizione dati
inviando:

C1  00 00 07.

La Smartcard risponde con:

 00 00 (QWLW\%LWPDS!E\WHV!FF .

(QWLW\ %LWPDS! è costituito da 2 byte in cui ogni bit rappresenta un’entità. Se un bit è settato, la
corrispondente entità è supportata. Le Entità sono numerate partendo da destra verso sinistra e iniziando da
0. Così se tale campo è pari a 0x03 0xFF (00000011 11111111) le entità 0, 1, .. , 8, 9 sono supportate,
viceversa le 11, 12, .., 14, 15 non lo sono.

I due byte che seguono il campo (QWLW\ %LWPDS! generalmente sono 0x0000 ma rappresentano vari
permessi che possiede la Smartcard. Una tipica stringa C1 16 è 16 00 00 0F FF 00 00 FF. Tale stringa
indica che sono supportate 12 entità.

L’Entità 0 è l’ID di Fornitura della Smartcard (es. SECA), quelle da 1 a 15 sono le Entità dei programmi
disponibili del fornitore del servizio (emitente) come CANAL+ e CanalSatellite.

133
,1)250$=,21,68,3529,'(5 ,VWUX]LRQL[

Una volta identificato il numero delle entità disponibili la CAM procede ad identificare queste entità inviando:

C1  00 00 18. )RUPDWRGHOOH'DWH

Le date in SECA vengono codificate con


due byte. Detti tali byte B e C, si ha:
e la Smartcard risponde con:
%& EEEEEEEEFFFFFFFF

(b e c sono i rispettivi 8 bit di B e C)



Partendo dal bit più significativo di B (quello
00 00 più a sinistra) e procedendo da sinistra a
53 45 43 41 20 20 20 20 20 20 20 20 20 20 20 20 destra fino al bit meno significativo di C, si
00 00 00 00 00 00 ha:
.
$QQR : 7 bit, che rappresentano l’offset
partendo dall’anno 1990. Range:
varia da  a (1990 + 2^7 = 1990
I primi due byte (0x0000) rappresenteno l’identificatore di Entità, i + 127) = 
successivi 16 byte rappresentano il nome dell’Entità (‘SECA’ in
ascii esadecimale) più 12 spazi vuoti. I successivi 6 byte sono 0HVH : 4 bit.
0x00 00 00 00 00 00. Range:
da
Perciò il fornitore (entità fornitrice) è SECA, con un ID di 0000. 0001 a
Il valore del parametro P1 nel comando C1 12 specifica l’Entità da 1010
mostrare. *LRUQR : 5 bit. Range: tutti i
Da notare che nel comando C1 12 inviato dal CAM il parametro P3 possibil
(0x18=24) contiene il numero di byte atteso dal CAM (escluso 12 i valori,
…. 90 00). escluso
0000,
La CAM ora chiede la stessa informazione per ogni Entità fornitrice ovvero
iniziando con: 00001-
11111
C1  01 00 18 Esempio 1:
29 9F = 
E dovrebbe ricevere:   

  GLFHPEUH


 

00 1C
28 49 29 4d 65 64 69 61 73 65 74 20 20 20 20 20
<UA>
29 9F
.

Il fornitore in questo caso è ‘(I)Mediaset’ con un ID di 0x001C. Da notare dopo il nome del provider viene
mostrato il UA della Smartcard, seguito dalla data di scadenza.
Per inciso, le date sono codificate esattamente nello stesso modo utilizzato in Eurocrypt M ma con un anno
base pari al 1990.

$%%21$0(17,6833257$7, ,VWUX]LRQL[

L’ultima fase nel processo preliminare è dove il CAM identifica che Pacchetti supporta per ogni fornitore.
Un pacchetto è un sottoinsieme di quello dei programmi fornito da un provider, ma considerati come una
singola unità.

134
Per esempio potete sottoscrivere l’abbonamento ad alcuni canali di film, alcuni di sport e natura e pagare per
aumentare le sottoscrizioni ad altri canali di vostra scelta.

Questo vi darebbe diritto a vedere alcuni pacchetti, ma non tutti (es. Musica). Ogni fornitore può definire e
vendere fino a 64 pacchetti.

Per controllare i pacchetti sottoscritti la CAM invia

C1  00 00 03
e, come prima la Smartcard risponde '34' e riceve 00 00 00.

La CAM allora invia

C1  P1 00 20
dove P1 rappresenta l’ID dell’Entità.

La Smartcard risponde con (per esempio)


8300 00 00 00 00 00 00 07
 FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF
FF FF FF FF FF FF 

La Smartcard invia ’83’ seguito dal Bitmap di pacchetto, poi ’04’ per indicare la fine dei dati (Bitmap di
Pacchetto). I dati restanti sono di riempimento (questo perché il CAM ha richiesto 32 Byte – 0x20 = 32).

Il Bitmap di Pacchetto è simile al Bitmap dei fornitori; I pacchetti sono numerati da sinistra a destra iniziando
da 0 e un bit settato (posto cioè a 1) indica che il pacchetto associato è attivo. Così nell’esempio, i pacchetti
attivi sono i numeri 1, 2 e 3 (0x07=0000 0111bin).
Da notare che l’intervallo valido dei numeri di pacchetto è da 0x00 a 0x3F.

Il CAM ripete il ciclo C1 34/C1 32 per ogni entità presente nella carta.
Al termine di questo ciclo ha completato così la lungo e alquanto tedioso sequenza di inizio.

Possiamo passare ora ad esaminre come avviene la fase di decriptaggio.

&21752//2'(,',5,77,',$&48,672 ,VWUX]LRQL[&±[$

Il Sistema di Controllo dei Diritti di acquisto di Mediaguard è straordinariamente simile i tutto a quello di
Eurocrypt, infatti:

- Utilizza una coppia di intestazioni di comando C1 3C/C1 3A per fornire i dati criptati e ricevere
quelli decryptati proprio come la coppia CA 88/CA C0 di Eurocrypt

- Per essere decriptato necessita di 2 parole di controllo di 8-byte utilizzando le Chiavi di Funzione
(operation keys)

- Invia i parametri di diritto di acquisto nel data stream per la Smartcard per esaminare (against its
authorisations) ???

- Usa una segnatura di messaggio dipendente da chiave (key-dependent) che la Smartcard


controlla per validare il messaggio prima di decriptarlo.

135
Il sistema comunque presenta 'sotto al cilindro' alcuni trucchi che lo rendono tale da violarsi più difficilmente
di Eurocrypt , ma chi vivrà vedrà.

L’ECS di Eurocrypt è formato da tre fasi:

- Sceglie l’Entità (CA A4)

- Invia la parola di controllo criptata e i dati di diritto di acquisto (CA 88)

- Riceve la parola di controllo decriptata (CA C0).

Mediaguard invece richiede solo due fasi dal momento che l’Entità è selezionata mediante del Parametro P1
per il fornitore.
Inoltre, mentre I parametri di Eurocrypt sono nella forma ID, Lunghezza, Dati, i parametri di ID di Mediaguard
sono scelti in modo che la loro lunghezza sia parte degli ID. I 4 bit più significativi di un parametro ID così
determina la lunghezza del parametro di dati come segue:

Parametro ID Lunghezza Dati

0x0n to 0xCn 0x00 to 0x0C


0xDn 0x10
0xEn 0x18
0xFn 0x20

dove n è una qualunque cifra esadecimale 0-F.

Così, per esempio, il parametro 0x71 (113 dec) ha 7 byte di dati, ma il parametro 0xD1 (209 dec) ha 16 byte
di dati.

Ogni 10 secondi circa la CAM di Mediaguard invia un’intestazione di comando tipo

C1 & 09 0C 27.
La Smartcard risponde '3C' e riceve dei dati tipo

 00 00 19 07 CF 00 04
 12 89
 01
' FA 55 DA FE 46 B4 E0 95 62 0D 37 9F 66 59 2A 04
 92 A9 DB E9 C2 9C F4 9D
90 00

Il parametro P1 definisce il fornitore del servizio (entità 0x09) ed il P2 la chiave da utilizzare per il
decriptaggio (0x0C).

I fedeli di Eurocrypt ne riconosceranno la struttura.


Il flusso dei dati consiste nel, parametro 0x71 (0x00 … 0x04), parametro 0x27 (0x12 0x89), parametro 0x13
(0x01), parametro 0xD1 (0xFA … 0x04) e nel parametro 0x82 (0x92 … 0x9D). Posso affermare che la
Smartcard ignora (dovrebbe) il parametro 0x71, e per molti fornitori è sempre zero.
Il Parametro:

0x27 è la data di trasmissione (9 Aprile 1999)


0x13 è il pacchetto di programma trasmesso.
0xD1 sono le 2 parole di controllo di 8-byte
0x82 è il messaggio di segnatura di 8-byte, analogo al CA 88 hash di Eurocrypt.

È piuttosto ovvio quello che fa la Smartcard:

• Prima verifica la segnatura

136
• Poi effettua il test sulla data di trasmissione che deve essere antecedente a quella di
scadenza della sottoscrizione all’abbonamento
• Successivamente controlla il Bitmap di pacchetto, verificando che il pacchetto associato al
bit 0x01 (in questo esempio, ovviamente) sia settato.
• Poi decripta le parole di controllo e UHVWLWXLVFH quando tutti i test sono stati effettuati
con esito positivo, [[[ se qualche test fallisce.

Subito dopo la ricezione del terminatore 90 00 la CAM invia

C1 $ 00 00 10

chiedendo le due parole di controllo decriptate e la Smartcard risponde con

3A xx xx xx xx xx xx xx xx prima parola di controllo decriptata


xx xx xx xx xx xx xx xx seconda parola di controllo decriptata
90 00

a questo punto appare l’immagine ed il suono

Ci sono 15 parametri che possono essere usati con C1 3C. È possibile decriptare una singola
parola di controllo (parametro 0x87). L’emittente può trasmettere il maturity rating del programma
nel flusso dati (data stream) (0x12) e la Smartcard lo controllerà rispetto al Reference Maturity
Rating nel caso in cui si effettui una operazione controllata dal codice PIN (vedi oltre) per far
rispettare il controllo parentale. I pacchetti possono essere dati in promozione agli abbonati tramite
il parametro 0x04 offrendo loro una libera, visione bypassando il controllo del pacchetto.
Programmi Pay-per-View con o senza anteprime possono essere controllati con I parametri 0x15,
0x19, 0x2C, 0x2D e 0x31. Di questi il parametro di anteprima 0x19 è il più interessante;
L’informazione è un contatore che viene decrementato ogni volta che un comando C1 3C viene
processato e quando il contatore è azzerato il decriptaggio della parola di controllo (control word)
si blocca.

Tutto ciò appena detto solleva la questione dell’algoritmo utilizzato per il decriptaggio della parola di controllo
ed il messaggio di segnatura, così ora lo esaminiamo.

$/*25,702','(&5,37$**,2

L’algoritmo di decriptaggio di Mediaguard opera su una parola criptata di 8-byte, utilizzando una chiave di
16-byte per produrre una parola di 8-byte in chiaro.

La chiave di 16-byte è costituita da una &KLDYH3ULPDULDGLE\WH a da una 6HFRQGDULDXJXDOPHQWHGL


E\WH. Qualche volta la ChiaveSecondaria coincide con quella Primaria, altre volte è diversa. Per chiarire

questa situazione di confusione esaminiamo più approfonditamente le 2 chiavi.

Entrambi le chiavi, Primaria e secondaria, sono numerate da 0x00 a 0x0F in modo che potenzialmente
possono esserci 16 Chiavi Primarie e 16 Chiavi Secondarie. Sembra che le chiavi operative (Operation keys
– per ECM) sono da 0x0C a 0x0F e che le chiavi da 0x00 a 0x0B sono di manipolazione (management keys
– per EMM).

Ma le chiavi primarie, a capriccio delle emittenti, quando sono state memorizzate nelle Smartcard possono
essere state numerate da 0x10 a 0x1F. Solo le chiavi Primarie così numerate possono essere utilizzate con
le chiavi Secondarie equivalenti. Il parametro P1 del comando C1 32 determina se questo avverrà; se P1 è
nella forma 0x1n.

Seguono alcuni esempi:

137
C1 32 04 0E P3 8VDODFKLDYHSULPDULD[([(GDOIRUQLWRUH[

C1 32 14 0E P3 VHODFKLDYH3ULPDULD[(qQXPHUDWD[(

 8VD OD FKLDYH SULPDULD [( VHFRQGDULD [( GDO IRUQLWRUH

[

DOWULPHQWL

8VDODFKLDYH3ULPDULDNH\[([( .

Così ora dovremmo capire come è formata la chiave di 16-byte per l’algoritmo.

L’algoritmo è formato da due fasi:

1) PREPARAZIONE DELLA CHIAVE


2) MANIPOLAZIONE DEI DATI

 3UHSDUD]LRQHGHOOD&KLDYH

immaginiamo che i byte della chiave siano disposti in forma circolare come fossero avvolti su un cerchio, in
questo modo:

...k15, k16, k1, k2, ..., k13, k14...

Iniziamo da k1, prendiamo il byte che ‘lo precede’ (cioè k16), facciamo lo XOR di questo con quello che
‘segue’ k1 (cioè k2) e con una costante C. usiamo questo risultato come indice nei primi 256-byte della
tabella T1 e facciamo lo XOR del valore ottenuto da T1 con k1. Questo è il nuovo valore di k1. La costante C
ha un valore iniziale nullo, e la tabella T1 è mostrata alla fine di questa sezione.

Così N = k1 XOR T1(k16 XOR k2 XOR C).

Ripetiamo questo procedimento altre 3 volte su k2,k3 e k4 per assegnare:


Nota:
N = k2 XOR T1(k1 XOR k3 XOR C)
.[ : nuovo byte
N = k3 XOR T1(k2 XOR k4 XOR C)
(in grassetto)
N = k4 XOR T1(k3 XOR k5 XOR C).

Kx: byte iniziale


Incrementiamo la costante C di 1 e facciamo altre 4 iterazioni (su k5…k8):

N = k5 XOR T1(k4 XOR k6 XOR C)


N = k6 XOR T1(k5 XOR k7 XOR C)
N = k7 XOR T1(k6 XOR k8 XOR C)

N = k8 XOR T1(k7 XOR k9 XOR C)

Incrementiamo la costante C e facciamo altre 4 iterazioni (su k9…k12):

. = k9 XOR T1(k8 XOR k10 XOR C)


. = k6 XOR T1(k9 XOR k11 XOR C)
N = k7 XOR T1(k10 XOR k12 XOR C)

N = k8 XOR T1(k11 XOR k13 XOR C)

Incrementiamo la costante C e facciamo altre 4 iterazioni (su k13…k16):

. = k13 XOR T1(k12 XOR k14 XOR C)


. = k14 XOR T1(k13 XOR k15 XOR C)
N = k15 XOR T1(k14 XOR k16 XOR C)

N = k16 XOR T1(k15 XOR k1 XOR C)

A questo punto C=3.

138
Incrementiamo ancora C e ricominciamo dall’inizio per ottenre k1 …k16. ⇐
Ora C=7

Ripetiamo ancora due volte il processo ⇐ incrementando sempre C e formando nuovi valori per tutti e 16 i
‘k’ byte.
A questo punto C=15 e abbiamo ripetuto l’algoritmo 16 x 4 volte.

Abbiamo terminato la fase 1 di preparazione della chiave ed I valori finali di k1,...,k16 sono quelli usati nella
fase di manipolazione dei dati.

 0DQLSROD]LRQHGHLGDWL

L’algoritmo è formato da 16 cicli. Ogni ciclo opera solo su 4 byte di chiave e 4 byte di dati.
Detti k1, k2, …, k16 i byte della chiave (ottenuti dopo la fase di preparazione della chiave) e detti i byte dei
dati d1,d2,…,d8 si ha:

1XPHUR&LFOR %\WHGLFKLDYH %\WHGLGDWL

 k13, k14, k15, k16 d5, d6, d7, d8


 K9, k10, k11, k12 d5, d6, d7, d8
 k5, k6, k7, k8 d5, d6, d7, d8
 k1, k2, k3, k4 d5, d6, d7, d8

Un ciclo consiste in:

- Fare lo XOR dei byte di chiave con quelli di dati:


- Eseguire la Funzione Nucleo (core function) sui byte di dati per calcolare i 4 nuovi byte di dati
- Fare lo XOR di questi valori con gli altri 4 byte dati per calcolare i 4 nuovi valori per i byte di
dati d5-d8 per il ciclo successivo
- Processare I byte di chiave per calcolare I 4 nuovi byte di chiave da utilizzare nel ciclo seguente.

3ULPRSDVVR;25GHLE\WHGLFKLDYHFRQTXHOOLGLGDWL

Questo è semplice:

d5 = K(i) XOR d5
d6 = K(i+1) XOR d6
d7 = K(i+2) XOR d7
d8 = K(i+3) XOR d8

dove i = 13 per i cicli 1, 5, 9, 13


9 per i cicli 2, 6, 10, 14
5 per i cicli 3, 7, 11, 15
1 per i cicli 4, 8, 12, 16.

Dove:
6HFRQGRSDVVR±)XQ]LRQH1XFOHR

7>dx@
Prima eseguire 4 accessi alla Tabella 1:
,QGLFD O¶HOHPHQWR GHOOD 7DEHOOD

DYHQWHRIIVHWSDULDOE\WHG[

HVSUHVVRLQHVDGHFLPDOH
139
d5 = 7>d5@, d6 = 7>d6@, d7 = 7>d7@, d8 = 7>d8@

Successivamente utilizzare la Tabella 2 (vedi oltre). Il termine ’~’ significa che scambio di posto del mezzo
byte meno significativo con quello più significativo (es. 11100010 = E2 ⇒ ~E2 = 2E = 00101110):

d5 = d8 XOR d5
d7 = 7>(~d8) + d7@

d8 = d7 XOR d8
d6 = 7> (~d7) + d6@

d7 = d6 XOR d7
d5 = 7> (~d6) + d5@

Ora si deve utilizzare la Tabella 1 come segue:

d6 = d5 XOR d6
d8 = 7>(~d5) + d8@

d5 = d8 XOR d5
d7 = 7>(~d8) + d7@

d8 = d7 XOR d8
d6 = 7>(~d7) + d6@

Infine eseguire:

d7 = d6 XOR d7
d6 = d5 XOR d6.

Se in qualche addizione il valore risultante è maggiore di 0xFF, sottrarre il valore 0x0100 prima di accedere
alle tabelle.

7HU]R3DVVR±&DOFRODUHLQXRYLYDORULGHLE\WHGLGDWLSHULOSURVLPRFLFOR

Questi si ottengono dalla Tabella 2 procedendo come segue:

d1 = 7>d6@ XOR d1
d2 = 7>d8@ XOR d2
d3 = 7>d5@ XOR d3
d4 = 7>d7@ XOR d4

Prima di utilizzare i byte di dati d1, …, d8 occorre scambiarli come segue :

d1 ∆ d5
d2 ∆ d6
d3 ∆ d7
d4 ∆ d8

NOTA: al termine del 16° ciclo però questo scambio NON deve essere fatto ed i byte di dati decriptati sono
d1, …, d8.

140
4XDUWRSDVVR±2WWHQHUHQXRYLE\WHGLFKLDYHSHULOVXFFHVVLYRFLFOR

Eseguire le seguenti operazioni:

k(i+3) = k(i+3) XOR 7>k(i+4) XOR k(i+2) XOR C@


k(i+2) = k(i+2) XOR 7>k(i+3) XOR k(i+1) XOR C@
k(i+1) = k(i+1) XOR 7>K(i+2) XOR k(i) XOR C@
k(i) = k(i) XOR 7>k(i+1) XOR k(i-1) XOR C@

dove i = 13 per i cicli 1, 5, 9, 13


9 per i cicli 2, 6, 10, 14
5 per i cicli 3, 7, 11, 15
1 per i cicli 4, 8, 12, 16.

Nei casi in cui la suddetta formula dia suffissi k fuori dall’intervallo 1-16, si deve considerare il valore ottenuto
da k facendone il modulo 16. Es. Se k = 17, allora k = k mod 16 = 1, se k=16, allora k = k mod 16 = 0).

Il valore della costante C dipende dal numero di ciclo. Per i cicli 1, 2, …, 15, 16 tale costante ha valori
rispettivamente pari a 0x0F, 0x0E, …, 0x01, 0x00.

141
7$%(//(

Tabella 1:
02AH 0E1H 00BH 013H 03EH 06EH 032H 048H
0D3H 031H 008H 08CH 08FH 095H 0BDH 0D0H
0E4H 06DH 050H 081H 020H 030H 0BBH 075H
0F5H 0D4H 07CH 087H 02CH 04EH 0E8H 0F4H
0BEH 024H 09EH 04DH 080H 037H 0D2H 05FH
0DBH 004H 07AH 03FH 014H 072H 067H 02DH
0CDH 015H 0A6H 04CH 02EH 03BH 00CH 041H
062H 0FAH 0EEH 083H 01EH 0A2H 001H 00EH
07FH 059H 0C9H 0B9H 0C4H 09DH 09BH 01BH
09CH 0CAH 0AFH 03CH 073H 01AH 065H 0B1H
076H 084H 039H 098H 0E9H 053H 094H 0BAH
01DH 029H 0CFH 0B4H 00DH 005H 07DH 0D1H
0D7H 00AH 0A0H 05CH 091H 071H 092H 088H
0ABH 093H 011H 08AH 0D6H 05AH 077H 0B5H
0C3H 019H 0C1H 0C7H 08EH 0F9H 0ECH 035H
04BH 0CCH 0D9H 04AH 018H 023H 09FH 052H
0DDH 0E3H 0ADH 07BH 047H 097H 060H 010H
043H 0EFH 007H 0A5H 049H 0C6H 0B3H 055H
028H 051H 05DH 064H 066H 0FCH 044H 042H
0BCH 026H 009H 074H 06FH 0F7H 06BH 04FH
02FH 0F0H 0EAH 0B8H 0AEH 0F3H 063H 06AH
056H 0B2H 002H 0D8H 034H 0A4H 000H 0E6H
058H 0EBH 0A3H 082H 085H 045H 0E0H 089H
07EH 0FDH 0F2H 03AH 036H 057H 0FFH 006H
069H 054H 079H 09AH 0B6H 06CH 0DCH 08BH
0A7H 01FH 090H 003H 017H 01CH 0EDH 0D5H
0AAH 05EH 0FEH 0DAH 078H 0B0H 0BFH 012H
0A8H 022H 021H 03DH 0C2H 0C0H 0B7H 0A9H
0E7H 033H 0FBH 0F1H 070H 0E5H 017H 096H
0F8H 08DH 046H 0A1H 086H 0E2H 040H 038H
0F6H 068H 025H 016H 0ACH 061H 027H 0CBH
05BH 0C8H 02BH 00FH 099H 0DEH 0CEH 0C5H

142
Tabella 2:

0BFH 011H 06DH 0FAH 026H 07FH 0F3H 0C8H


09EH 0DDH 03FH 016H 097H 0BDH 008H 080H
051H 042H 093H 049H 05BH 064H 09BH 025H
0F5H 00FH 024H 034H 044H 0B8H 0EEH 02EH
0DAH 08FH 031H 0CCH 0C0H 05EH 08AH 061H
0A1H 063H 0C7H 0B2H 058H 009H 04DH 046H
081H 082H 068H 04BH 0F6H 0BCH 09DH 003H
0ACH 091H 0E8H 03DH 094H 037H 0A0H 0BBH
0CEH 0EBH 098H 0D8H 038H 056H 0E9H 06BH
028H 0FDH 084H 0C6H 0CDH 05FH 06EH 0B6H
032H 0F7H 00EH 0F1H 0F8H 054H 0C1H 053H
0F0H 0A7H 095H 07BH 019H 021H 023H 07DH
0E1H 0A9H 075H 03EH 0D6H 0EDH 08EH 06FH
0DBH 0B7H 007H 041H 005H 077H 0B4H 02DH
045H 0DFH 029H 022H 043H 089H 083H 0FCH
0D5H 0A4H 088H 0D1H 0F4H 055H 04FH 078H
062H 01EH 01DH 0B9H 0E0H 02FH 001H 013H
015H 0E6H 017H 06AH 08DH 00CH 096H 07EH
086H 027H 0A6H 00DH 0B5H 073H 071H 0AAH
036H 0D0H 006H 066H 0DCH 0B1H 02AH 05AH
072H 0BEH 03AH 0C5H 040H 065H 01BH 002H
010H 09FH 03BH 0F9H 02BH 018H 05CH 0D7H
012H 047H 0EFH 01AH 087H 0D2H 0C2H 08BH
099H 09CH 0D3H 057H 0E4H 076H 067H 0CAH
03CH 0FBH 090H 020H 014H 048H 0C9H 060H
0B0H 070H 04EH 0A2H 0ADH 035H 0EAH 0C4H
074H 0CBH 039H 0DEH 0E7H 0D4H 0A3H 0A5H
004H 092H 08CH 0D9H 07CH 01CH 07AH 0A8H
052H 079H 0F2H 033H 0BAH 01FH 030H 09AH
000H 050H 04CH 0FFH 0E5H 0CFH 059H 0C3H
0E3H 00AH 085H 0B3H 0AEH 0ECH 00BH 0FEH
0E2H 0ABH 04AH 0AFH 069H 06CH 02CH 05DH

143
$/*25,702',6(*1$785$',0(66$**,2

Sembra che sia per i messaggi ECM che per quelli EMM venga utilizzato solo un algoritmo di segnatura.

La procedura consiste nei seguenti passi:

- Inizializzazione di un buffer hash di 8-byte


- XOR tra gli 8 byte di dati di ingresso ed il contenuto del buffer
- Esecuzione dell’algoritmo di segnatura
- Ripetizione degli ultimi 2 passi fino all’esaurimento dei byte di dati in ingresso da processare
- Comparazione del risultato con gli 8-byte di dati di segnatura.

Essendo l’algoritmo di segnatura l’inverso dell’algoritmo di decriptaggio (come per Eurocrypt S), non è
necessario descriverlo in tutti i suoi dettagli (come invece è stato fatto per l’algoritmo di decriptaggio).

L’inizializzazione del buffer hash è basata sul valore dei bit 7-5 più significativi del parametro P1, come
segue:

- P1(7-5) = 1: ultimi 6 byte della risposta C1 0E 00 00 08 + 00 00

- P1(7-5) = 2: valore UA della Smartcard

- P1(7-5) = 3: valore SA della Smartcard (vedi oltre)

- P1(7-5) = qualsiasi altro valore: 00 00 00 00 00 00 00 00.

L’algoritmo consiste in 16 cicli. Ogni ciclo opera solo su 4 byte di chiave e 4 byte di dati. Detti k1, k2, …, k16
i byte della chiave (ottenuti dopo la fase di preparazione della chiave) e detti i byte dei dati d1,d2,…,d8 si ha:

1XPHUR&LFOR %\WHGLFKLDYH %\WHGLGDWL

 k1, k2, k3, k4 d5, d6, d7, d8


 K5, k6, k7, k8 d5, d6, d7, d8
 K9, k10, k11, k12 d5, d6, d7, d8
 k13, k14, k15, k16 d5, d6, d7, d8

Un ciclo consiste in:

- Processare i byte di chiave per calcolare i 4 nuovi byte di chiave da utilizzare nel ciclo seguente
- Fare lo XOR dei byte di chiave con quelli di dati:
- Eseguire la Funzione Nucleo (core function) sui byte di dati per calcolare i 4 nuovi byte di dati
- Fare lo XOR di questi valori con gli altri 4 byte dati per calcolare i 4 nuovi valori per i byte di
dati d5-d8 per il ciclo successivo.

L’ ordine delle operazioni è lievemente diverso rispetto a quello di decriptaggio dal momento che il processo
è inverso a quest’ultimo

È simile al ‘left shifts DES function’ e ‘DES function, right shift’ di Eurocrypt M e S.

3ULPRSDVVR±2WWHQHUHQXRYLE\WHGLFKLDYHSHULOVXFFHVVLYRFLFOR

144
Eseguire le seguenti operazioni:

k(i) = k(i) XOR 7>k(i+1) XOR k(i-1) XOR C@


k(i+1) = k(i+1) XOR 7>K(i+2) XOR k(i) XOR C@
k(i+2) = k(i+2) XOR 7>k(i+3) XOR k(i+1) XOR C@
k(i+3) = k(i+3) XOR 7>k(i+4) XOR k(i+2) XOR C@

dove i = 1 per i cicli 1, 5, 9, 13


5 per i cicli 2, 6, 10, 14
9 per i cicli 3, 7, 11, 15
13 per i cicli 4, 8, 12, 16.

Nei casi in cui la suddetta formula dia suffissi k fuori dall’intervallo 1-16, si deve considerare il valore ottenuto
da k facendone il modulo 16. Es. Se k = 17, allora k = k mod 16 = 1, se k=16, allora k = k mod 16 = 0).

Il valore della costante C dipende dal numero di ciclo. Per i cicli 1, 2, …, 15, 16 tale costante ha valori
rispettivamente pari a 0x00, 0x01, …, 0x0E, 0x0F.

Questo annulla (unwinding) l’effetto della manipolazione della chiave circolare nell’algoritmo di decriptaggio.

6HFRQGRSDVVR;25GHLE\WHGLFKLDYHFRQTXHOOLGLGDWL

Questo è semplice:

d5 = K(i) XOR d5
d6 = K(i+1) XOR d6
d7 = K(i+2) XOR d7
d8 = K(i+3) XOR d8

dove i = 1 per i cicli 1, 5, 9, 13


5 per i cicli 2, 6, 10, 14
9 per i cicli 3, 7, 11, 15
13 per i cicli 4, 8, 12, 16.

L’inversione dei suffissi annulla (unwinds) l’interazione dei byte di chiave con quelli di dati, confrontati
nell’algoritmo di decriptaggio.

7HU]RSDVVR±)XQ]LRQH1XFOHR

Prima eseguire 4 accessi alla Tabella 1:

d5 = 7>d5@, d6 = 7>d6@, d7 = 7>d7@, d8 = 7>d8@

Successivamente utilizzare la Tabella 2 (vedi oltre). Il termine '~' significa che scambio di posto del mezzo
byte meno significativo con quello più significativo (es. 11100010 = E2 ⇒ ~E2 = 2E = 00101110):

d5 = d8 XOR d5
d7 = 7>(~d8) + d7@

d8 = d7 XOR d8
d6 = 7> (~d7) + d6@

d7 = d6 XOR d7

145
d5 = 7> (~d6) + d5@

Ora si deve utilizzare la Tabella 1 come segue:

d6 = d5 XOR d6
d8 = 7>(~d5) + d8@

d5 = d8 XOR d5
d7 = 7>(~d8) + d7@

d8 = d7 XOR d8
d6 = 7>(~d7) + d6@

Infine eseguire:

d7 = d6 XOR d7
d6 = d5 XOR d6.

Se in qualche addizione il valore risultante è maggiore di 0xFF, sottrarre il valore 0x0100 prima di accedere
alle tabelle.

Questo passo è identico a quello relativo all Funzione Nucleo di decriptaggio, ma chiaramente opera in
direzione opposta.

4XDUWRSDVVR±&DOFRODUHLQXRYLYDORULGHLE\WHGLGDWLSHULOSURVLPRFLFOR

Questi si ottengono dalla Tabella 2 procedendo come segue:

d1 = 7>d6@ XOR d1
d2 = 7>d8@ XOR d2
d3 = 7>d5@ XOR d3
d4 = 7>d7@ XOR d4

Prima di utilizzare i byte di dati d1, …, d8 occorre scambiarli come segue :

d1 ∆ d5
d2 ∆ d6
d3 ∆ d7
d4 ∆ d8

NOTA: al termine del 16° ciclo però questo scambio NON deve essere fatto e i byte d1, …, d8
rappresentano la segnatura completa che dovrebbe coincidere agli 8 byte che seguenti al parametro 0x82.

Sono consapevole che un’occhiata a tutto questomateriale è abbastanza scoraggiante, ma se studierete il


materiale attraverso un esempio, troverete il coraggio di andare avanti.

Per ricapitolare, possiamo dire che la parola di controllo è il Decriptaggio Mediaguard, viceversa il
messaggio di segnatura è il Criptaggio Mediaguard.
Le chiavi sono memorizzate per l’uso diretto con il criptaggio Mediaguard e ad ogni ciclo viene generata una
chiave circolare per quel ciclo.

Possiamo quindi dire che l’algoritmo di Criptaggio opera sulle chiavi circolari R1, R2, …, R16.

L’algoritmo di decryptaggio è l’inverso di quello di Criptaggio; il fine della fase di preparazione della chiave è
quello di generare R16. Ad ogni ciclo di Decriptaggio viene generata la chiave circolare per il successivo
ciclo.
Le chiavi circolari per il decriptaggio sono R16, R15, …, R1. L’intera procedura assicura che il Decryptaggio
è esattamente il procedimento inverso del Criptaggio.

146
Per inciso, se qualcuno riconosce l’algoritmo ed il suo nome, forse avrà la gentilezza di farmelo sapere.

23(5$=,21,&21752//$7(&213,1

Il sistema Mediaguard protegge alcune transazioni con un codice PIN per accertasi che queste siano
effettuate dal solo abbonato. Il comando C1 30 gestisce le attività controllate dal PIN.

Sono possibili tre variazioni:

 C1 30 00 00 10

viene inviato dal CAM a seguito del dialogo con l’abbonato che vuole creare o modificare il proprio [Link]
Smartcard risponde con '30' e riceve

00 00 00 00 00 00 xx xx 00 00 00 00 00 00 yy yy
90 00

dove xx xx e yy yy sono rispettivamente il vecchi ed il nuovo PIN. Se il vecchio PIN non è corretto la
Smartcard risponde con 90 10.

 Il CAM invia

C1 30 00 01 09

quando l’abbonato vuole cambiare la Reference Maturity Rating. Questa volta la Smartcard riceve

00 00 00 00 00 00 xx xx yy
90 00

dove xx xx è il PIN e yy è la nuova Reference Maturity Rating (codificata).

 La CAM invia

C1 30 00 02 09

quando l’abbonato vuole ordinare qualcosa, es. un programma PPV (Pay-per-View) o dei gettoni per un uso
futuro. La Smartcard, in questo caso, riceve

00 00 00 00 00 00 xx xx yy
90 00

dove xx xx è il PIN e yy è un codice di autorizzazione. Questo codice di autorizzazione permette


alla Smartcard di processare una sottosequenza di transazione di ordine.

*(67,21('(,',5,77,

I messaggi di gestione dei diritti sono implementati principalmente con il comando C1 40.
I vantaggi offerti sono diversi e potenti, con maggiore flessibilità che in Eurocrypt. Comunque alcuni concetti
rimangono; si può effettuare l’aggiornamento di una singola Smartcard, di un gruppo di schede o di tutte,
proprio come in Eurocrypt.
Ogni Smartcard appartiene ad un SA (i primi tre byte del UA) con 256 componenti di un SA, come in
Eurocrypt M;

a SA bitmap of subscriber activity is also used to check that a shared update is for an individual subscriber,
using a CUSTWP byte which is the last byte of the UA. The SA bitmap is conveyed in the C1 40 datastream

147
however, which accounts for why these strings are much longer than Eurocrypt. Remember in the latter, the
SA bitmap is in a separate command (CA F0).

Complessivamente, il comando C1 40 supporta 33 parametri il che permette un’ampia varità di


aggiornamenti, dalla singola chiave a tutti i providers (canali televisivi). Rispetto asd Eurocrypt ci sono molte
più opzioni per cancellare chiavi, pacchetti, providers, eventi PPV e sottoscrizioni which must e questo rende
molto difficile riattivare una Smartcard scaduta.

Mi focalizzerò sui comandi più comuni ed interessanti.

Osservando un tipico comando C1 40, dovrebbe essere

C1 40 19 82 35

E poi la Smartcard dovrebbe rispondere con ‘40’ ed il CAM a sua volta inviare

96 E8 5D 3B 97 26 6E B1
82 0F 87 17 D3 5C 87 47
34 5E 39 79 2F 8E 84 4C
16 E2 3A 6A A3 40 30 C9
05 5F BB 01 56 11 7C 4F
BF 1F C3 32 21 BD 13 D9
60 53 25 CB 9E
90 00.

Non ci sono modelli distinguibili nel pacchetto poichè le informazioni sono criptate utilizzando la chiave
Primaria 02 (e forse la chiave Secondaria 02) per il provider 09. Questa tecnica è chiamata Superencryption
e significa che i dati (come le chiavi operative) sono criptati ancora prima della trasmissione.
Superencryption viene utilizzato quando il bit più significativo del parametro P2 nel comando C1 40 è posto
ad 1, ed è usato per rendere duro a chiunque capire cosa significano i dati, sebbene hackers esperti
sapranno che ciò non significa necessariamente rendere l’impresa più difficile.

Così la Smartcard preleva ogni blocco di 8 byte e li decripta usando l’algoritmo di decriptaggio Mediaguard
(lasciando solo gli ultimi 5 byte) per ottenere un pacchetto che abbia la struttura usuale. I tipici parametri
ottenuti in questo modo dovrebbero essere:

0x21, 0x22 xx xx sottoscrizione

0x30, 0x32 xx xx xx dettagli PPV


0x42, 0x43 xx xx xx xx di varia sorta

0x41 xx xx xx xx UA
0x80 (8 bytes) Bitmap di pacchetto per il provider
0x90 (9 bytes) Chiave Primaria
0x91 (9 bytes) Chiave Secondaria
0xd0 (16 bytes) Etichetta del provider
0xf0 (32 bytes) Bitmap SA

e in ultimo

0x82 (8 bytes) Segnatura messaggio.

In più, con C1 40, è possibile usare i parametri 0xD1 (due parole di controllo criptate) e 0x87 (un parola di
controllo criptata). Esistono altri parametri come quello che elimina un PIN, cancella chiavi, eventi PPV ed
altro.

Le due chiavi dei parametri 0x90 e 0x91 contengono un indice di chiave e 8 byte che sono la chiave criptata,
che viene decriptata usando l’algoritmo di decriptaggio Mediaguard prima descritto.

148
In base ai valori dei 3 bit più significativi del parametro P1, come precedentemente descritto, gli
aggiornamenti possono essere indirizzati a tutti, un gruppo, o un singolo abbonato.
Per ognuno dei casi il buffer hash di segnatura è inizializzato con un diferente valore. Il messaggio di
segnatura per il comando C1 40 è basato sull’algoritmo di cryptaggio di Mediaguard che è stato
precedentemente descritto.

Questo completa la descrizione delle funzionalità mainstream di Mediaguard.

$/75(,1)250$=,21,

È possibile vedere quali chiavi sono memorizzate in una scheda usando il comando C1 34 con i parametri
seguiti da C1 32 P1 00 12 ripetutamente, dove P1 è il numero di provider. Comunque per dare un senso ai
dati risultanti è necessario conoscere qualcosa riguardo alla struttura del record interno e i dati di chiave
sono forniti come 8 byte 0xFF in ogni modo.

È possibile inviare un diverso comando ATR alla scheda per cambiare la sua modalità di funzionamento.
In questa modalità il comando C1 44 (ed alcuni altri) può essere utilizzato. Questi comandi permettono modi
alternativi di fare ricerche con alcune particolari codifiche. Non mi è ancora chiaro se questa modalità della
scheda sia prevista per permettere particolari operazioni ECM o per scopi di validazione, personalizzazione
e testing.
Infine, un maggiore lavoro è necessario per comprendere le esatte minuzie della PPV; quando questo sarà
chiaro, aggiornerò questo documento.

Un nota finale, se qualcuno pubblica qualche software o informazioni su siti web come risultato della lettura
di questo documento, dovrebbe farmi la cortesia di menzionare questo documento come loro riferimento ed
inviarmi, se possibile, una copia dei loro programmi.

Enjoy.

John MacDonald
September 1999

Traduzione ed integrazione di informazioni by Goopher .


Nota: Questa è una prima traduzione (personalizzata da alcune precisazioni) e sicuramente non è priva di
errori, se qualche informazione fosse inesatta o ci fossero errori di altro genere, abbiate la cortesia di
informarmi. Altro materiale è in …crunch crunch … appena disponibile lo metterò a disposizione. Infine, sto
preparando un programma per l’analisi dei dialoghi SECA CAM/smartcard e l’estrapolazione delle keys.
In questo documento sono presenti anche alcune informazioni su SECA scritte da MacDouf e tradotte da
kenzo e altri con cui mi scuso di non aver chiesto autorizzazione all’uso. Vi consiglio di confrontare le
informazioni qui contenute con il testo originale e con il bel lavoro di MacDouf molto ben tradotto.

ATTENZIONE: Goopher (come John Mcdonald) non si assume alcuna responsabilità di usi illegali di questa
documentazione che è solo a scopo didattico e non al fine di infrangere la legge, essendo illegale la visione
e/o ascolto di programmi televisivi non autorizzati da legale abbonamento al relativo fornitore di servizio, né
si assume responsabilità per folli tentativi da cui risultino danneggiamenti a cose, persone, pianeti etc.

ALOA!

Goopher.

149
5LDVVXQWRGHLFRPDQGL

'LU &RPDQGR

∅ Segnale di Reset
⊕ ATR
∅ C1 34 04 00 03
⊕ 34
∅ 04 00 01
∅ C1 32 00
⊕ 32 B2 GDWDE\WHV! 04 90 00
∅ C1 0E 00 00 08
⊕ 0E 00 25 00 00 8$!90 00
∅ C1 16 00 00 07
⊕ 16 00 00 (QWLW\%LWPDS!E\WHV!FF 90 00
∅ C1 12 00 00 18
⊕ 16 00 00 (QWLW\%LWPDS!E\WHV!FF 90 00
∅ C1 12 00 00 18
12
00 00
⊕ 53 45 43 41 20 20 20 20 20 20 20 20 20 20 20 20
00 00 00 00 00 00
90 00
∅ C1 12 01 00 18
12
00 1C 6PDUW
&$0
28 49 29 4d 65 64 69 61 73 65 74 20 20 20 20 20
⊕ <UA>
&DUG

29 9F
90 00
∅ C1 34 00 00 03
⊕ 34
∅ 00 00 00
∅ C1 32 P1 00 20
32 83 00 00 00 00 00 00 00 07 04
⊕ FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF 90 00
C1 3C <ID provider> <Numero chiave> 27
⊕ 3C
 00 00 19 07 CF 00 04
 12 89
 01
∅ ' FA 55 DA FE 46 B4 E0 95 62 0D 37 9F 66 59 2A 04
 92 A9 DB E9 C2 9C F4 9D
90 00
⊕ 90 00 oppure 9x xx
∅ C1 3A 00 00 10
⊕ 3A xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx
90 00

150
9DULH

Di seguito riportiamo alcune tabelle di sicura utilita’ :

Tabella EEPROM IRDETO ACS 1.2

Tabella EEPROM acs1.2 ver.02

Indirizzo Byte Basso Byte Alto


00 D-Box Pin
01 Parental Pin
02 Homeshop Pin
03
04
05
06
07
08
09
0a
0b
0c Country Code
0d Country Code Country Code
0e Country Code Country Code
0f Country Code Country Code
10 Country Code Country Code
11 Country Code Country Code
12 Country Code Country Code
13 Country Code Country Code
14 Country Code Country Code
15 Country Code Country Code
16 Country Code
17
18
19
1a ProvID 00 ProvID 00
1b ProvID 00 00
1c 00 00
1d 00 00
1e 00 Date Pro00
1f Date Prov00 00 Secondo Byte:Normal 00 oppure 31
20 00 00
21 00 00
22 00 00
23 00 00
24 00 00
25 00 Mk Prov00
26 Mk Prov00 Mk Prov00
27 Mk Prov00 Mk Prov00
28 Mk Prov00 Mk Prov00
29 Mk Prov00
2a
2b
2c
2d
2e
2f
30
31
32
33
34 11 ProvID 10
35 ProvID 10 ProvID 10

151
36 00 00
37 00 00
38 00 00
39 Date Prov10 Date Prov10
3a 00 00 puo’ anche essere 31 00
3b 00 00
3c 00 00
3d 00 00
3e 00 00
3f 00 00
40 Mk Prov10 Mk Prov10
41 Mk Prov10 Mk Prov10
42 Mk Prov10 Mk Prov10
43 Mk Prov10 Mk Prov10
44
45
46
47
48
49
4a
4b
4c
4d
4e
4f
50
51
52
53
54
55
56
57
58
59
5a
5b
5c
5d
5e
5f
60
61
62
63
64
65
66
67
68
69
6a
6b
6c
6d
6e
6f
70
71
72 00 oppure 01 Key02/03 Prov00 00 rappresenta la chiave pari
73 Key02/03 Prov00 Key02/03 Prov00
74 Key02/03 Prov00 Key02/03 Prov00
75 Key02/03 Prov00 Key02/03 Prov00
76 Key02/03 Prov00 00 oppure FF 00 rappresenta la chiave pari
77 00 oppure 01 Key04/05 Prov00 01 rappresenta la chiave dispari
78 Key04/05 Prov00 Key04/05 Prov00
79 Key04/05 Prov00 Key04/05 Prov00
7a Key04/05 Prov00 Key04/05 Prov00
7b Key04/05 Prov00 00 oppure FF FF rappresenta la chiave dispari
7c 00 oppure 01 Key06/07 Prov00

152
7d Key06/07 Prov00 Key06/07 Prov00
7e Key06/07 Prov00 Key06/07 Prov00
7f Key06/07 Prov00 Key06/07 Prov00
80 Key06/07 Prov00 00 oppure FF
81 00 oppure 01 Key08/09 Prov00
82 Key08/09 Prov00 Key08/09 Prov00
83 Key08/09 Prov00 Key08/09 Prov00
84 Key08/09 Prov00 Key08/09 Prov00
85 Key08/09 Prov00 00 oppure FF
86 00 oppure 01 Key0a/0b Prov00
87 Key0a/0b Prov00 Key0a/0b Prov00
88 Key0a/0b Prov00 Key0a/0b Prov00
89 Key0a/0b Prov00 Key0a/0b Prov00
8a Key0a/0b Prov00 00 oppure FF
8b 00 oppure 01 Key0c/0d Prov00
8c Key0c/0d Prov00 Key0c/0d Prov00
8d Key0c/0d Prov00 Key0c/0d Prov00
8e Key0c/0d Prov00 Key0c/0d Prov00
8f Key0c/0d Prov00 00 oppure FF
90 00 oppure 01 Key0e/0f Prov00
91 Key0e/0f Prov00 Key0e/0f Prov00
92 Key0e/0f Prov00 Key0e/0f Prov00
93 Key0e/0f Prov00 Key0e/0f Prov00
94 Key0e/0f Prov00 00 oppure FF
95 00 oppure 01 Key10/11 Prov00
96 Key10/11 Prov00 Key10/11 Prov00
97 Key10/11 Prov00 Key10/11 Prov00
98 Key10/11 Prov00 Key10/11 Prov00
99 Key10/11 Prov00 00 oppure FF
9a 00 oppure 01 Key02/03 Prov10
9b Key02/03 Prov10 Key02/03 Prov10
9c Key02/03 Prov10 Key02/03 Prov10
9d Key02/03 Prov10 Key02/03 Prov10
9e Key02/03 Prov10 00 oppure FF
9f 00 oppure 01 Key04/05 Prov10
a0 Key04/05 Prov10 Key04/05 Prov10
a1 Key04/05 Prov10 Key04/05 Prov10
a2 Key04/05 Prov10 Key04/05 Prov10
a3 Key04/05 Prov10 00 oppure FF
a4 00 oppure 01 Key06/07 Prov10
a5 Key06/07 Prov10 Key06/07 Prov10
a6 Key06/07 Prov10 Key06/07 Prov10
a7 Key06/07 Prov10 Key06/07 Prov10
a8 Key06/07 Prov10 00 oppure FF
a9 00 oppure 01 Key08/09 Prov10
aa Key08/09 Prov10 Key08/09 Prov10
ab Key08/09 Prov10 Key08/09 Prov10
ac Key08/09 Prov10 Key08/09 Prov10
ad Key08/09 Prov10 00 oppure FF
ae 00 oppure 01 Key0a/0b Prov10
af Key0a/0b Prov10 Key0a/0b Prov10
b0 Key0a/0b Prov10 Key0a/0b Prov10
b1 Key0a/0b Prov10 Key0a/0b Prov10
b2 Key0a/0b Prov10 00 oppure FF
b3 00 oppure 01 Key0c/0d Prov10
b4 Key0c/0d Prov10 Key0c/0d Prov10
b5 Key0c/0d Prov10 Key0c/0d Prov10
b6 Key0c/0d Prov10 Key0c/0d Prov10
b7 Key0c/0d Prov10 00 oppure FF
b8 00 oppure 01 Key0e/0f Prov10
b9 Key0e/0f Prov10 Key0e/0f Prov10
ba Key0e/0f Prov10 Key0e/0f Prov10
bb Key0e/0f Prov10 Key0e/0f Prov10
bc Key0e/0f Prov10 00 oppure FF
bd 00 oppure 01 Key10/11 Prov10
be Key10/11 Prov10 Key10/11 Prov10
bf Key10/11 Prov10 Key10/11 Prov10
c0 Key10/11 Prov10 Key10/11 Prov10
c1 Key10/11 Prov10 00 oppure FF
c2 00 Channel Ids 00, Channel ID
c3 Channel Ids Channel Ids Channel ID, Date

153
c4 Channel Ids Channel Ids Date, Timer
c5 Channel Ids Channel Ids Timer, prossimo ChID
c6 Channel Ids Channel Ids
c7 Channel Ids Channel Ids
c8 Channel Ids Channel Ids
c9 Channel Ids Channel Ids
ca Channel Ids Channel Ids
cb Channel Ids Channel Ids
cc Channel Ids Channel Ids
cd Channel Ids Channel Ids
ce Channel Ids Channel Ids
cf Channel Ids Channel Ids
d0 Channel Ids Channel Ids
d1 Channel Ids Channel Ids
d2 Channel Ids Channel Ids
d3 Channel Ids Channel Ids
d4 Channel Ids Channel Ids
d5 Channel Ids Channel Ids
d6 Channel Ids Channel Ids
d7 Channel Ids Channel Ids
d8 Channel Ids Channel Ids
d9 Channel Ids Channel Ids
da Channel Ids Channel Ids
db Channel Ids Channel Ids
dc Channel Ids Channel Ids
dd Channel Ids Channel Ids
de Channel Ids Channel Ids
df Channel Ids Channel Ids
e0 Channel Ids Channel Ids
e1 Channel Ids Channel Ids
e2 Channel Ids Channel Ids
e3 Channel Ids Channel Ids
e4 Channel Ids Channel Ids
e5 Channel Ids Channel Ids
e6 Channel Ids Channel Ids
e7 Channel Ids Channel Ids
e8 Channel Ids Channel Ids
e9 Channel Ids Channel Ids
ea Channel Ids Channel Ids
eb Channel Ids Channel Ids
ec Channel Ids Channel Ids
ed Channel Ids Channel Ids
ee Channel Ids Channel Ids
ef Channel Ids Channel Ids
f0 Channel Ids Channel Ids
f1 Channel Ids Channel Ids
f2 Channel Ids Channel Ids
f3 Channel Ids Channel Ids
f4 Channel Ids Channel Ids
f5 Channel Ids Channel Ids
f6 Channel Ids Channel Ids
f7 Channel Ids Channel Ids
f8 Channel Ids Channel Ids
f9 Channel Ids Channel Ids
fa Channel Ids Channel Ids
fb Channel Ids Channel Ids
fc Channel Ids Channel Ids
fd Channel Ids Channel Ids
fe Channel Ids Channel Ids
ff Channel Ids Channel Ids

154
Tabella EEPROM IRDETO ACS 1.2 VS 1.4

ACS1.2 | ACS1.4-> Key


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

Provider 00
72-76 | 9b-9f -> Key 02/03-Prov00
77-7b | a0-a4 -> Key 04/05-Prov00
7c-80 | a5-a9 -> Key 06/07-Prov00
81-85 | aa-ae -> Key 08/09-Prov00
86-8a | af-b3 -> Key 0A/0B-Prov00
8b-8f | b4-b8 -> Key 0C/0D-Prov00
90-94 | b9-bd -> Key 0E/0F-Prov00
95-99 | be-c2 -> Key 10/11-Prov00
Provider 10
9a-9e | c3-c7 -> Key 02/03-Prov10
9f-a3 | c8-cc -> Key 04/04-Prov10
a4-a8 | cd-d1 -> Key 06/07-Prov10
a9-ad | d2-d6 -> Key 08/09-Prov10
ae-b2 | d7-db -> Key 0A/0B-Prov10
b3-b7 | dc-e0 -> Key 0C/0D-Prov10
b8-bc | e1-e5 -> Key 0E/0F-Prov10
bd-c1 | e6-ea -> Key 10/11-Prov10

155
Tabella EEPROM IRDETO ACS 1.6

00 Parental PIN
01 IPPV PIN?
02 Homeshop PIN
03 General PIN?
[...]

0c-16 Country Code


[...]
5d 00 ProvID00
5e ProvID00 ProvID00
5f 00 00
60 00 00
61 00 00
62 Date_Prov00 Date_Prov00
63 00 00
64 00 00
65 00 00
66 00 00
67 00 00
68 00 00
69 MK_Prov00 MK_Prov00
6a MK_Prov00 MK_Prov00
6b MK_Prov00 MK_Prov00
6c MK_Prov00 MK_Prov00

[...]
7c 11 ProvID10
7d ProvID10 ProvID10
7e 00 00
7f 00 00
80 00 00
81 Date_Prov10 Date_Prov10
82 00 00
83 00 00
84 00 00
85 00 00
86 00 00
87 00 00
88 MK_Prov10 MK_Prov10
89 MK_Prov10 MK_Prov10
8a MK_Prov10 MK_Prov10
8b MK_Prov10 MK_Prov10
[...]
9b 00 o 01 00 o FF
9c Key02/03 Prov00 Key02/03 Prov00
9d Key02/03 Prov00 Key02/03 Prov00
9e Key02/03 Prov00 Key02/03 Prov00
9f Key02/03 Prov00 Key02/03 Prov00
a0 00 o 01 00 o FF
a1 Key04/05 Prov00 Key04/05 Prov00
a2 Key04/05 Prov00 Key04/05 Prov00
a3 Key04/05 Prov00 Key04/05 Prov00
a4 Key04/05 Prov00 Key04/05 Prov00
a5 00 o 01 00 o FF
a6 Key06/07 Prov00 Key06/07 Prov00
a7 Key06/07 Prov00 Key06/07 Prov00
a8 Key06/07 Prov00 Key06/07 Prov00
a9 Key06/07 Prov00 Key06/07 Prov00
aa 00 o 01 00 o FF
ab Key08/09 Prov00 Key08/09 Prov00

156
ac Key08/09 Prov00 Key08/09 Prov00
ad Key08/09 Prov00 Key08/09 Prov00
ae Key08/09 Prov00 Key08/09 Prov00
af 00 o 01 00 o FF
b0 Key0a/0b Prov00 Key0a/0b Prov00
b1 Key0a/0b Prov00 Key0a/0b Prov00
b2 Key0a/0b Prov00 Key0a/0b Prov00
b3 Key0a/0b Prov00 Key0a/0b Prov00
b4 00 o 01 00 o FF
b5 Key0c/0d Prov00 Key0c/0d Prov00
b6 Key0c/0d Prov00 Key0c/0d Prov00
b7 Key0c/0d Prov00 Key0c/0d Prov00
b8 Key0c/0d Prov00 Key0c/0d Prov00
b9 00 o 01 00 o FF
ba Key0e/0f Prov00 Key0e/0f Prov00
bb Key0e/0f Prov00 Key0e/0f Prov00
bc Key0e/0f Prov00 Key0e/0f Prov00
bd Key0e/0f Prov00 Key0e/0f Prov00
be 00 o 01 00 o FF
bf Key10/11 Prov00 Key10/11 Prov00
c0 Key10/11 Prov00 Key10/11 Prov00
c1 Key10/11 Prov00 Key10/11 Prov00
c2 Key10/11 Prov00 Key10/11 Prov00
c3 00 o 01 00 o FF
c4 Key02/03 Prov10 Key02/03 Prov10
c5 Key02/03 Prov10 Key02/03 Prov10
c6 Key02/03 Prov10 Key02/03 Prov10
c7 Key02/03 Prov10 Key02/03 Prov10
c8 00 o 01 00 o FF
c9 Key04/05 Prov10 Key04/05 Prov10
ca Key04/05 Prov10 Key04/05 Prov10
cb Key04/05 Prov10 Key04/05 Prov10
cc Key04/05 Prov10 Key04/05 Prov10
cd 00 o 01 00 o FF
ce Key06/07 Prov10 Key06/07 Prov10
cf Key06/07 Prov10 Key06/07 Prov10
d0 Key06/07 Prov10 Key06/07 Prov10
d1 Key06/07 Prov10 Key06/07 Prov10
d2 00 o 01 00 o FF
d3 Key08/09 Prov10 Key08/09 Prov10
d4 Key08/09 Prov10 Key08/09 Prov10
d5 Key08/09 Prov10 Key08/09 Prov10
d6 Key08/09 Prov10 Key08/09 Prov10
d7 00 o 01 00 o FF
d8 Key0a/0b Prov10 Key0a/0b Prov10
d9 Key0a/0b Prov10 Key0a/0b Prov10
da Key0a/0b Prov10 Key0a/0b Prov10
db Key0a/0b Prov10 Key0a/0b Prov10
dc 00 o 01 00 o FF
dd Key0c/0d Prov10 Key0c/0d Prov10
de Key0c/0d Prov10 Key0c/0d Prov10
df Key0c/0d Prov10 Key0c/0d Prov10
e0 Key0c/0d Prov10 Key0c/0d Prov10
e1 00 o 01 00 o FF
e2 Key0e/0f Prov10 Key0e/0f Prov10
e3 Key0e/0f Prov10 Key0e/0f Prov10
e4 Key0e/0f Prov10 Key0e/0f Prov10
e5 Key0e/0f Prov10 Key0e/0f Prov10
e6 00 o 01 00 o FF
e7 Key10/11 Prov10 Key10/11 Prov10
e8 Key10/11 Prov10 Key10/11 Prov10
e9 Key10/11 Prov10 Key10/11 Prov10
ea Key10/11 Prov10 Key10/11 Prov10
eb 00|Channel_Ids
ec Channel_Ids Channel_Ids
ed|Channel_Ids Channel_Ids
ee Channel_Ids Channel_Ids
ef Channel_Ids Channel_Ids
f0 Channel_Ids Channel_Ids
f1 Channel_Ids Channel_Ids
f2 Channel_Ids Channel_Ids

157
f3 Channel_Ids Channel_Ids
f4 Channel_Ids Channel_Ids
f5 Channel_Ids Channel_Ids
f6 Channel_Ids Channel_Ids
f7 Channel_Ids Channel_Ids
f8 Channel_Ids Channel_Ids
f9 Channel_Ids Channel_Ids
fa Channel_Ids Channel_Ids
fb Channel_Ids Channel_Ids
fc Channel_Ids Channel_Ids
fd Channel_Ids Channel_Ids
fe Channel_Ids Channel_Ids
ff Channel_Ids Channel_Ids

158
Tabella Chiavi in Chiaro Irdeto

Queste sono le chiavi in chiaro che i vari providers utilizzano


per decrittare i programmi televisivi, attenzione a non
confonderle con le KeyProviderGroup che sono le stesse chiavi ma
crittate differentemente per ogni ProviderGroup.
Queste chiavi vanno caricate direttamentenei registri chiave della
SmartCard Irdeto a seconda della versione di sistema operativo
(ACS) presente.
I registri di ogni versione si possono verificare nelle tabelle
ACS della sezione precedente.

Stream :

Chiavi da inserire su Provider 00

Chiave 02 – E6 59 84 4E 99 18 FF 61
Chiave 04 – 51 EE 10 F3 74 00 A0 1E
Chiave 08 – 09 58 F6 15 AE A3 5F 93

D+ :

Chiavi da inserire su Provider 00

Chiave 02 – AE E8 F3 AD 62 2F AD 6E – Estinta
Chiave 02 – F6 66 4B 77 BF 3B F6 F2
Chiave 04 – DF A0 D1 2F C6 89 22 DE
Chiave 06 – 73 2C 0D 6B 7E 16 2F B5
Chiave 08 – 86 3A 60 65 78 39 C5 89 - Estinta
Chiave 08 - 2E 55 8F 8E AA 12 E9 1D
Chiave 0A - 47 3F 74 E5 96 62 6B AC - Estinta
Chiave 0A – 8F 15 1C C7 7D 2B 3C A1
Chiave 0C – 9C 1A 1A 8D 37 67 5C 9C - Estinta
Chiave 0C – 61 08 3F FF E6 FE 6A 79
Chiave 0E – 49 DB 9E E3 00 A7 97 42
Chiave 10 – F9 94 BD 4B 5E 0A 17 EC

Premiere World :

Chiavi da inserire su Provider 10

Chiave 04 - 29 DD E7 82 F1 99 EE 4B
Chiave 0A - 4F B5 09 63 45 D6 C7 8D
Chiave 0C - BF 6E CB 1C 8C 63 09 F4
Chiave 10 – 7D B3 28 50 A9 E5 E6 D8
Chiave 11 – 4C AC 0D 7F 74 59 49 25

MCHolland – Adult+ :

Chiavi da inserire su Provider 00

Chiave 02 - 98 09 7D 7A AA 17 51 9E
Chiave 04 - 98 09 7D 7A AA 17 51 9E
Chiave 06 - 98 09 7D 7A AA 17 51 9E
Chiave 08 - DE 6A 2A 45 D6 32 09 04
159
Chiave 0A - 80 22 68 BE 3B EE EB 3E
Chiave 0C - 80 22 68 BE 3B EE EB 3E
Chiave 0E - 80 22 68 BE 3B EE EB 3E
Chiave 10 - 41 B1 8C 42 1D D3 09 2E

Per l’inserimento, bisogna tenere conto delle differenze tra ACS


1.2, ACS 1.4 e ACS 1.6

In ACS 1.2 per le chiavi pari bisogna aggiungere 00 prima della


chiave e 00 alla fine, per le dispari bisogna aggiungere 01 prima
della chiave e FF alla fine.

In ACS 1.4 e 1.6 per le chiavi pari bisogna aggiungere 00 00 prima


della chiave, per le dispari bisogna aggiungere 01 FF prima della
chiave.

160
Tabella Chiavi in Chiaro Irdeto – Codifica Canali
|Prov|Key-|
Emittente |ider|Type| Plainkey
--------------+----+----+--------------------------
D+ | 00 | 02 | AE E8 F3 AD 62 2F AD 6E
D+ | 00 | 04 | DF A0 D1 2F C6 89 22 DE
D+ | 00 | 06 | 73 2C 0D 6B 7E 16 2F B5
D+ | 00 | 08 | 2E 55 8F 8E AA 12 E9 1d
D+ | 00 | 0A | 47 3F 74 E5 96 62 6B AC
--------------+----+----+--------------------------
C+NL - Adult+ | 00 | 02 | 98 09 7D 7A AA 17 51 9E
C+NL - Adult+ | 00 | 04 | 98 09 7D 7A AA 17 51 9E
C+NL - Adult+ | 00 | 06 | 98 09 7D 7A AA 17 51 9E
C+NL - Adult+ | 00 | 08 | DE 6A 2A 45 D6 32 09 04
C+NL - Adult+ | 00 | 0A | 80 22 68 BE 3B EE EB 3E
C+NL - Adult+ | 00 | 10 | 41 B1 8C 42 1D D3 09 2E
--------------+----+----+--------------------------
PremWorld | 10 | 04 | 29 DD E7 82 F1 99 EE 4B
PremWorld | 10 | 04 | 37 26 18 d5 96 f7 5a 43
PremWorld | 10 | 0A | 4F B5 09 63 45 D6 C7 8D
PremWorld | 10 | 0C | bf 6e cb 1c 8c 63 09 f4
PremWorld | 10 | 10 | 7d b3 28 50 a9 e5 e6 d8
PremWorld | 10 | 11 | 4c ac 0d 7f 74 59 49 25
--------------+----+----+--------------------------
Stream | 00 | 02 | E6 59 84 4E 99 18 FF 61
Stream | 00 | 04 | 51 EE 10 F3 74 00 A0 1E
Stream | 00 | 08 | 09 58 f6 15 ae a3 5f 93

Hellas e SCT non vengono riportate a causa dei loro frequenti ECM

Tabella dei Channel-ID:


=======================

Provider | 00/10 | Key | ChID | Canale


---------------------------------------------------------
Premiere World | 00 | 0A | FFFC | PremWorld_Dealer
Premiere World | 10 | 11 | 7530 | PremWorld_Dealer
Telepiu (D+) | 00 | 08 | FFF5 | MostChannels_NoPPV
Telepiu (D+) | 00 | 08 | FF03 | Disney_Ragazzi
Telepiu (D+) | 00 | 08 | FFFB | ????
Telepiu (D+) | 00 | 08 | FFDF | ????
Telepiu (D+) | 00 | 08 | FFBF | ????
Telepiu (D+) | 00 | 08 | FFFE | Premium
Telepiu (D+) | 00 | 08 | FFFA | Basic
Telepiu (D+) | 00 | 08 | FFF6 | Mediaset & TMC & Info
Telepiu (D+) | 00 | 08 | FFEF | Cinemavinema
Telepiu (D+) | 00 | 08 | FF02 | Formula 1
Telepiu (D+) | 00 | 08 | FFF0 | Season
Telepiu (D+) | 00 | 08 | FF54 | Classica
Telepiu (D+) | 00 | 08 | FFB4 | Calcio B
Telepiu (D+) | 00 | 08 | FFB5 | Calcio A
Stream | 00 | 08 | FFFB | MostChannels(Bluestream)NoPPV
Stream | 00 | 02 | FFE7 | PPV
Stream | 00 | 02 | FFF8 | PPV
Stream | 00 | 04 | FF98 | Test
Stream | 00 | 08 | FF95 | Interattivi-Lotto
Stream | 00 | 08 | FF94 | Interattivi-Borsa
Stream | 00 | 08 | FFFA | Interattivi
Stream | 00 | 08 | FFEE | Interattivi
Stream | 00 | 08 | FFF0 | Adult Movies
Stream | 00 | 02 | FFFF | Adult Movies
Stream | 00 | 02 | FFDF | Calcio
C+ NL | 00 | 02 | FFFE | Canal+Dealerkey
C+ NL | 00 | 02 | FFF0 | TestChannels
C+ NL | 00 | 04 | FFF3 | C+1 und C+2
Adult+ | 00 | 02 | FFEE | ?????
C+ NL Adult+ | 00 | 02 | FFF9 | ?????
Nova/Hellas | 00 | 06 | FFF2 | MostChannels

161
Tabelle Channels-ID Stream e D+

CHANNEL ID D*

Suddivisi per PID ECM:

&$1$/( ECM
DIGITALY – VETRINA – D+ INFO 0208
(…)
P6 – P13 - TELE + BIANCO - CANAL 0600
JIMMY - DISNEY CHANNEL –
CLASSICA
F1 P20 - 0606
P1 – P7 – P14 - PLANETE - TELE + 0608
NERO - CARTOON NETWORK –
CNBC – CALCIO INFO
F1 P21 - 060E
P2 – P8 – P15 - MARCO POLO - 0610
DISCOVERY CHANNEL - TELE+
GRIGIO - 16:9 - HAPPY CHANNEL -
F1 P22 0616
P3 – P9 – P16 - MTV – INN – 0618
EUROSPORT - RETE 4
F1 P23 061C
P4 – P10 – P17 - BOJ – SEASONS - 0620
CANALE 5 – TMC -
F1 P24 0624
P5 – P11 – P18 - D+ INFO (..) - CINE 0628
CINEMA 1 - TMC2 - ITALIA 1
F1 P25 062C
P12 – TV5 - CINE CINEMA 2 – CNN 0630
– F1 P26 -
MATCH MUSIC – HALLMARK - 0638
CINEMA CLASSIC
BBC 0636

Suddivisi per tipo di abbonamento

1. i canali abbonamento Premium : FFFE FFF6


2. i canali abbonamento Superpremium : FFFE FFFA FFF6
3. i canali abbonamento digì : FF52
4. i canali abbonamento Basic : FFFA FFF6
5. i canali “Welcome Kit” : FFF5
6. i canali abbonamento Calcio “A” gold : FF05
7. i canali abbonamento Calcio “B” gold : FF04
8. le varie OPTION : FF02 FF03 FFF0 FFEF FF54

I Channel ID dei Canali dal Calcio P1 al Calcio P18 possono subire delle variazioni in relazione al tipo di
evento.

162
Abbonamento
Trasponder ID Channel id Nome del Canale PID ECM
644474448
1 2 3 4 5 6 7 8
Frequenza
FF05-FF30-FF31-FF45 Calcio P6 0600
FF05-FF36-FF37-FF3B Calcio P7 0608
11862 1644 FF05-FF50-FF51-FF35 Calcio P8 0610
FF05-FF38-FF39-FF2F Calcio P9 0618
FF05 Calcio P10 0620
FF04-FF12-FF13-FF2B Calcio P11 0628
FF04-FF0C-FF0D-FF29 Calcio P12 0630
FF02 F1 P20 0606
FF02 F1 P21 060E
11900 170C FF02 F1 P22 0616
FF02 F1 P23 061C
FF02 F1 P24 0624
FF02 F1 P25 062C
FF02 F1 P26 0630
FF03 Disney channel 0600
FFF5- FF52-FFFA Cartoon Network 0608
11958 1838 FFF5-FF52-FFFA Happy channel 0610
FFF5- FF52-FFFA EuroSport 0618
FFF5-FFF6 Tmc 0620
FFF5-FFF6 Tmc2 0628
FFF5- FF52-FFF6 Match Music 0638
FF52-FFFA HallMark 0638
D+ Info (…) 0208
FFF5-FF54 Classica 0600
FFF5-FFFA Discovery Channel 0610
11996 1900
FFF5-FFFA MTv 0618
FFF5-FFFA Best of Jazz 0620
FFF5-FFF6 D+ Info (..) 0628
FFF5-FFFA CNN 0630
FFF5-FFFA BBC 0636
Vetrina 0208
FFF5-FFFE T+ Bianco 0600
12034 19C8 FFF5-FFFE T+ Nero 0608
FFF5-FFFE T+ Grigio 0610
FFF5-FFF6 Rete 4 0618
FFF5-FFF6 Canale 5 0620
FFF5-FFF6 Italia 1 0628
D+ Info 0208
FF04-FF23-FF26-FF27 Calcio P13 0600
FF04-FF14-FF15-FF21 Calcio P14 0608
12054 1A2C
FF04-FF1D-FF2C-FF2D Calcio P15 0610
FF04-FF16-FF17-FF1B Calcio P16 0618
FF04-FF11-FF24-FF25 Calcio P17 0620
FF04-FF0F-FF1E-FF1F Calcio P18 0628
FFF5-FFF6 TV5 0630
FF05-FF42-FF43-FF49 Calcio INFO 0608
FF05-FF40-FF41-FF3D Calcio P1 0608
12073 1A90 FF05-FF3E-FF3F-FF43 Calcio P2 0610
FF05-FF48-FF49-FF4D Calcio P3 0618
FF05-FF32-FF33-FF4B Calcio P4 0620
FF05-FF47-FF4E-FF4F Calcio P5 0628
Digitaly 0208
FFF5-FFFA Bloomberg 0600
12341 2008
FFF5-FFFA CNBC 0608
FFF5- FFFE 16:9 0610
FF52-FFFA Canal Jimmy 0600
FF52-FFFA Planete 0608
12418 2198 FF52-FFFA Marco Polo 0610
FFF5- FF52-FFFA INN 0618
FFF5-FFF0 Seasons 0620
FFF5-FFEF Cinema 1 0628
FFF5-FFEF Cinema 2 0630
FFF5-FFEF CineClassic 0638

163
CHANNEL ID ST*

GDWH 00 07
.H\ 08
FFE9 Cult Network – Studio Universal – InTv – TvL – Cnn – Discovery Channel – EuroNews –
Viaggi –EuroSport – Cartoon Network
FFFF Dsn – Cnn – Sport – Test - Intermezzi
FFFA Canali Interattivi
FF95 Canali Interattivi - Lotto
FF94 Canali Interattivi – Borsa
FFEE-FFF0 Adult Channels

GDWH 00 07
.H\ 02
FFF8
FFE7 3-4-99 – PRIMA FILA DURANTE LA RAPPRESENTAZIONE
FFE9 2-4-99 – PRIMA FILA DURANTE LA RAPPRESENTAZIONE

GDWH 00 ??
.H\ 04
FF98 Test

GDWH 00 07
.H\ 00
FFFF PRIMA FILA INTERMEZZI

PID ECM ST*

&$1$/( ECM
MPPV – MMOV(1)–MMOV (5)- 0500
MMOV (11)
DSN – MMOV (6)- MMOV (12) 0501
MMOV (2)- MMOV (7)- MMOV (13) 0502
TVL - MMOV (3)- MMOV (8)- MMOV 0503
(14)
EURONEWS - MMOV (4)- MMOV (9)– 0504
MMOV (15)
MMOV (10) 0505
CANALE VIAGGI – STUDIO 0507
UNOVERSAL -MMOV (16)
CULT NETWORK 0508
CNN - EUROSPORT 0509
CARTOON NETWORK 050A
DISCOVERY CHANNEL 050E
INTV – SNAI SAT 1006

164
Frequenza Trasponder ID Channel id Nome del Canale PID ECM KEY
22/05/99
))( 6WXGLR8QLYHUVDO 0507 

))( &XOW1HWZRUN 0508 

))( (XURVSRUW 0509 


 ( ))( &DUWRRQ1HWZRUN 050A 

))( 'LVFRYHU\&KDQQHO 050E 

,Q79 1006

)))) 'VQ±6SRUW± 0501 


,QWHUPH]]L

))( 7YO 0503 


 $ ))( (XURQHZV 0504 

))( &DQDOH9LDJJL 0507 

))( &QQ 0509 

7HDP 0904

))( 0339 0500 

))( 0029  0501 

))(±)) 0029  0502 


 251C ))( 0029  0503 

))( 0029  0504 

6QDL6DW 1006

))( 0029  0500 

))( 0029  0501 

))( 0029  0502 

))( 0029  0503 


 2580 ))( 0029  0504 

))( 0029  0505 

))( 0029  0500 

))( 0029  0501 

))( 0029  0502 


 2710 ))(±)) 0029  0503 

))( 0029  0504 

))( 0029  0507 

)))$ ,17(5$77,9, ???? 

)) ,17(5$77,9, /2772 ???? 

)) ,17(5$77,9, %256$ ???? 


 ???? )) 7(67 ???? 

))(( $GXOW ???? 

))) $GXOW ???? 

165

Potrebbero piacerti anche