使用 ACR122U reader 在 mifare 1K 上写入块命令

APDU Write block commands on mifare 1K with ACR122U reader

拜托,

我正在尝试使用 ACR122U reader.

将一个简单的二进制块写入 mifare 1k 标签

我正在尝试写入块 01,5 个字节,文本:'teste' 并读回。

但是我在更新这个块时总是得到错误 6300。

有什么想法吗?

我正在使用 windows 8.1/delphi xe8。

我的日志是:

SCardEstablishContext succeeded.
Card State changed in ACS ACR122U PICC Interface 0 to available
New reader found: ACS ACR122U PICC Interface 0
Card inserted in ACS ACR122U PICC Interface 0
ATR = 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A
SCardConnect (shared) succeeded.
Active Protocol: T=1
ISO 14443 A, Part3 Card Type: Mifare Standard 1K is detected
Sending APDU to card: FF 82 00 01 06 FF FF FF FF FF FF
SCardTransmit succeeded.
Card response status word: 9000 (OK)
Sending APDU to card: FF 86 00 00 05 01 00 01 60 01
SCardTransmit succeeded.
Card response status word: 9000 (OK)
Sending APDU to card: FF 86 00 00 05 01 00 01 60 01
SCardTransmit succeeded.
Card response status word: 9000 (OK)
Sending APDU to card: FF D6 00 01 05 74 65 73 74 65
SCardTransmit succeeded.
Card response status word: 6300 (State of non-volatile memory changed.)

reading the documentation.

很容易解决这个问题

您正在写入一个块,您必须提供完整的块信息。 Lc 的唯一选项是 x04x10 - 四个字节或十六个字节。对于 Mifare 1K,很明显您需要提供 16 个字节。您只有 5 个字节的数据,所以用零填充其余部分。

|  CMD   | block1 | 16 bytes | data ... 
 FF D6 00    01       10       74 65 73 74 65 00 00 00 00 00 00 00 00 00 00 00