Delphi 带ACR122U读卡器的mifare 1K上的APDU写块命令

Delphi 带ACR122U读卡器的mifare 1K上的APDU写块命令,delphi,nfc,mifare,apdu,Delphi,Nfc,Mifare,Apdu,请 我正在尝试使用ACR122U读卡器将一个简单的二进制块写入mifare 1k标记 我试图写入块01,5字节,文本:'teste',并读回它 但是当更新这个块时,我总是得到一个错误6300 有什么想法吗 我使用的是windows8.1/delphixe8 我的日志是: SCardEstablishContext succeeded. Card State changed in ACS ACR122U PICC Interface 0 to available New reader found:

我正在尝试使用ACR122U读卡器将一个简单的二进制块写入mifare 1k标记

我试图写入块01,5字节,文本:'teste',并读回它

但是当更新这个块时,我总是得到一个错误6300

有什么想法吗

我使用的是windows8.1/delphixe8

我的日志是:

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

这很容易通过以下方法解决:

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

| CMD | block1 | 16字节|数据。。。
FF D6 00 01 10 74 65 73 74 65 00 00 00 00

这很容易通过

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

| CMD | block1 | 16字节|数据。。。
FF D6 00 01 10 74 65 73 74 65 00 00 00 00

非常感谢,它解决了我的问题。我读了很多次文档,但我不认为问题出在它上面。@LuizAlves很高兴它奏效了。我从来没有用过这些东西中的任何一个-无法确定地测试它。非常感谢,它解决了我的问题。我读了很多次文档,但我不认为问题出在它上面。@LuizAlves很高兴它奏效了。我从来没有用过这些东西中的任何一个——无法确定地测试它。