2015-09-18 51 views
5

Quello che sto cercando di ottenere è inviare il comando APDU alla scheda MIFARE Classic 1K per cambiare i tasti A e B.Come inviare APDU alla scheda Mifare Classic 1k?

Sono stato in grado di stabilire una connessione con la scheda e utilizzare una chiave predefinita (FFFFFFFFFFFF) per leggere il blocco 0 e il blocco 1. Ho utilizzato l'applicazione Hid MifareSamples per questo.

Ora, vorrei cambiare una chiave dall'impostazione predefinita a qualcos'altro. Ho trovato una soluzione qui, a StackOverflow (Mifare Change KEY A and B), che suggerisce che devo inviare questa APDU:

nuovo una chiave = 00 11 22 33 44 55 bit di accesso non sovrascritti Key B non utilizzato (così FF FF FF FF FF FF)

=> Scrivi a Settore Trailer 00 11 22 33 44 55 FF 0F 00 FF FF FF FF FF FF FF

ho trovato un buon strumento JSmartCard Explorer, che consente di inviare APDUs alle carte. Poi ho letto le specifiche PCSC 3.2.2.1.4 Carico capitolo tasti Comando e capito che il comando dovrebbe probabilmente simile a questa:

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

Ma purtroppo strumento JSmartCard fallisce con "Comando non consentito (nessuna corrente EF)".

Cosa sto facendo male? Come posso cambiare la chiave?

+0

Hai provato a utilizzare la libreria RFIDIoT? – Ellipticat

risposta

4

Prima di tutto, le carte MIFARE Classic non usano i comandi APDU. Quindi, non si inviano APDU alla carta ma al lettore di schede (che li traduce in comandi MIFARE Classic). I comandi APDU da elaborare dal lettore in genere iniziano con il byte di classe FF.

Nelle carte MIFARE Classic, i tasti (A e B) e le condizioni di accesso per ogni settore sono memorizzati nel trailer del settore (l'ultimo blocco di ogni settore). Una carta MIFARE Classic 1K ha 16 settori con 4 blocchi ciascuno.

Quindi, se si desidera impostare le chiavi & condizioni di accesso per il settore 0, è necessario scriverle nel blocco 3 (l'ultimo blocco del settore 0). Lo standard PC/SC definisce il comando di scrittura (aggiornamento binario) per schede di memoria come:

FF D6 XXYY 10 ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 

Dove XXYY è l'indirizzo del blocco e ZZ... sono i dati da scrivere al blocco.

Il formato del rimorchio settore è (vedi this answer for further details):

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

Così per impostare

  • chiave A = 00 11 22 33 44 55
  • chiave B = 66 77 88 99 AA BB
  • accedere a bit = 787788 (il trailer del settore è scrivibile solo con la chiave B, i bit di accesso/GPB possono essere letti con la chiave A o B; i cks sono scrivibili solo con la chiave B; blocchi di dati possono essere letti con il tasto A o B)
  • GPB è impostato 69

settore 0, è necessario utilizzare il seguente comando di scrittura:

FF D6 0003 10 001122334455 787788 69 66778899AABB 

noti che non si può parzialmente aggiornare il trailer del settore, devi sempre costruire e scrivere l'intero trailer del settore.

+0

Risposta chiara e precisa! – ManuelH