APDU 写命令导致 6A 81
APDU write command resulting in 6A 81
我正在创建一个 Android 应用程序,它使用 ACS ACR1255 reader/writer 读取/写入 NFC 标签。
我可以使用此 APDU 命令(读取 16 个字节,从块 04h 开始)很好地读取它:
String APDU_COMMAND_READ_16_BYTES =
"FF" // Class: FFh
+ " B0" // Instruction: Read Binary Blocks
+ " 00" // P1: 00h
+ " 04" // P2: Block Number (the starting block)
+ " 10"; // Le: Number of bytes to read (10h = 16 bytes = 1 block)
但是,我尝试写入卡时运气不佳。当我尝试这个命令时:
String APDU_COMMAND_WRITE_16_BYTES =
"FF" // Class: FFh
+ " D0" // Instruction: Write Binary Blocks
+ " 00" // P1: 00h
+ " 04" // P2: Block Number (the starting block)
+ " 10" // Lc: Length of data field (10h = 16 bytes = 1 block)
+ " 01 02 03 04 05 06 07 08 01 02 03 04 05 06 07 08" // String of data units to be written
+ ""; // Le: Empty
...我收到此回复:6A 81
。
根据 this page 上的 table 12,6A
部分表示 "Wrong parameter(s) P1-P2 (further qualification in SW2, see table 18)"。但是,table 18 表示 81
部分表示 "Function not supported".
所以我不确定哪里出了问题。有人可以为我澄清问题是什么。我需要什么命令才能成功写入标签?
注意 - 有问题的标签是 MIFARE Ultralight EV1 MFOUL21。 (而且我可以使用 Android 的 MifareUltralight
class 给它写信。)
我刚刚在 Standard Instructions table 中找到了解决方案。 table 表明除了 WRITE BINARY (D0
) 指令外,还有一条 UPDATE BINARY (D6
) 指令。
我的标签已经在我试图写入的块上有数据,所以我需要改用 UPDATE BINARY。所以只需将我的 D0
更改为 D6
即可解决问题。
更新
这些资源也可以帮助其他 APDU 新手:
我正在创建一个 Android 应用程序,它使用 ACS ACR1255 reader/writer 读取/写入 NFC 标签。
我可以使用此 APDU 命令(读取 16 个字节,从块 04h 开始)很好地读取它:
String APDU_COMMAND_READ_16_BYTES =
"FF" // Class: FFh
+ " B0" // Instruction: Read Binary Blocks
+ " 00" // P1: 00h
+ " 04" // P2: Block Number (the starting block)
+ " 10"; // Le: Number of bytes to read (10h = 16 bytes = 1 block)
但是,我尝试写入卡时运气不佳。当我尝试这个命令时:
String APDU_COMMAND_WRITE_16_BYTES =
"FF" // Class: FFh
+ " D0" // Instruction: Write Binary Blocks
+ " 00" // P1: 00h
+ " 04" // P2: Block Number (the starting block)
+ " 10" // Lc: Length of data field (10h = 16 bytes = 1 block)
+ " 01 02 03 04 05 06 07 08 01 02 03 04 05 06 07 08" // String of data units to be written
+ ""; // Le: Empty
...我收到此回复:6A 81
。
根据 this page 上的 table 12,6A
部分表示 "Wrong parameter(s) P1-P2 (further qualification in SW2, see table 18)"。但是,table 18 表示 81
部分表示 "Function not supported".
所以我不确定哪里出了问题。有人可以为我澄清问题是什么。我需要什么命令才能成功写入标签?
注意 - 有问题的标签是 MIFARE Ultralight EV1 MFOUL21。 (而且我可以使用 Android 的 MifareUltralight
class 给它写信。)
我刚刚在 Standard Instructions table 中找到了解决方案。 table 表明除了 WRITE BINARY (D0
) 指令外,还有一条 UPDATE BINARY (D6
) 指令。
我的标签已经在我试图写入的块上有数据,所以我需要改用 UPDATE BINARY。所以只需将我的 D0
更改为 D6
即可解决问题。
更新
这些资源也可以帮助其他 APDU 新手: