Esta seção descreve os requisitos gerais do conjunto de comandos da APDU para cartões não compatíveis com ISO14443-4 (conhecidos como cartões de armazenamento).
General-Authenticate command
O comando General-Authenticate é usado para executar a sequência de autenticação em um cartão MIFARE. Esse comando só é aplicável para cartões MIFARE Mini, Classic 1k e 4k.
| Command |
Class |
INS |
P1 |
P2 |
Lc |
Data In |
| General-Authenticate |
0xFF |
0x86 |
0x00 |
0x00 |
0x01 |
Endereço MSB, Endereço LSB, Tipo de Chave A ou B, Número da Chave |
Get-Data command
O comando Get-Data é usado para recuperar informações da marca/cartão NFC sem contato.
| Command |
Class |
INS |
P1 |
P2 |
L2 |
| Get-Data |
0xFF |
0xCA |
0x00: Número de série do cartão (ISO14443-A: UID, ISO14443-B: PUPI, Felica: IDm, Jewel: RID)
0x01: bytes históricos do cartão (Tipo A: bytes históricos de ATR, Tipo B: resposta ATTRIB) |
0x00 |
0x00 |
| Response |
| Saída de dados, SW1, SW2 |
Load-Key command
O comando Load-Key é usado para armazenar chaves MIFARE no driver. Esse comando só é aplicável para cartões MIFARE Mini, Classic 1k e 4k.
| Command |
Class |
INS |
P1 |
P2 |
Lc |
Data In |
| Load-Key |
0xFF |
0x82 |
Key Structure |
Key Number |
0x6 |
Key Value |
Comando Gerenciar Sessão
A implementação desse comando deve ser de acordo com a especificação do PCSC.
| Command |
Class |
INS |
P1 |
P2 |
Lc |
Data In |
| General Authenticate |
0xFF |
0xC2 |
0x00 |
0x00 |
Variable |
Objeto de dados TLV |
A seguir, são necessários objetos de dados TLV para serem compatíveis com o driver:
| Tag |
Data Object |
| 0x80 |
Objeto de dados de versão |
| 0x81 |
Iniciar Sessão Transparente |
| 0x82 |
Encerrar Sessão Transparente |
Read-Binary command
O comando Read-Binary é usado para ler dados da marca/cartão NFC sem contato. O comando é aplicável somente para cartões de armazenamento (cartões MIFARE Classic/UL, Felica, ISO15693 e Jewel/Topaz).
| Command |
Class |
INS |
P1 |
P2 |
Lc |
Data In |
Li |
| Read-Binary |
0xFF |
0xB0 |
Address MSB |
Address LSB |
Comprimento dos dados em |
Data |
Length expected |
Read-Binary família MIFARE
| Command |
CLA |
INS |
P1 |
P2 |
Le |
| UL READ 16 |
0xFF |
0xB0 |
0x00 |
0x00 0x15 |
0x10 |
| CL 1k READ 16 |
0xFF |
0xB0 |
0x00 |
0x00 0x3F |
0x10 |
| CL 4k READ 16 |
0xFF |
0xB0 |
0x00 |
0x00 0xFF |
0x10 |
família Read-Binary Jewel
| Command |
CLA |
INS |
P1 |
P2 |
Le |
| READ ALL |
0xFF |
0xB0 |
0x00 |
0x00 |
0x00 |
| RID |
0xFF |
0xB0 |
0x00 |
0x00 |
0x06 |
| READ |
0xFF |
0xB0 |
Block No |
Block Offset |
0x01 |
| READ 8 |
0xFF |
0xB0 |
Block No |
0x00 |
0x08 |
| READ SEG |
0xFF |
0xB0 |
0x00 |
Segment Addr |
0x80 |
Read-Binary família Felica
| Command |
CLA |
INS |
P1 |
P2 |
Lc |
Data In |
| CHECK |
0xFF |
0xB0 |
0x00 |
0x00 |
Comprimento dos dados em |
Número de serviço, número de blocos, lista de blocos |
Família ISO 15693
| Command |
CLA |
INS |
P1 |
P2 |
Le |
| READ |
0xFF |
0xB0 |
Block Number |
0x00 |
0x04 |
Resposta da família ISO 15693
| Response |
| Saída de dados, SW1, SW2 |
Comando transparent exchange
| Command |
Class |
INS |
P1 |
P2 |
Lc |
Data In |
| General Authenticate |
0xFF |
0xC2 |
0x00 |
0x01 |
Variable |
Objeto de dados TLV |
A seguir estão os objetos de dados TLV necessários para que o Transparent Exchange Command tenha suporte do driver para troca transparente de comandos em cartões de armazenamento:
| Tag |
Data Object |
| 0x95 |
Transceive – Transmitir e receber |
| 0x5F46 |
Timer |
Update-Binary command
O comando Update-Binary é usado para gravar dados na marca/cartão NFC sem contato. O comando é aplicável somente para cartões de armazenamento (cartões MIFARE Classic/UL, Felica, ISO15693 e Jewel/Topaz). O formato da solicitação e da resposta para o comando é conforme descrito abaixo.
| Command |
Class |
INS |
P1 |
P2 |
Lc |
Data In |
| Update-Binary |
0xFF |
0xD6 |
Address MSB |
Address LSB |
Comprimento dos dados em |
Data |
Update-Binary família MIFARE
| Command |
CLA |
INS |
P1 |
P2 |
Le |
| UL WRITE 4 |
0xFF |
0xD6 |
0x00 |
0x00 0x15 |
0x04 |
| CL 1k WRITE 16 |
0xFF |
0xD6 |
0x00 |
0x00 0x3F |
0x10 |
| CL 4k WRITE 16 |
0xFF |
0xB0 |
0x00 |
0x00 0xFF |
0x10 |
família Update-Binary Jewel
| Command |
CLA |
INS |
P1 |
P2 |
Le |
| WRITE1-E |
0xFF |
0xD6 |
Block Number |
Block Offset |
0x01 |
| WRITE8-E |
0xFF |
0xD6 |
Block Number |
0x00 |
0x08 |
Update-Binary família Felica
| Command |
CLA |
INS |
P1 |
P2 |
Le |
Data In |
| UPDATE |
0xFF |
0xD6 |
0x00 |
0x00 |
Comprimento dos dados em |
Número de serviços, número de blocos, lista de blocos |
| Command |
CLA |
INS |
P1 |
P2 |
Le |
| WRITE |
0xFF |
0xD6 |
Block Number |
0x00 |
0x04 |