Clonen von 0382 und 0383er Karten |
Voraussetzungen fürs Clonen: Bevor ihr die Karte mit den nachfolgenden CRD´s in den Dumpmodus bringen könnt, muss die Provider-ID 05 72 42 und der Plain-Mk 5F 9C 55 34 D1 C5 A5 auf Prov.00 geschrieben werden. Damit wird gewährleistet das die Karte sicher in den Dumpmodus geht. Der Clonevorgang ist bis auf die Initialisierungssequenz bei beiden Kartentypen gleich. Initialisierung des Dumpmodus bei ACS 0382erKarten: //Table 01-09 Prov00 auslesen r0 01 02 04 00 00 01 01 01 02 04 00 00 01 02 01 02 04 00 00 01 03 01 02 04 00 00 01 04 01 02 04 00 00 01 05 01 02 04 00 00 01 06 01 02 04 00 00 01 07 01 02 04 00 00 01 08 01 02 04 00 00 01 09 01 02 04 00 00 01 01 //Table 01 Prov10 auslesen 01 02 04 00 01 01 01 //Read Cardfile 1 01 02 0E 02 00 00 //Read Cardfile 2 01 02 0E 03 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 00 10 E9 11 22 33 44 55 //Table 06-09 Prov00 auslesen 01 02 04 00 00 01 06 01 02 04 00 00 01 07 01 02 04 00 00 01 08 01 02 04 00 00 01 09 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 01 10 E9 11 22 33 44 55 //Table 06-09 Prov00 auslesen 01 02 04 00 00 01 06 01 02 04 00 00 01 07 01 02 04 00 00 01 08 01 02 04 00 00 01 09 //Table 01 Prov10 auslesen 01 02 04 00 01 01 01 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 02 10 E9 11 22 33 44 55 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 03 10 E9 11 22 33 44 55 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 04 10 E9 11 22 33 44 55 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 05 10 E9 11 22 33 44 55 //Read CoCo 01 02 0B 00 00 00 01 01 00 0000 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 6202 00 15 62 00 40 02 22 06 10 E9 11 22 33 44 55 //Read CoCo 01 02 0B 00 00 00 //Table 15-21 Gruppe1 auslesen 01 02 04 00 00 01 15 01 02 04 00 00 01 16 01 02 04 00 00 01 17 01 02 04 00 00 01 18 01 02 04 00 00 01 19 01 02 04 00 00 01 1A 01 02 04 00 00 01 1B 01 02 04 00 00 01 1C 01 02 04 00 00 01 1D 01 02 04 00 00 01 1E 01 02 04 00 00 01 1F 01 02 04 00 00 01 20 01 02 04 00 00 01 21 //Table 37-43 Gruppe2 auslesen 01 02 04 00 00 01 37 01 02 04 00 00 01 38 01 02 04 00 00 01 39 01 02 04 00 00 01 3A 01 02 04 00 00 01 3B 01 02 04 00 00 01 3C 01 02 04 00 00 01 3D 01 02 04 00 00 01 3E 01 02 04 00 00 01 3F 01 02 04 00 00 01 40 01 02 04 00 00 01 41 01 02 04 00 00 01 42 01 02 04 00 00 01 43 //Table 59-66 Gruppe3 auslesen 01 02 04 00 00 01 59 01 02 04 00 00 01 5A 01 02 04 00 00 01 5B 01 02 04 00 00 01 5C 01 02 04 00 00 01 5D 01 02 04 00 00 01 5E 01 02 04 00 00 01 5F 01 02 04 00 00 01 60 01 02 04 00 00 01 61 01 02 04 00 00 01 62 01 02 04 00 00 01 63 01 02 04 00 00 01 64 01 02 04 00 00 01 65 01 02 04 00 00 01 66 Initialisierung des Dumpmodus bei ACS 0383er Karten: //Table 01-09 Prov00 auslesen r0 01 02 04 00 00 01 01 01 02 04 00 00 01 02 01 02 04 00 00 01 03 01 02 04 00 00 01 04 01 02 04 00 00 01 05 01 02 04 00 00 01 06 01 02 04 00 00 01 07 01 02 04 00 00 01 08 01 02 04 00 00 01 09 01 02 04 00 00 01 01 //Table 01 Prov10 auslesen 01 02 04 00 01 01 01 //Read Cardfile 1 01 02 0E 02 00 00 //Read Cardfile 2 01 02 0E 03 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 00 10 E9 11 22 33 44 55 //Table 06-09 Prov00 auslesen 01 02 04 00 00 01 06 01 02 04 00 00 01 07 01 02 04 00 00 01 08 01 02 04 00 00 01 09 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 01 10 E9 11 22 33 44 55 //Table 06-09 Prov00 auslesen 01 02 04 00 00 01 06 01 02 04 00 00 01 07 01 02 04 00 00 01 08 01 02 04 00 00 01 09 //Table 01 Prov10 auslesen 01 02 04 00 01 01 01 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 02 10 E9 11 22 33 44 55 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 03 10 E9 11 22 33 44 55 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 04 10 E9 11 22 33 44 55 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 05 10 E9 11 22 33 44 55 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 06 10 E9 11 22 33 44 55 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 07 10 E9 11 22 33 44 55 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 08 10 E9 11 22 33 44 55 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 09 10 E9 11 22 33 44 55 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 0A 10 E9 11 22 33 44 55 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 0000 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 62 02 00 15 62 00 40 02 22 0B 10 E9 11 22 33 44 55 //Read CoCo 01 02 0B 00 00 00 01 01 00 00 00 44 03 05 72 42 00 3E 62 03 F2 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 00 62 03 00 00 0A 6202 00 15 62 00 40 02 22 24 10 E9 11 22 33 44 55 //Table 15-21 Gruppe1 auslesen 01 02 04 00 00 01 15 01 02 04 00 00 01 16 01 02 04 00 00 01 17 01 02 04 00 00 01 18 01 02 04 00 00 01 19 01 02 04 00 00 01 1A 01 02 04 00 00 01 1B 01 02 04 00 00 01 1C 01 02 04 00 00 01 1D 01 02 04 00 00 01 1E 01 02 04 00 00 01 1F 01 02 04 00 00 01 20 01 02 04 00 00 01 21 //Table 37-43 Gruppe2 auslesen 01 02 04 00 00 01 37 01 02 04 00 00 01 38 01 02 04 00 00 01 39 01 02 04 00 00 01 3A 01 02 04 00 00 01 3B 01 02 04 00 00 01 3C 01 02 04 00 00 01 3D 01 02 04 00 00 01 3E 01 02 04 00 00 01 3F 01 02 04 00 00 01 40 01 02 04 00 00 01 41 01 02 04 00 00 01 42 01 02 04 00 00 01 43 //Table 59-66 Gruppe3 auslesen 01 02 04 00 00 01 59 01 02 04 00 00 01 5A 01 02 04 00 00 01 5B 01 02 04 00 00 01 5C 01 02 04 00 00 01 5D 01 02 04 00 00 01 5E 01 02 04 00 00 01 5F 01 02 04 00 00 01 60 01 02 04 00 00 01 61 01 02 04 00 00 01 62 01 02 04 00 00 01 63 01 02 04 00 00 01 64 01 02 04 00 00 01 65 01 02 04 00 00 01 66 Diese Sequenzen bereitet die Karten auf das Auslesen der Tables vor. Im Beispiel werden 3 Gruppen ausgelesen. Es ist natürlich möglich noch mehr Gruppen auszulesen ( 00 - FF ). Der Dateninhalt der einzelnen Gruppen ist im Prinzip der gleiche, aber in jeder Gruppe sind die Daten Byte verschoben vorhanden ( 8 Byte !). Da die einzelnen Tabellen wie Channel_ID-Tables beschrieben werden, kann man dieses zum gezielten Clonen der Karte ausnutzen. Vorsicht: Ist die Karte einmal im "Dumpmodus", werden die gesamten Daten des EEPROM in denChannel-ID Bereich "verschoben" ! Daher darf auf keinen Fall der Befehl "lösche alle Channel-ID" im Dumpmodus ausgeführt werden, da sonst alle Daten im EEPROM auf FFFFF gesetzt werden. Die Karte ist im diesen Fall geffft und somit unbrauchbar. Das Neupersonalisieren der 0382-83er Karten ist leider noch nicht möglich. Also ist hier höchste Vorsicht angebracht. Lieber dreimal alles kontrollieren, als durch zu schnelles Vorgehen die Karte unbrauchbar zu machen. Sicherheitshalber einen Reset ausführen bevor man die Karte weiter behandelt. Durch den Reset wird der Dumpmodus verlassen, und die Karte reagiert wieder normal auf nachfolgende Schreibaktionen. Bevor ein Schreibbefehl auf die Karte losgelassen wird, muss unbedingt überprüft werden ob eine Channel-ID nicht noch einmal vorkommt ! In unserem Fall, muss jeder String von 15-21, 37-43 und 59-66 aufgerufen werden, und auf doppelt vorhandene Channel-ID´s überprüft werden. Diese dürfen dann nicht beschrieben werden, sonst ist die Karte eventuell tot! Dasselbe gilt für Channel-ID 00 00 oder FF FF. Hat man so einen Fall kann man auf die alternativen Tables ausweichen. Durch geschicktes Ausnutzen der einzelnen Gruppen kann man die Karte ziemlich genau clonen. Bei ungünstigen Bytekonstellationen muss man mit den Gruppen geschickt spielen, und manchmal auch Dummybytes setzen, um zum Ziel zu kommen. Beschreibender Karte mit neuen Daten: Ihr braucht auf alle Fälle ein Programm, das die Signaturen berechnen kann. Programme die die Signatur timen sind nicht geeignet ! Wichtig ist, dass zwischen den Schreibsequenzen kein Reset der Karte ausgeführt werden darf ! Wird ein Reset durchgeführt muss die Einleitungssequenz wiederholt werden. Die Daten in den Testbeispielen sind die einer ACS 0382er-Karte. Die Vorgehensweise beim Clonen einer 0383er Karte ist exakt dieselbe. Beispiel 1 In unserem Beispiel wollen wir der Karte eine neue Hex-Serial verpassen. 1.Aufruf der Table 16: 01 02 04 00 00 01 16 Die Karte antwortet nun mit dieser Sequenz: ( Beispiel ! ) 01 02 00 00 04 00 00 3C 06 71 03 02 01 34 70 10 38 30 30 30 30 32 35 39 31 38 1B 53 10 45 01 00 11 11 05 05 00 17 00 00 01 00 17 00 00 01 02 7E 62 52 18 34 E6 38 4A 64 9D 70 EB 1E 4C 07 87 69 2F C5 DA 01 28 Man sieht, dass die Original Hex-Ser. in diesem String vorhanden ist. ( 7E 62 52 ) 2.Aufruf der Table 38: 01 02 04 00 00 01 38 Die Karte antwortet nun mit dieser Sequenz: ( Beispiel ! ) 01 02 00 00 04 00 00 3C 09 A6 34 B9 7C 24 39 8E 06 71 03 02 01 34 70 10 38 30 30 30 30 32 35 39 31 38 1B 53 10 45 01 00 11 11 05 05 00 17 00 00 01 00 17 00 00 01 02 7E 62 52 18 34 E6 38 4A 64 9D 70 EB 1E 71 Man sieht jetzt schön, dass hier die Hex auch vorkommt, nur Byteverschoben ( 8 Byte ! ) zum oberen String. Dasselbe gilt für Tabelle 5A usw. Da wir die neuen Daten, die wir schreiben wollen, über den Channel-ID Schreibbefehl ( 11 06 ) auf die Karte bekommen, müssen wir beim Schreiben genauso vorgehen. Die Rot markierten Bytes, sind unsere vorgegebene Channel- ID. Diese können wir nicht ändern, aber die 4 nachfolgenden Bytes (Date und Channel-ID - Timer ! ), können wir neu setzen. Immerdaran denken, die Tabellen verhalten sich genauso wie die normalen Channel-ID - Tables ! Für das Ändern der Hex-Serial ist also die Table 16 gut geeignet, da wir sie in einem Rutsch neu schreiben können. Unsere zu schreibende Channel-ID ist also 0001. Als Wunschhex, nehmen wir 11 22 33 an. Die Channel-ID wird über Prov.Gruppe 00 geschrieben. 3.Schreibstring: //Tabelleaufrufen 01 02 04 00 00 01 16 //Tabellenwert neu beschreiben 01 01 00 00 00 13 02 05 72 00 00 0d 11 06 00 01 02 11 22 33 s1 Wie oben bereits beschrieben darf die Signatur nicht getimt werden, sie muss berechnet werden. Jetzt ist die neue Hex-Serial auf der Karte. Beispiel 2 Viele von euch haben eine Karte rumliegen, die durch viele Experimente nicht mehr funktioniert, da die ATR ( die letzten 4 Byte ) auf 59 00 80 98 gesprungen ist! Die richtige ATR lautet aber 95 00 80 54 ( bei ACS 0382 - C-Karte ). Mit dem Dumpmodus, lässt sich so eine Karte wieder reaktivieren. Nachdem wir die Karte in den Dumpmodus versetzt haben, suchen wir in den Tables die Bytefolge 59. In Tabelle 17 werden wir auch schon fündig !! 1.Aufruf der Table 17 //Read Table 17 01 02 04 00 00 01 17 //Kartenantwort( Beispiel !! ) 01 02 00 00 04 00 00 3C B6 18 14 5A 41 FF 55 59 FF FF FF FF 06 66 66 66 62 7C B6 AA B8 37 30 59 AC 85 F6 FF 0C 75 87 DB 75 FA EA 06 03 FB DC 49 84 8D 08 34 B3 00 88 7A 8A 61 DE B5 4B D9 4B AF 2A 6E 46 44 11 Wir sehen hier, dass die Table 17 nicht geeignet ist, um die 59 auf 95 zukorrigieren, da sie ja in diesem Fall eine Channel-ID repräsentiert. Also sehen wir uns in den alternativen Tabellen um. ( Gruppe 2 oder 3 ) 2.Aufruf der Table 39 //ReadTable 39 ! 01 02 04 00 00 01 39 //Kartenantwort( Beispiel !! ) 01 02 00 00 04 00 00 3C 7B DC 61 7F C7 44 95 BD B6 18 14 5A 41 FF 55 59 FF FF FF FF 06 66 66 66 62 7C B6 AA B8 37 30 59 AC 85 F6 FF 0C 75 87 DB 75 FA EA 06 03 FB DC 49 84 8D 08 34 B3 00 88 7A 8A 61 DE B5 33 In Tabelle 39 ( Gruppe 2 ) sehen wir wieder die Bytefolge 59. Diese ist im Gegensatz zu Table 17 ausgezeichnet geeignet um 59 auf 95 zu korrigieren, da direkt davor eine brauchbare Channel-ID steht ( 41 FF ) 3.Schreibstring: //Tabellenwert neu beschreiben 01 01 00 00 00 13 02 05 72 00 00 0d 11 06 41 FF 55 95 FF FF s1 Anschließend den Dumpmodus mit einem Reset verlassen und die Karte ist wieder funktionstüchtig. Aufmerksame von euch werden bemerken, dass die ATR der Karte nach dem Schreiben im Dumpmodus anstatt 00 80 dann 00 81 anzeigt ! ( In unserem obigen Beispiel 95 00 81 55 ! )Das ist aber normal, und ändert sich nach einem Keyupdate wieder in 00 80. ( In unserem obigen Beispiel 95 00 80 54 ) Mit dieser Vorgehensweise kann man nahezu den gesamten EEPROM-Inhalt der Karte manipulieren. Have Phun !!! 04.06.2000 Dragonslayer |