我正在发送一个更新二进制命令来写入卡的内存,然后我想检查块是否正确写入。因此,我正在发送一个读取二进制命令并比较值。
(C - 命令,R - 响应)C : FF820060067B296F123456R : 9000C : FFD600010401000080R : 9000C : FF820060067B296F123456R : 9000C : FFB0000104R : 6C10
我期待着得到01000080
.你能帮我吗?
你得到的 READ BINRARY APDU 的响应非常清楚。状态字 6Cxx
表示您应该使用 xx
作为 Le 值重新发出最后一个命令 APDU。因此,您应该将 APDU 重新签发
FFB0000110
由于您没有透露通过这些命令访问的接触式或非接触式存储卡的类型,因此我只能猜测您正在访问NFC论坛类型2标签(MIFARE Ultralight,NTAG或类似标签)。使用这些标签,每个页面有 4 个字节,您可以单独编写每个页面。因此,写入命令正好接受 4 个字节。但是,该技术的 read 命令始终读取一组 4 页,这意味着您始终读取 16 个字节。
另请注意,在所有其他命令之前发送的 LOAD KEYS 命令实际上没有多大意义。首先,LOAD KEYS 命令仅将密钥加载到读取器内存中,以便以后在 AUTHENTICATE(或评分器常规身份验证)命令中使用,显然在加载密钥后永远不会使用该命令。其次,您总是再次加载相同的密钥,这是完全不必要的。第三,如果标签实际上是MIFARE Ultralight或NTAG,则没有具有6字节键值的此类标签。
尝试发送FFB000010104
CLA = FF INS = B0 P1 = 00 P2 = 01 LC = 01 数据 = 04