2015-01-11 31 views
5

La procedura di Mifare Classic 1K èMeccanismo di chiusura di Mifare Classic 1K

  1. polling per i tag
  2. autenticazione questi tag
  3. Se l'autenticazione riuscì poi di lettura/scrittura.

Ho già completato tali procedure e inoltre leggo e scrivo dati da settori specifici.

Comando per polling per i tag è

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

comando di autenticazione è

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" è il settore 1

E Scrivi sulla Settore 1, il blocco 5 è

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}; 

Qui

(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 

è dati quelli stanno scrivendo sul blocco 5 su Settore 1.

Leggi da Sector 1 e Block 5 Comando è

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...

Il mio problema è come è possibile bloccare/rendere di sola lettura un blocco da un settore specifico?

risposta

4

Le chiavi di autenticazione e le condizioni di accesso per ciascun settore di una scheda MIFARE si trovano nell'ultimo blocco di quel settore (il settore ). È possibile aggiornare questo blocco con nuove condizioni di accesso e chiavi di autenticazione utilizzando un normale comando di scrittura.

Il trailer settore si presenta come segue:

+-----------------------------+--------------+----+-----------------------------+ 
| 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)   | 
+-----------------------------+--------------+----+-----------------------------+ 

Quindi i bit di accesso si trovano in byte 6-8 e simile a questa:

 +-------+-------+-------+-------+-------+-------+-------+-------+ 
     | 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 | 
     +-------+-------+-------+-------+-------+-------+-------+-------+ 

Dove nCx_y = non Cx_y e "C1_x, C2_x, C3_x" è la condizione di accesso per il blocco x:

  • C1_3, C2_3, C3_3: rimorchio settore (blocco 3 in questo settore)
  • C1_2, C2_2, C3_2: blocco 2 in questo settore
  • C1_1, C2_1, C3_1: blocco 1 in questo settore
  • C1_0, C2_0, C3_0: Blocco 0 in questo settore

Puoi trovare un elenco dettagliato delle condizioni di accesso possibili nella scheda tecnica MIFARE 1K: http://www.nxp.com/documents/data_sheet/MF1S503x.pdf