![]() |
Wunsch Hex bei ACS 1.2 Karten | ![]() |
Personalisieren einer ACS V1.2 - Karte mit Wunschhex Reaktivierung einer genullten ACS V1.2 - Card: Die Reaktivierung wird hier in Einzelschritten beschrieben, da man alle Schritte sofort auf Funktion überprüfen kann, und grobe Fehler damit vermieden werden können. Als Programmersoftware ist der Cardwizzard ( hier verwendet: Version 1115fix ) am besten geeignet. In der Konfiguration des Cardwizzard unbedingt die Option "Details bei Signierung" aktivieren, da sonst der Signierungsvorgang nicht vollständig protokolliert wird! Bsp. für eine C0002 ACS 1.2 Karte: Schritt 1: //Karte initialisieren 01 00 05 00 00 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 s1 Dieser String initialisiert die Karte, entfernt einen eventuell noch vorhandenen Schreibschutz und setzt den EEPROM-Inhalt auf FFFFF. Nachdem dieser String abgearbeitet wurde bekommen wir die ungewöhnliche Antwort "Sig nicht gefunden" von Cardwizzard. Keine Angst es ist alles in Ordnung. Cardwizzard ist nicht darauf vorbereitet die ungewöhnlichen Kartenantworten auszuwerten. Deshalb schauen wir uns jetzt das Protokoll an. 01 00 33 00 05 00 00 00 08 = Signatur nicht gefunden 01 00 32 00 05 00 00 00 09 = Signatur gefunden Wenn ihr also die 01 00 32 00 05 00 00 00 09 Kartenantwort in der Liste findet, hat es mit dem String geklappt. Für die weiteren Programmierschritte gilt die gleiche Vorgehensweise. Schritt 2: //ASCII schreiben ( x = Ascii-Serial der Karte ) 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 //Schreibschutz setzen 01 04 01 00 00 00 r0 Dieser String erledigt gleich 3 Aufgaben hintereinander. Er schreibt die ASCII-Serial der Karte neu und setzt den Schreibschutz der Karte. Anschließend wird ein Reset-Befehl an die Karte geschickt (r0). Zum überprüfen ob es geklappt hat werden mit Cardwizzard einfach die Kartendaten eingelesen. Cardwizzard muss nun die neue Ascii-Serial Nummer anzeigen. Jetzt überprüfen wir noch ob der Schreibschutz der Karte gesetzt wurde. Dazu tippen wir im Expertenmodus von Cardwizzard diesen String ins Eingabefeld ein: 01 04 01 00 00 00 Nach Senden dieses Strings muss im Protokoll die Kartenantwort 01 04 42 00 01 00 00 00 79 stehen. Ist das nicht der Fall, hat es mit dem Schreibschutz setzen nicht geklappt, und ihr müsst Schritt 2 wiederholen, da der Schreibschutz für die Reprogrammierung der Karte gesetzt sein muss ! Schritt 3: //Progmode06 Schritt 1 init 01 06 00 00 00 00 Die Karte antwortet mit der Ascii-Serial und nachfolgenden Bytes, die meistens 00 oder FF sind. Interessant sind für uns die 5 Byte nach der Ascii-Serial. Wir müssen uns die letzten 2Byte des 5 Byte Blockes merken oder notieren. //progmode06_1 ( x = Ascii-Serial der Karte ) ( y = Key ) 01 06 01 00 00 15 3x 3x 3x 3x 3x 3x 3x 3x yy yy yy yy yy yy yy yy s1 01 06 62 00 01 00 00 00 5B = Sig nicht gefunden 01 06 61 00 01 00 00 00 58 = Sig gefunden Hier könnt ihr bei yy, einen beliebigen Key eintragen. Es ist nur wichtig, in den nachfolgenden Strings den selben Key zu benutzen. //Buffer Init 01 02 07 00 00 00 //Buffer auslesen 01 02 08 00 00 00 Mit diesen zwei Befehlen könnt ihr den Buffer auslesen und nachsehen wie der eingegebene Key verschlüsselt wurde ( Beachte, die letzten 6 Byte sind die Signatur und das Checkbyte ! ). Wir schreiben uns nun, diesen verschlüsselten Key auf ( 8 Byte ). Die ersten beiden Bytes dieses Key, müssen wir nun mit den 2 Bytes die wir schon notiert haben XOR verknüpfen. yy1 yy2 yy3 yy4 yy5 yy6 yy7 yy8 yy1 XOR Byte1 yy2 XOR Byte2 Jetzt haben wir einen 10 Byte Key, das ist unser "temporärer" HMK ! //progmode06_2 ( yy = hier gewählten Key eintragen ) 01 06 02 00 00 0d yy yy yy yy yy yy yy yy s1 01 06 00 61 02 00 00 00 5B = Sig nicht gefunden 01 06 63 00 02 00 00 00 59 = Sig gefunden Während des Programmiermodus darf kein Reset an die Karte gesendet werden da der Modus sofort abgebrochen wird, und mit den oberen Strings dann wieder eingeleitet werden muss ! Schritt 4: //Cardfile1 schreiben 01 06 06 0e 02 45 8C 8F 5D AB 02 B2 E1 F5 2C 5A 4B 16 21 E3 BC BC 45 C0 66 4D 97 03 E5 38 3E 4F 06 B1 70 13 86 72 77 52 D5 25 19 72 7F E3 33 09 47 B4 AC 4D 4E A0 20 96 07 5F 42 CC 99 4B 99 B1 89 7F 77 E3 3F 97 s1 01 06 00 61 06 0E 02 00 53 = Sig nicht gefunden 01 06 67 00 06 0E 02 00 55 = Sig gefunden //Cardfile 2 schreiben 01 06 06 0e 03 45 C8 34 7D 63 20 24 78 54 DC E1 7D ED 29 66 D1 2B ED 08 A8 54 04 0C 83 5B 5A CE 7A 33 E6 A2 BC 14 DB 15 85 EA 9D 50 A1 F6 9A 11 1F D3 C1 92 12 4E 01 D0 CD AA 8B B6 FE 4B DB 34 D5 84 38 C9 1D 4D s1 01 06 00 61 06 0E 03 00 52 = Sig nicht gefunden 01 06 67 00 06 0E 03 00 54 = Sig gefunden Diese beiden Strings schreiben die Cardfiles neu auf die Karte. Wenn ihr anschließend überprüft ob sie geschrieben wurden, stellt ihr fest, dass die Daten auf der Karte völlig anders sind als in den oberen Strings. Hier fließt also der Algo in die Programmierung ein. Das ist aber nicht schlimm da es für die Funktion der Karte egal ist welche Daten geschrieben wurden. Wenn ihr aber die Cardfiles korrekt schreiben wollt, müsst ihr die Cardfiledaten 8 Byteweise mit dem "temporären" HMK verschlüsseln. Dazu braucht ein Berechnungsprogramm. Schritt 5: //Schreibe Hex ( xx = Hex-Serial, yy = Hexmasterkey ) 01 06 03 00 00 2A 00 17 00 00 01 00 17 00 00 01 xx xx xx xx xx xx yy yy yy yy yy yy yy yy yy yy 00 17 00 00 01 02 5A 41 FF 55 95 s1 01 06 00 61 03 00 00 00 5A = Sig nicht gefunden 01 06 64 00 03 00 00 00 5F = Sig gefunden In unserem Beispiel wollen wir die Hex.Ser. 11 22 33 und den Hexmaster 99 88 77 66 55 44 33 22 11 00 auf die Karte schreiben. Da wir die Daten 8 Byteweise verschlüsseln, müssen wir über unseren "temporären HMK" mit einem Keyberechnungsproggie die Daten verschlüsseln. In unserem Beispiel müssen wir also die Bytes 02 00 11 22 33 18 99 88 verschlüsseln, und in den oberen String eintragen. Wie wir sehen, haben wir damit auch schon 2 Byte des HMK´s verschlüsselt. Nun müssen wir die restlichen 8 Byte des HMK´s genauso wie vorhin verschlüsseln ( 77 66 55 44 33 22 11 00 ), und in den oberen String eintragen. Nach dem Schreiben des Strings ist die gewünschte Hex-Serial und gewüschter HMK auf der Karte ! Schritt 6: //Schreibe Cardtype 01 06 04 00 00 29 03 03 99 17 01 17 02 17 03 17 04 07 41 47 45 52 10 10 10 10 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 s1 01 06 00 61 04 00 00 00 5D = Sig nicht gefunden 01 06 65 00 04 00 00 00 59 = Sig gefunden Bevor ihr diesen String schreibt kontrolliert nochmal genau ob die Hex-Serial auf eurer Karte O.K. ist. Bis jetzt könnt ihr jederzeit mit dem Programmieren von vorne anfangen. Wenn dieser String jedoch geschrieben ist, könnt ihr die schon geschriebenen Daten nicht mehr verändern, und müsst eure Karte wieder neu nullen, um diese Daten wieder ändern zu können. Schritt 7: //Abschluß von Progmode06 01 06 08 00 00 05 s1 01 06 00 61 08 00 00 00 51 = Sig nicht gefunden 01 06 69 00 08 00 00 00 59 = Sig gefunden Dieser String beendet den Prog06-Modus! Schritt 8: //Progmode03_1 //x = Hier die ASCI-Ser.Nr. einfügen, yy = Hier gewählten Key eintragen //reset-card r0 01 03 01 00 00 15 3x 3x 3x 3x 3x 3x 3x 3x yy yy yy yy yy yy yy yy s1 //Progmode03_2 ( yy = hier gewählten Key eintragen ) 01 03 02 00 00 0D yy yy yy yy yy yy yy yy s1 Nach einem Kartenreset wird Progmode03 mit den oberen zwei Strings eingeleitet. Schritt 9: //Schreibe Provider00 //xx xx xx = Hier ProviderID einfügen //yy yy = Hier Date einfügen 01 03 07 00 00 3B 00 xx xx xx 00 00 00 00 00 00 yy yy 00 00 00 00 00 00 00 00 00 00 00 00 A5 F5 6C 03 B7 6D 88 95 FF F1 01 E1 E0 DF AE 8A 00 00 FF FF FF FF FF FF FF FF 00 00 00 55 s1 01 03 00 61 07 00 00 00 5B = Sig nicht gefunden 01 03 68 00 07 00 00 00 52 = Sig gefunden Der String schreibt die Daten für Prov.00. Schritt 10: //Schreibe Provider10 //xx xx xx = Hier ProviderID einfügen //yy yy = Hier Date einfügen 01 03 07 00 01 3B 11 xx xx xx 00 00 00 00 00 00 yy yy 00 00 00 00 00 00 00 00 00 00 00 00 0A F5 6C 03 B7 6D 88 95 FF F1 01 E1 E0 DF AE 8A 00 00 00 00 00 00 00 00 00 00 00 00 00 55 s1 01 03 00 61 07 00 01 00 5A = Sig nicht gefunden 01 03 68 00 07 00 01 00 53 = Sig gefunden Der String schreibt die Daten für Prov.10. Schritt 11: //Schreibe CoCo 01 03 0B 00 01 1C 41 55 54 00 32 00 64 00 14 00 00 00 00 54 30 30 30 20 20 30 32 38 4B s1 01 03 00 61 0B 00 01 00 56 = Sig nicht gefunden 01 03 A3 00 0B 00 01 00 94 = Sig gefunden Hier wird die Länderkennung geschrieben. Schritt 12: //Abschluß von Progmode03 01 03 0C 00 00 05 s1 01 03 00 61 0C 00 00 00 50 = Sig nicht gefunden 01 03 69 00 0C 00 00 00 58 = Sig gefunden Jetzt ist es geschafft! Die Karte ist jetzt programmiert und müsste jetzt wieder eine Sig auf 01 01 ... Befehle liefern. Überprüft mit Standartbefehlen ( CoCo-schreiben, Date ändern usw. ) ob die Karte diese Befehle annimmt und eine gültige Sig liefert. Ist das o.K. ist die Karte bereit neue Keys anzunehmen. Have Phun!!! 04.06.2000 Dragonslayer
|
![]() |