PCSC Operation APDU Interpreter Vendor instructions MIFARE CLASSIC WRITE
April 13, 2023 at 2:39 AMMIFARE CLASSIC WRITE instruction
The MIFARE CLASSIC WRITE instructions writes data onto a Mifare Classic card (e.g. Mifare 1K or Mifare 4K). It is also suitable to write data from a Mifare Plus card, provided that the card is in Security Level 1.
The difference with the UPDATE BINARY instruction lies in the simplified implementation of the Mifare Classic authentication scheme (CRYPTO1). With UPDATE BINARY, the authentication must be performed beforehand and explicitly using the GENERAL AUTHENTICATE instruction with a key previously provided thanks to the LOAD KEY instruction.
On the other hand, MIFARE CLASSIC WRITE provides two interesting shortcuts:
- In “try all keys” mode, the authentication is either performed automatically by the SpringCore device, trying all the known key one after the other until success. This frees the application from the burden of trying every key one after the other.
- In “use this key” mode, the applications provides the (expected) value of the key within the instruction. This is the same as LOAD KEY / GENERAL AUTHENTICATE / READ BINARY but in a single call.
Command format
‘Try all keys’ mode
Field | Value | Remark |
---|---|---|
CLA | FF |
|
INS | F4 |
|
P1 | 00 |
|
P2 | Block number | |
Lc | Length of DataIn | Possible values are 10 , 30 or F0 only |
DataIn | Data to write onto the card | Can’t be empty |
Le | absent |
‘Use this key’ mode
Field | Value | Remark |
---|---|---|
CLA | FF |
|
INS | F3 |
|
P1 | 00 |
|
P2 | Block Number | |
Lc | Length of DataIn | Possible values are 10 , 30 or F0 only |
DataIn | Data to write onto the card (16, 48 or 240 bytes) Key Value (6 bytes) |
Can’t be empty |
Le | absent |
In this mode the application specifies the value of the key.
The device tries to get authenticate with the supplied key with a type B authentication. Only if it fails it tries type A authentication.
Note: this is the opposite order as for MIFARE CLASSIC READ since in most of the implementations, the A key gives read-only access and the B key gives read-write access.
About the size of the Data
This instruction is able to write either 1 block (16 bytes), 1 sector (3 blocks) or 1 large sector (15 blocks). This instruction can not cross the sector boundaries, hence the limited range for Lc.
Response
Success
Field | Value |
---|---|
SW | 9000 |
Typical status words upon error
SW | Explanation |
---|---|
6F01 |
The card has been removed / communication error |
6F04 |
Authentication failed / no suitable key |
6F0F |
Authentication OK but block not writable |