Lexikon |
Einführung Ein wenig Systemverständniss setze ich aber schon voraus, da es sonst ein hoffnungsloses unterfangen sein würde euch das alles beizubringen. Kommen wir zum grundsätzlichen Aufbau einer Irdeto Chipcard. Wie man erkennen kann hat die Chipcard 6 Anschlüsse ( Pins ), wovon aber nur 5 Anschlüsse genutzt werden. So klein die Chipcard auch ist um so mehr Technik steckt da drin. Auf diesen kleinen Microchip hat ein kompletter 'PC' platz. Dieser beinhaltet eine CPU (Rechner) einen EEPROM (beschreibarer Speicher) einen ROM ( fester Speicher fürs Betriebssystem ) und eine serielle Schnittstelle (Kommunikation mit der Aussenwelt). Nun fragt ihr euch natürlich, wie soll ich denn mit so einer Chipkarte in Kommunikation treten. Natürlich mit eurem PC den ihr zu Hause bestimmt stehen habt. Euer PC besitzt auch im Normalfall 2 Serielle Schnittstellen ( RS232 ). An diesen Schnittstellen ( Interface ) hängt normalerweise ein Modem oder eine serielle Maus dran. Am Computer werden diese Schnittstellen mit COM1 und COM2 bezeichnet. So - ich hoffe ihr könnt ein wenig mit dem Lötkolben umgehen um euch ein Gerät zu bauen welches halt benötigt wird um mit eurer Chipkarte in Kontakt zu treten. Falls ihr nicht in der Lage sein solltet euch selbst so ein Gerät zu bauen wird es leider teuer, denn im Versandhandel ( Satshops ) kosten solche Geräte wie Smartmouse oder Mastermouse bummelige 99.00 DM ( 45.00 Euro ). Aber wie gesagt wir sind ja nicht Dumm und bauen uns solch ein Gerät selbst. Den Schaltplan findet ihr auf der Download Seite. Einige Tage später......... Ich hoffe ihr habt nun euer Smartmouse aufgebaut, somit können wir dann weiter machen was das Programmieren bzw. Kommunizieren mir eurer Irdeto Chipkarte betrifft. Erst einmal was Grundsätzliches zu der Schnittstelle. Es handelt sich ja wie gesagt um eine Serielle Schnittstelle und das bedeutet das die Daten Bitweise nacheinander Gesendet bzw. Empfangen werden. Ein Bit kann ein Zustand von 0 oder 1 ( 0 Volt / 5 Volt ) annehmen. Die Kommunikation erfolgt dann auch noch im Halbduplex Verfahren, dies bedeutet das entweder Gesendet oder Empfangen wird, beides Gleichzeitig geht nicht. Im konkreten fall sieht das so aus, der PC sendet von seiner Seriellen Schnittstelle eine Bitfolge zur Schnittstelle der Chipkarte z.B. 0000000100000001010100000110101001001.....). Nachdem er damit fertig ist erwartet er wiederum eine Antwort von der Chipkarte ( z.B. 111010100011101110101101001111.....). Um nun den Überblick nicht zu Verlieren schreiben wir die Daten die Gesendet werden sollen bzw. Empfangen werden nicht im Binärform sondern in Hexadezimal. Wie sieht nun so ein Befehlskommando welches zur Chipkarte gesendet werden soll aus. Ein Kommando beginnt immer mit Byte 01, danach kommt die Befehlsklasse, welche Angibt was man mir der Chipkarte vorhat ( Abfragen, Beschreiben, Löschen usw. ). Die Befehlsklasse ist auch nur ein Byte lang ( 1 Byte = 8 Bit ). Nach der Befehlsklasse ( Class ) kommt der Befehl ( Instuction ). Der Befehl ( Instuction ) ist auch nur ein Byte gross. Nach dem Befehl folgen 2 Bytes und zwar Referenz 1 und Referenz 2. Was dieses auf sich haben werden wir später erläutern. So nach den beiden Bytes folgt nun eine Längenangabe die Angibt wieviel Bytes noch folgen werden. Die Längenangabe ist auch nur ein Byte gross. Falls nun die Befehlsklasse es vorgibt folgt nun ein Datenteil, dessen Länge und Inhalt von dem Abhängt was man mit der Chipkarte vorhat. Abschliessend folgt nun noch ein Byte welches die Checksumme aller vorangegangenen Bytes bildet. Die Checksumme errechnet sich indem man jedes Byte nimmt und mit dem nachfolgenden Byte eine XOR Verknüpfung macht. Als Startwert wird der wert 3F genommen. Die nachfolgenden Programme mit denen wir Arbeiten werden errechnen diesen Wert automatisch, so das wir dieses vernachlässigen können. So könnte nun also so eine Bytefolge aussehen: 01 01 00 00 00 13 0A 2A 1D 00 00 0D 40 02 03 36 95 02 03 35 81 6F 56 D5 0A AD. Parameter und Kommandos Zunächst einmal ein paar Grundsätzliche Dinge, die unabdingbar für ein weiteres Verständnis sind. Es gibt auf jeder Card eine Anzahl von Parametern die sich z.T. auslesen lassen und sich von Card zu Card unterscheiden können. Da wären die..... Asciiseriennummer :Das ist die Nummer, die auf jeder Card mitsamt Barcode aufgedruckt ist. Es gibt hier verschiedene Varianten. Früher wurden von allen Irdeto Providern Cards mit den Nummern 0000 xxxx xxx oder 0001 xxxx xxx benutzt. Um zu unterbinden, dass deutsche d-boxen ins Ausland exportiert werden, wurden hierzulande Karten der Serien C0001 / C0002 und C1000 samt passendem C-Cam eingeführt. Diese Cards laufen nicht in original Irdeto Cams und umgekehrt. In diesem Fall muss auf All-Cam umgerüstet werden. Im Dezember 1998 kamen noch die Serien C8000 und C9000 hinzu. Hexseriennummer : Jede Card hat eine 3 byte lange Hexnr. Aus dieser kann die Asciinr. berechnet werden. Sie kennzeichnet die Karte eindeutig und wird im folgendem kurz s0 genannt. Provider : Irdeto Karten bieten Platz für zwei verschiedene Pay-Tv Anbieter. Der erste wird dabei mit Provider 00 (in Deutschland ehemalig DF1), der zweite Provider 10 (in Deutschland Premiere World) bezeichnet. ProviderID : Im jungfräulichem Zustand, d.h. wenn die card auf dem betreffendem Provider noch kein Abo hatte, haben Irdetocards meist festgelegte Provider ID's wie 000300/000400 oder 000100/000200. Erst wenn ein Abo abgeschlossen wird, wird eine eindeutige ebenfalls 3 byte lange ProviderID auf die card geschrieben. Dazu ist der Masterkey, auch Key 00 genannt, absolut notwendig. Über die Provider ID kann die Card z.B bei Keyupdates angesprochen werden. Sie wird im folgenden für Provider 00 - p2 und für Provider 10 - p3 gennant. Provider Group : Das sind die ersten zwei bytes der Provider ID. Sie wird von den Anbietern genutzt, um mit einem Befehl mehrere Karten anzusprechen. Für Provider 00 gilt: p0 , für Provider 10 :p1. Channel ID : Jedes Programm sendet "auf" einer oder mehrerer Channel ID mit dazu passendem Key.Mindestens eine ID/Key Kombination muss davon "geöffnet" sein um das Progamm zu sehen. Die Channel Id hat 2 byte z.B 007f oder 61b1. Keys : Es ist immer ein gültiger Key zu einer Channel ID nötig um das Progamm zu entschlüsseln. Dieser ist 9 byte lang, wobei das erste byte des Keys seine Nummer angibt. Z.B.: 10 02 AB 64 23 C2 A5 76 DE ist ein kompletter Key 10. Es gibt einen speziellen Key, den Masterkey Dieser wird unbedingt benötigt, wenn die ProviderId gewechselt wird. Ist der Masterkey ungültig, was im übrigen auch bei benutzten 0300/0400er der Fall ist, akzeptiert die Karte kein eigentliches Keyupdate mehr! Das bedeutet ,dass ihr keinen Key mehr auf die Card schreiben solltet, da dieser dann 100% NICHT mehr funktioniert. Nach einem Keywechsel könnt ihr eine solche Karte in der Regel abschreiben. Date: Jeder Provider hat ein fortlaufendes Date: Provider 00 - t0, Provider 10 - t1. Dieses ist 2 byte lang, z.B 02A3. Das richtige Date ist ernorm wichtig z.B. beim Schreiben eines Keys. Ablauf der Kommunikation mit der DBOX Die Kommunikation mit der Karte erfolgt seriell halbduplex über eine Datenleitung. Die Übertragungsrate ist vom CAM abhängig; alte CAM's 9600 blaues CAM 9200 Baud. Die Taktfrequenz ist 6 MHz bei alten und 5,6 MHz bei blauen CAM's. Der Rest kann in ISO 7816 nachgelesen werden. Beim Einschalten der Box werden erst mal alle möglichen Kartendaten mit Class 2 Kommandos (01 02 ...) abgefragt; Serial, ProviderID's, usw. Zu jedem Kanal existieren mehrere gültige ChanelID/Key Paare. Nach dem Umschalten auf einen verschlüsselten Kanal werden dann die jeweiligen ChanelID's mit ihren zugehörigen Keys mit Class 5 Kommandos (01 05 ...) abgefragt. Antwortet die Karte mit 01 05 9D ... ist alles ok und der Kanal wird mit dem zurückgelieferten Entschlüsselungskey entschlüsselt. Bei einer anderen Antwort wird die nächste ChanelID/Key getestet, bis alle durch sind. Später wird ca. alle 20 Sekunden ein neuer Entschlüsselungskey von der Karte mittels 01 05 ... abgefragt. In größeren Abständen werden ECM's mit Class 1 Kommandos (01 01 ...) gesendet. Diese werden vom CAM gefiltert, und nur die an die Karte adressierten ECM's werden durchgelassen. Die Adresse kann dabei die Hex Serial, die ProviderID oder die ProviderGroup sein. Wenn die ProviderGroup adressiert wurde, wird mit dem Nano CB 32 .. eine 256 Bit (32 Byte) Maske für die Auswahl der einzelnen Karten aus dieser Gruppe verwendet. Die möglichen Antworten der Karten sind weiter unten zu finden. Struktur der Kommandos Die Kommandos bestehen aus einem Header, dem Datenteil und einer Checksumme. Class 00:??? 01:ecm 02:get 04:set 05:keyreq Instruction :Von Class abhängig Referenzen :Von Class abhängig Länge :Anzahl der Bytes im Datentei Datenteil :ist für alle Klassen unterschiedlich. Checksum :XOR Verknüpfung aller Bytes des Kommandos, Startwert 3F Class 0 Kommandos Keine Ahnung was das ist. Bei meiner C9000:
Class 1 Kommandos Das sind die ECM’s. Instruction: 00 Referenz1: 00 Referenz2: 00 Datenteil
Adresstyp (Byte)
Adresse (4 Byte) Wenn die Adresse kürzer ist, wird hinten mit 00 aufgefüllt Länge (Byte) Länge aller Nanos + Signatur modulo 0x3F Nanos
Antworten vom Class 01 Kommando
Class 2 Kommandos Abfragekommandos für auf der Smartcard gespeicherte Daten.
Antworten vom Class 02 Kommando
Class 3 Kommandos Personalisierung, oder auch Programmier-Modus Können nur eingesetzt werden wenn die Karte genullt bzw. geeFFt wurde.
Antworten des Class 3 Command
Class 4 Kommandos 01 04 01 00 00 00: Aktiviert write protection (Schreibschutz) 01 04 00 00 00 00: Fragt nach "write protected". Antwort 01 04 40 - nein Antwort 01 04 41 - ja Mit Class 4 Kommandos scheint man z.B. auch die ASCIISerial ändern zu können. 01 04 00 00 00 14 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 43 36 35 31 30 36 41 20 20 20 Change the 10 "x"s to the ascii serial number. Leave off the last "y". Sollte dies nicht funktionieren, ändere die letzten Bytes nach 43 so: 43 37 30 32 32 32 41 20 20 20 or 43 36 33 39 30 36 41 20 20 20 Funktioniert nur bei Karten ohne Schreibschutz. Class 5 Kommandos Mit Class 5 Kommandos werden die Entschlüsselungskeys abgefragt. Instruction: 00 Referenz 1: 00 Referenz 2: 00 oder 02 Datenteil
Antworten vom Class 05 Kommando
Bei einer ok Antwort wird der ermittelte Key zurückgegeben: 01 05 9D 00 38 yy 00 Länge Daten yy=00:01 wenn zz=13:12 in Request nach Nano 78 12 Länge (Byte)=0x12
Class 6 Kommandos Personalisierung, oder auch Programmier-Modus Können nur eingesetzt werden wenn die Karte genullt bzw. geeFFt wurde.
Antworten des Class 6 Command
Kartenantworten und deren Bedeutung
Wie erstelle ich nun ein CRD File und öffne damit einen Fernsehkanal ? Angenommen wir möchten ein nun ein verschlüsseltes Fernsehprogramm auf unserer Karte freischalten. Der Fernsehsender heisst z.B. TV 0815. Aus irgendeiner Quelle z.B. durch loggen oder einer Internetseite wissen wir welche ChannelID + Key bei diesem Kanal abgefragt werden. In unserem Beispiel ist es die Channel ID 02 33 und der Key 0A, und der Provider ( Anbieter ) sei der Provider 10. Wenn wir unsere Karte mit cardmaster auslesen sehen wir z.B. das Provider 10 bei uns die ProviderID 22 44 F4 besitzt. Daraus ergibt sich logischerweise das die Providergroup ( die ersten 2 Bytes der ProvID ) die 22 44 ist. Um nun die ChannelID auf unserer Karte frei zu schalten ist ein ECM Kommando nötig ( Class 01 ). Also fängt unser String wiefolgt an: 01 01 00 00 00 ?? Die Fragezeichen stehen für die länge der nachfolgenden Bytes inclusive der 5 Byte langen Signatur, die können wir aber erst einsetzen wenn wir wissen wie lang der String wird, also erst später. Als nächstes folgt der Adresstyp. Wir wollen unsere Karte mit der Providergroup ansprechen also: 01 01 00 00 00 ?? 0A 22 44 00 00 ?? Das Byte 0A sagt ja aus (siehe oben) das wir die Providergroup vom Anbieter 10 ansprechen. Danach folgen die 2 Bytes der Providergroup und 2 Bytes 00. Diese stehen deshalb dort da der Adressbereich immer 4 Bytes beinhalten muss. Die Fragezeichen dahinter geben ebenfalls die länge von den nachfolgenden Bytes an, die wir ja auch nicht kennen. Als nächstes wir das Datum ( Date ) gesetzt. Das Date entnehmen wir auch vom Ausgabebildschirm von Cardmaster. Wichtig, es muss das Date vom Provider 10 sein, in unserem Beispiel ist es 03 12. In unserem Beispiel kommt dann also folgendes Nano dazu: 01 01 00 00 00 ?? 0A 22 44 00 00 ?? 40 02 03 12 Das Nano 40 02 steht für Set Date und die 03 12 ist das Date. Jetzt folgt nur noch das Nano "öffne Channel ID" welches 11 06 lautet. Bei diesem Nano kommen zuerst die 2 Bytes der Channel ID gefolgt vom Datum ab wann die Channel ID geöffnet werden soll in unserem fall währe es der selbe tag wie vom Date. Danach folgt 1 Byte welches den Zeitraum angiebt wie lange die ChannelID geöffnet bleiben soll 01 steht für ein Tag FE für 255 Tage und FF steht für ewig. Das letzte Byte ist immer eine 00. Da das dass letzte Nano war, folgt nun nur noch die Signatur ( 5 Bytes ) die wir als s1 eintragen, da Cardmaster bei Karten kleiner c 8000 die Signatur selber findet. Der fertige Strin sieht somit wiefolgt aus 01 01 00 00 00 17 0A 22 44 00 00 11 40 02 03 12 11 06 02 33 03 12 FF 00 s1 Die Checksumme nach der Signatur brauch nicht eingetragen werden, da Cardmaster sie selber errechnet. Sollte der Bildschirm nachdem immer noch schwarz bleiben so liegt es wahrscheinlich daran, dass der Key 0A entweder falsch ist oder noch nicht auf der Karte geschrieben wurde. In diesem fall bauen wir noch ein CRD File welches nun noch den Key 0A schreibt. Wichtig ist es nun aber das der 8 Byte Key den wir wieder irgendwoher erhalten mit dem Date der Karte übereinstimmt und er auch für unsere Providergroup gedacht ist. Denn der Key wird innerhalb der Karte mit dem Kartendatum und der Providergroup durch einen algoritmus entschlüsselt und dann erst auf das EEPROM der Karte geschrieben. Also müssen wir nach einen Key 0A für UNSERE Providergroup suchen. Falls ihr nicht loggen könnt, hilft euch das File Key All vom Downloadberreich. Da wir wohl nicht das Glück haben werden einen Key vom aktuellen Tag zu erhalten, müssen wir unser Datum (Date) der Karte eben auf das Datum vom welchem der Key 0A stammt anpassen. Vom Key All File erhalten wir nun z.B. folgenden String: 22 44 10 0AB0E876124AA886EA 0297 02 33 Dort erkennen wir das für die Providergroup ( 22 44 ) vom Provider 10 der Key 0A (B0 E8 76 12 4A A8 86 EA) am tage 0297 gesendet wurde. Also stellen wir das Kartendatum von Provider 10 ersteinmal auf das Date 0297 um. Dazu dient folgender String: 01 01 00 00 00 13 0A 22 44 00 00 0D 40 02 02 97 90 02 01 E2 s1 Das Nano 90 02 mit den Parametern 01 E2 bedeutet nichts anderes als das er das Date vom Nano 40 02 als Kartendate für Provider 10 übernehmen soll. Nachdem wir diesen String mit Cardmaster ausgeführt haben und einmal reset bei Cardmaster machen, müsste das Date von Provider 10 in diesem Beispiel auf 02 97 stehen. Was jetzt folgt liegt klar auf der Hand, wir lesen den Schlüssel 0A in die Karte ein. Dafür gibt es ja das Nano 10 09 im ECM Kommando. Dies CRD File sieht dann so aus: 01 01 00 00 00 1A 0A 22 44 00 00 14 40 02 02 97 10 09 0A B0 E8 76 12 4A A8 86 EA s1 Ich hoffe dieses CRD File bedarf keine erklährung mehr, ansonsten fangt noch mal von vorne an mit dem lesen. Jetzt sollte dem Empfang des Fernsehsenders TV 0815 nichts mehr im wege stehen. Ihr könnt auch alle Nanos zu einem String zusammenfassen. Das Date muss dann auch nicht extra auf die Karte geschrieben werden. Es reicht wenn es einmal im String vorkommt. Zusammenfassend sieht dann der String so aus: 01 01 00 00 00 22 0A 22 44 00 00 1C 40 02 02 97 11 06 02 33 03 12 FF 00 10 09 0A B0 E8 76 12 4A A8 86 EA s1 Hilfe ich habe eine Karte grösser C8000 Kein Problem, ihr müsst die CRD Files nicht umschreiben. Ihr könnt euch ja mal ein File erstellen mit dem CRD Generator und sehen wie die fertigen Strings aussehen könnten. |
![]() |