读取连续的智能卡存储卡Mifare 1k

时间:2019-06-20 12:15:08

标签: c++ visual-c++ apdu mifare winscard

我正在使用Mifare 1k卡和acr1252阅读器;我正在使用visual c++Winscard库进行开发。

我成功使用以下代码读取了单个块:

// Read binary blocks
// Class: FF
// INS: B0
// P1: 00
// P2: the starting block number
// Le: length to read (multiple of 16)
BYTE    ReadBinary[] = { 0xFF, 0xB0, 0x00, 0x00, 0x10 };

BYTE readRes[256] = { 0 };
DWORD lenRead = sizeof(readRes);

SCardTransmit(hCard, SCARD_PCI_T1, ReadBinary, sizeof(ReadBinary), NULL, readRes, &lenRead)

此函数调用返回SCARD_S_SUCCESS,并且readRes包含块值+ SW1SW2,其值为0x90 0x00(成功)

我要执行的操作是使用相同的功能读取2个连续的内存块(即扇区0的块0和块1),仅使用以下命令更改apdu命令:

ReadBinary[] = { 0xFF, 0xB0, 0x00, 0x00, 0x20 }; 
// Last byte changed to read 2 blocks

但不起作用:返回状态仍为SCARD_S_SUCCESS,但读取的数据仅包含值为SW1的{​​{1}}和SW2(错误)。

带有0x63 0x00卡的AFAIK可以读取扇区的前3个块,但是所有尝试读取多个扇区以外的内容的读取测试均会因该错误而失败。

我想念什么吗?

0 个答案:

没有答案