APDU写命令导致6A 81

时间:2018-08-14 22:45:54

标签: android apdu

我正在创建一个使用ACS ACR1255 reader/writer来读取/写入NFC标签的Android应用。

我可以使用此APDU命令(从块04h开始读取16个字节)来从中读取数据:

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部分表示“不支持的功能”

所以我不确定到底有什么问题。有人可以为我澄清问题是什么。成功写入标签需要什么命令?

NB-有问题的标签是MIFARE Ultralight EV1 MFOUL21。 (而且我可以使用Android的MifareUltralight类来写它。)

1 个答案:

答案 0 :(得分:2)

我刚刚在此Standard Instructions table中找到了解决方案。该表显示,除了WRITE BINARY(D0)指令外,还有一条UPDATE BINARY(D6)指令。

我的标签已经有我要写入的块上的数据,因此我需要使用UPDATE BINARY。因此,只需将我的D0更改为D6就可以解决问题。

更新

这些资源还可以帮助其他新手使用APDU: