Mifare 1K 分两块写入数据

问题描述 投票:0回答:1

我正在使用 APDU 命令来写入和读取 RFID 卡。我可以从块号 2 读取并写入 16 字节的数据,但在写入更长的数据时遇到问题。我怎样才能做到这一点?我尝试过分两块写,但没成功。

这就是我在编写操作中实现代码的方式:

// write...
//


if (nres == SM_SUCCESS)// &&
//bAPDURes )
{
nlenrcv = sizeof(btRcv);
nlencmd = 0;

btCmd[nlencmd++] = 0xFF; // CLA
btCmd[nlencmd++] = 0xD6; // INS
btCmd[nlencmd++] = 0x00; // P1, Mifare Block Number MSB, for mifare it is always 0x00
btCmd[nlencmd++] = 0x04; // P2, Mifare Block Number LSB
btCmd[nlencmd++] = 32; // Lc, Data Length
memcpy(btCmd + nlencmd, btWrite, 32);
nlencmd += 32;
nres = m_Smart.RFTransmit(DEV_INTERNALRF, nlencmd, btCmd, (DWORD*)&nlenrcv, btRcv);
c++ nfc rfid apdu
1个回答
1
投票

您需要单独发送每个块。 Mifare Classic

Write
命令一次只能写入一个块。

请参阅卡数据表

第 12.3 节

因此,RF 将前 16 个字节的写命令发送到第一个块,并将后 16 个字节的写命令 RF 发送到下一个块。

© www.soinside.com 2019 - 2024. All rights reserved.