Satellite Hacking
Satellite Hacking
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
Varie................................................................................................................................ 151
3
6WRULFRGHOOH9HUVLRQL
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
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
...............................................................................................
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
%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
VWDQGDUG'9% 0+]
0HPRULD5$00E\WHNE\WHV
HVWHQVLRQH
0HPRULD)ODVK0E\WH
*UDILFKH'LVSOD\[
/DUJKH]]DGLEDQGD0+]
3DQ 6FDQ/HWWHUER[
6FDUW9&5 7HPSHUDWXUDVWRFFDJJLR&ILQRD&
&9%6$XGLR &RUUHQWHHOHWWULFD9$&
6FDUW'HFRGHU6$7 +]
5*%&9%6$XGLR &RQVXPR0DVVLPR:
,Q6WDQGE\:
3HVR.J
/[$[3[[PP
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/
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).
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.
18
8WLOL]]RGL&DUG'HYLO9
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 :
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 :
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
“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 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
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
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 :
In Ogni SmartCard possono essere memorizzati due Providers o Emittenti, essi sono identificati con i numeri
"00" o "10"
Ad ogni Provider viene associata una data DateStamp di sistema che viene aggiornato automaticamente
dall’emittente :
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):
Il ProviderID e' composto dal ProviderGroup che occupa i primi 2 bytes del ProviderID :
Il restante byte del ProviderID e' chiamato CardId o CustomerId ed identifica l'utente del provider :
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 :
Ogni canale o gruppo di canali di un Provider viene identificato da un Channel-ID, questo e’ lungo 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.)
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 :
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"
//----------------------------------------------------------
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,
};
ioctl (dbox,TIOCMGET,&modeminfo);
if (modeminfo & DBOX_RESET_PIN) return -2;
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;
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;
}
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];
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;
}
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>
<SCRIPT language=Javascript><!--
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);
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);
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;}
function newcrypt(){
for(ii=0;ii<128;ii++){
43
if (daten[ii % 10] & 1)
else
}}
function auswertung(){
var buchstaben="0123456789ABCDEFabcdef";
// if([Link] != "hauptfenster"){location="[Link]
nn="";for(i=0;i<4;i++){aa=[Link]([Link](i,i+1));
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>=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>=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);
[Link]=wort;
// --></SCRIPT>
</TD></TR></table>
<center>
<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>
onchange="auswertung();"> </font></td>
onchange="auswertung();"> </font></td>
</tr>
<tr>
45
onchange="auswertung();"> </font></td><td> </td><td> </td>
</tr>
</table>
<br><br><br>
<table border="0">
<tr>
> </font></td>
</tr>
</table>
</center>
</form>
</font></TD></TR></Table></center>
<br><br>
</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
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.
Alla CAM (Modulo Condizionato di Accesso), le informazioni da elaborare giungono nel seguente formato:
Un piccolo esempio
82 40 12 C3 0D FF 5D 01 00 00 0A 62 03 49 54 41 5A C8 90 69 2B
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
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,$/
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) CAMBIA PROVIDER 00/11 (PROV.) 00 MASTERKEY (00+8 BYTES) + PROVIDER ID(3 BYTES)
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
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.
CLASS ( CL )
00:???
01:ecm
02:get
04:set
05:keyreq
,16758&7,21 ,6
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
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 )&
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
Numero di byte validi che
seguono.I restanti fino a
concorrenza di 4 avranno
valore “00”
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
03 00 00 10 *HW&DUGV6HULDO1XPEHULQ+(;
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
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
03 00 00 15 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x s1
03 00 00 0D 24 C4 02 09 4B f1 f8 0f s1
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
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
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
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@
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 &/
--------------------------------------------------------------------
,6 5 5 )XQ]LRQH
00 00 - 02 5LFKLHVWD±,QYLDLO&KDQQHO,'LO.H\1XPEHUHOD.H\ vedi
es. 1
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
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
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
06 00 00 15 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x s1
06 00 00 0D 24 C4 02 09 4B f1 f8 0f s1
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
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
06 00 XX 45 YYx64 s1
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
(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
(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
) (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)
63
(12) NR. KEY + (12 / 13) + 16 BYTE (2 KEYS?)
&% (20) SELEZIONARE LA CARD IN PROVIDER GROUP (32 BYTES X 8BIT = 256 CARD)
; 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
[
[
[
[
[
[
[ ; ; ; ;
[
$[
%[
&[
'[
([
)[
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 chiarezza in questo esempio vengono selezionate le card con ProvID D%D(
65
Altro esempio, stavolta di una disattivazione:
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
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.
Questa prima riga setta la data del provider 00, passiamo ora a settare la chiave :
r0 – Reset SmartCard
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 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).
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
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 :
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)
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.
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 :
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:
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.
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 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)
72
kp z1 z1 z1 z1 z1 z1 z1 z1 z2 z2 z2 z2 z2 z2 z2
ss ss ss ss ss cs
01 05 9D 00 38 tt 00 0E
ch ID pp kp FF FF k1 k1 k1 k1 k1 k1 k1 k1 cs
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:
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
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.
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
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\
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 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 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 Bizarre
IDENT=00 2f 10 (Current key unknown)
SHARED=36 ee 90 00
INDEX=00 KEY=00 00 00 00 00 00 00
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 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 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 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
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.
C:\TEMP>cardemu /?
Usage : CARDEMU <filename> <Options> CardEmu ßeta9
<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
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 :
#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
ende
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\
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
<-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 :
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
Se la risposta è 50 lo stesso comando viene inviato una seconda volta a conferma del comando
corretto, il codice restituito è 5E.
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.
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
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".
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+(;
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”.
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.
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.
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
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
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.
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:
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
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.
Adesso assemblate.
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 :
// 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
ORG 0000H
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
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
104
GOTO L006D
NOP
NOP
BSF PORTB,007H
BSF STATUS,005H
BSF PORTB,007H
BCF STATUS,005H
MOVLW 0D0H
CALL L0013
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
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
108
MOVWF 16H
CALL L00CA
GOTO L0152
109
CALL L00F8
L0220 CLRF 0FH ;A
CALL L00CA
GOTO L0152
110
CALL L009C
CALL L009C
CALL L009C
CALL L009C
CALL L009C
CALL L009C
CALL L009C
CALL L009C
CALL L009C
CALL L009C
RETURN
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
115
/2**,1*0LQLJXLGDDOO¶XWLOL]]RGLPORJH0U[ORJ±%\*LREEH
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
)LJ$
$')
116
A questo punto bisogna andare nel Download Menù del Mediamaster:
3RLWDVWR
3RLWDVWR
)LJ
117
8WLOL]]RGL0ORJD
Per quanto riguarda mlog eccoti la prima schermata quando lanci la
prima volta il programma:
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”
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.
Qui si sceglie il
programmatore
che si vorrà
utilizzare, e
quindi il formato
dei File. 119
120
Una volta settate le varie opzioni ed aver salvato i settaggi, si
preme ok ed apparirà la maschera principale sottostante:
Fare attenzione
che sia settato in
questo modo
121
Utilizzo di CCsuite
122
Log del ChId con CCsuite
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:
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.
125
6HWWDOD
YHORFLWjGHOOD
FRPD
%DXG
,QVHULVFLL
GDWLGHOOD
FDUGGL
FXLYXRL
ORJJDUHL
GDWL
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
Good Logs
127
Utilizzo di MrXlog 1.1
128
Qui metti il prog che hai
usato per loggare
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.
Saluti By Giobbe.
130
,OVLVWHPD0(',$*8$5'GL6(&$
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
PRGRGDSRWHUFRPXQLFDUHDOULFHYLWRUH
LUHTXLVLWLGHOODFDUGFRPHOHWHQVLRQLGL
Dove:
SURJUDPPD]LRQH GL FRPXQLFD]LRQH H
&/$ 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
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.
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
C1 00 00 0D
132
B2 GDWDE\WHV! 04 .
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
( 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.
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
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.
C1 00 00 03
e, come prima la Smartcard risponde '34' e riceve 00 00 00.
C1 P1 00 20
dove P1 rappresenta l’ID dell’Entità.
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.
&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) ???
135
Il sistema comunque presenta 'sotto al cilindro' alcuni trucchi che lo rendono tale da violarsi più difficilmente
di Eurocrypt , ma chi vivrà vedrà.
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:
Così, per esempio, il parametro 0x71 (113 dec) ha 7 byte di dati, ma il parametro 0xD1 (209 dec) ha 16 byte
di dati.
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).
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.
C1 $ 00 00 10
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.
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.
137
C1 32 04 0E P3 8VDODFKLDYHSULPDULD[([(GDOIRUQLWRUH[
C1 32 14 0E P3 VHODFKLDYH3ULPDULD[(qQXPHUDWD[(
[
DOWULPHQWL
8VDODFKLDYH3ULPDULDNH\[([( .
Così ora dovremmo capire come è formata la chiave di 16-byte per l’algoritmo.
3UHSDUD]LRQHGHOOD&KLDYH
immaginiamo che i byte della chiave siano disposti in forma circolare come fossero avvolti su un cerchio, in
questo modo:
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.
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:
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:
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@
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
d1 = 7>d6@ XOR d1
d2 = 7>d8@ XOR d2
d3 = 7>d5@ XOR d3
d4 = 7>d7@ XOR d4
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
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:
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.
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:
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:
- 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:
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
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
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@
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
d1 = 7>d6@ XOR d1
d2 = 7>d8@ XOR d2
d3 = 7>d5@ XOR d3
d4 = 7>d7@ XOR d4
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.
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.
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
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
*(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).
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:
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
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.
$/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
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
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
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?
[...]
[...]
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
Stream :
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+ :
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 :
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+ :
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
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
161
Tabelle Channels-ID Stream e D+
CHANNEL ID D*
&$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
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
&$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
,Q79 1006
7HDP 0904
6QDL6DW 1006
165