【发布时间】:2018-08-15 07:13:06
【问题描述】:
我正在创建一个使用 ACS ACR1255 reader/writer 读取/写入 NFC 标签的 Android 应用。
我可以使用这个 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 上的表 12,6A 部分表示“P1-P2 参数错误(SW2 中的进一步限定,参见表 18)”。但是,表 18 显示 81 部分表示“不支持功能”。
所以我不确定出了什么问题。有人可以为我澄清问题所在。我需要什么命令才能成功写入标签?
注意 - 有问题的标签是 MIFARE Ultralight EV1 MFOUL21。 (而且我可以使用 Android 的 MifareUltralight 类很好地写入它。)
【问题讨论】:
-
请注意,实际上您并没有使用 APDU 来写入卡。您正在使用 APDU 来控制读卡器,并告诉他向卡发送 D0/D6 指令。 MIFARE Ultralight 不支持 APDU,只支持低级命令。