2015-01-11 17 views
5

Das Verfahren von Mifare Classic 1K istVerriegelung von Mifare Classic 1K

  1. Polling für Tags
  2. diese Tags Authentifizieren
  3. Wenn die Authentifizierung dann schreiben lesen/succeded.

Ich habe diese Prozeduren bereits abgeschlossen und auch Daten aus bestimmten Sektoren gelesen und geschrieben.

Befehl für Polling für Tags ist

new byte[] { (byte) 0xFF, (byte) 0x00, (byte) 0x00, 
       (byte) 0x00, (byte) 0x04, (byte) 0xD4, (byte) 0x4A, 
       (byte) 0x01, (byte) 0x00 } 

Authentication Befehl wird

new byte[] { (byte) 0xFF, (byte) 0x86, (byte) 0x00, 
       (byte) 0x00, (byte) 0x05, (byte) 0x01,(byte) 0x00, (byte) 0x04, 
            (byte) 0x60,(byte) 0x00 }; 

Here "(Byte) 0x01" der Sektor 1

Und auf schreiben Sektor 1, Block 5 ist

new byte[] { (byte) 0xFF, (byte) 0x00, (byte) 0x00,(byte) 0x00, (byte) 0x15, (byte) 0xD4, 
      (byte) 0x40,(byte) 0x01, (byte) 0xA0, (byte) 0x05,(byte) 0x01, (byte) 0x02, 
      (byte) 0x03,(byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,(byte) 0x08, 
      (byte) 0x09,(byte) 0x0A,(byte) 0x0B, (byte) 0x0C, (byte) 0x0D,(byte) 0x0E, 
      (byte) 0x0F, (byte) 0x10}; 

Hier

(byte) 0x01, (byte) 0x02, (byte) 0x03,(byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,(byte) 0x08,(byte) 0x09,(byte) 0x0A,(byte) 0x0B, (byte) 0x0C, (byte) 0x0D,(byte) 0x0E,(byte) 0x0F,(byte) 0x10 

sind Daten, die auf Block 5 auf Sector schreiben 1.

Lesen von Sektor 1 und Block 5 Befehl wird

new byte[] { (byte) 0xFF, (byte) 0x00, (byte) 0x00, 
       (byte) 0x00, (byte) 0x05, (byte) 0xD4, (byte) 0x40, 
       (byte) 0x01, (byte) 0x30, (byte) 0x05 }; 

My Related Complete Code is here...

Mein Problem ist, wie kann ich einen Block von einem bestimmten Sektor "sperren/nur lesen"?

Antwort

4

Die Authentifizierungsschlüssel und die Zugriffsbedingungen für jeden Sektor einer MIFARE-Karte befinden sich im letzten Block dieses Sektors (Sektortrailer). Sie können diesen Block mit neuen Zugriffsbedingungen und Authentifizierungsschlüsseln mithilfe eines regulären Schreibbefehls aktualisieren.

Der Sektor Anhänger wie folgt aussieht:

+-----------------------------+--------------+----+-----------------------------+ 
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
+-----------------------------+--------------+----+-----------------------------+ 
|   Key A   | Access Bits | GP |   Key B   | 
|   (6 bytes)   | (3 bytes) | B |   (6 bytes)   | 
+-----------------------------+--------------+----+-----------------------------+ 

So die Zugriffs Bits in Byte angeordnet sind 6-8 und sehen wie folgt aus:

 +-------+-------+-------+-------+-------+-------+-------+-------+ 
     | Bit 0 | Bit 1 | Bit 2 | Bit 3 | Bit 4 | Bit 5 | Bit 6 | Bit 7 | 
     +-------+-------+-------+-------+-------+-------+-------+-------+ 
Byte 6: | nC2_3 | nC2_2 | nC2_1 | nC2_0 | nC1_3 | nC1_2 | nC1_1 | nC1_0 | 
     +-------+-------+-------+-------+-------+-------+-------+-------+ 
Byte 7: | C1_3 | C1_2 | C1_1 | C1_0 | nC3_3 | nC3_2 | nC3_1 | nC3_0 | 
     +-------+-------+-------+-------+-------+-------+-------+-------+ 
Byte 8: | C3_3 | C3_2 | C3_1 | C3_0 | C2_3 | C2_2 | C2_1 | C2_0 | 
     +-------+-------+-------+-------+-------+-------+-------+-------+ 

Wo nCx_y = nicht Cx_y und „C1_x, C2_x, C3_x“ist die Zugriffsbedingung für den Block x:

  • C1-3, C2_3, C3_3: sector Anhänger (Block 3 in diesem Bereich)
  • C1_2, C2_2, C3_2: Block 2 in diesem Sektor
  • C1_1, C2_1, C3_1: Block 1 in diesem Sektor
  • C1_0, C2_0, C3_0: Block 0 in diesem Sektor

Sie können Eine detaillierte Liste der möglichen Zugangsbedingungen finden Sie im MIFARE 1K Datenblatt: http://www.nxp.com/documents/data_sheet/MF1S503x.pdf

Verwandte Themen