2015-09-18 22 views
5

Was ich versuche zu erreichen, ist, APDU Befehl zu MIFARE Classic 1K Karte zu senden, um seine A und B Schlüssel zu ändern.Wie schicke ich APDU zu Mifare Classic 1k Karte?

Ich konnte eine Verbindung mit der Karte herstellen und einen Standardschlüssel (FFFFFFFFFFFF) verwenden, um Block 0 und Block 1 zu lesen. Ich verwendete HID MifareSamples-Anwendung für es.

Jetzt möchte ich einen Schlüssel von Standard auf etwas anderes ändern. Ich fand hier eine Lösung, bei Stackoverflow (Mifare Change KEY A and B) was darauf schließen lässt, dass ich dieses APDU senden:

Neuer Schlüssel A = 00 11 22 33 44 55 Zugang Bits nicht Schlüssel B nicht verwendet (so FF FF überschrieben FF FF FF FF)

=> Schreibe Sector Trailer 00 11 22 33 44 55 FF 0F 00 FF FF FF FF FF FF FF

fand ich ein gutes Werkzeug JSmartCard Explorer, die Sie APDUs senden können zu Karten. Dann lese ich PCSC Spezifikationen 3.2.2.1.4 Last Tasten Befehl Kapitel und verstand, dass der Befehl wahrscheinlich sollte wie folgt aussehen:

FF 82 00 00 18 00 11 22 33 44 55 FF 0F 00 FF FF FF FF FF FF FF 

Aber leider JSmartCard Werkzeug nicht mit „Befehl nicht erlaubt (keine aktuelle EF)“.

Was mache ich falsch? Wie kann ich den Schlüssel ändern?

+0

Haben Sie versucht, die RFIDIoT-Bibliothek zu verwenden? – Ellipticat

Antwort

4

Zunächst verwenden MIFARE Classic-Karten keine APDU-Befehle. Daher senden Sie keine APDUs an die Karte, sondern an den Kartenleser (der sie in MIFARE Classic-Befehle übersetzt). APDU-Befehle, die vom Leser verarbeitet werden sollen, beginnen typischerweise mit dem Klassenbyte FF.

In MIFARE Classic-Karten werden die Schlüssel (A und B) und die Zugriffsbedingungen für jeden Sektor im Sektortrailer (der letzte Block jedes Sektors) gespeichert. Eine MIFARE Classic 1K-Karte hat 16 Sektoren mit je 4 Blöcken.

Also, wenn Sie die Schlüssel & Zugriffsbedingungen für Sektor 0 setzen möchten, müssten Sie sie in Block 3 (der letzte Block von Sektor 0) schreiben. Die PC/SC-Standard definiert den Schreibbefehl (UPDATE BINARY) für Speicherkarten wie:

FF D6 XXYY 10 ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 

Wo XXYY die Blockadresse und ZZ... sind die Daten in den Block geschrieben werden.

Das Format des Sektors Anhängers (siehe this answer for further details):

<key A> | access bits | general purpose byte | <key B> 

Um also

  • Schlüssel A = 00 11 22 33 44 55
  • Schlüssel B = 66 77 88 99 AA BB
  • Zugriffs Bits gesetzt = 787788 (Sektortrailer ist nur mit Schlüssel B beschreibbar; Zugriffsbits/GPB können mit Schlüssel A oder B gelesen werden; Datenblo cks sind nur mit Schlüssel B beschreibbar; Datenblöcke mit der Taste A oder B)
  • GPB ist auf 69

für Sektor 0 gelesen werden, würden Sie folgenden Schreibbefehl verwenden:

FF D6 0003 10 001122334455 787788 69 66778899AABB 

Beachten Sie, dass Sie nicht teilweise aktualisieren Im Sektor Trailer musst du immer den ganzen Sektortrailer konstruieren und schreiben.

+0

Klare und präzise Antwort! – ManuelH