【发布时间】:2013-12-18 20:36:34
【问题描述】:
我正在尝试将当前从 ISO 15693 附近 RFID 卡 (TI Tag-it HF) 读取一个安全状态/块的现有 SCardTransmit() 命令 (C#) 修改为将检索所有安全状态的命令卡上有 64 个块。现有代码如下:
Byte[] sendHeader = { 0xFF, 0x30, 0x00, 0x03, 0x05, 0x01, 0x00, 0x00, 0x00, Convert.ToByte(blockNum), 0x01 };
Byte[] sendBuffer = new Byte[255]; //Send Buffer in SCardTransmit
int sendbufferlen; //Send Buffer length in SCardTransmit
SmartCardData pack = new SmartCardData();
sendHeader.CopyTo(sendBuffer, 0);
sendbufferlen = Convert.ToByte(sendHeader.Length);
SCardTransmitReceived rxBuf = SmartCardTransmit(sendBuffer, sendbufferlen);
按照我的理解,Convert.ToByte(blockNum) 前面的字节表示获取安全状态的命令,后跟有问题的块,以及要读取的块数。我看到的关于安全状态读取的唯一参考是在"Contactless Smart Card Reader Dev Guide"
中的第 10.3.4 节注意:SmartCardTransmit 负责使用正确的卡句柄和其他所需参数调用 SCardTransmit。我对表示对安全块 0 到 63 的请求的发送标头的格式更感兴趣。
【问题讨论】:
-
您使用的是什么 RFID 卡?该主题表明您正在使用某种类型的 MIFARE 卡。但是,您所指的命令(10.3.4:获取安全状态)是特定于 ISO 15693 邻近卡的命令。没有 MIFARE 卡属于这种类型。
-
我的错误,经过进一步调查,我使用的是德州仪器 Tag-it™ 卡和 OMNIKEY 非接触式智能卡读卡器。
-
话虽如此,我不确定如何将上面的字节数组转换为导致返回所有 64 个安全块的字节数组。
标签: rfid pcsc contactless-smartcard winscard iso-15693