vik*_*kky 5 rfid apdu smartcard mifare contactless-smartcard
我在使用 MIFARE DESFire 时面临一个非常奇怪的问题。当我写入少量数据(例如11字节)时,写入操作成功。然而,当我尝试写入例如50字节时,响应是917E,这意味着命令中存在一些长度问题。
尝试写入11个字节:
<-- 90 3D 00 00 12 01 000000 0B0000 1234567890AABBCC DDEEFF 00 --> 9100(成功)
尝试写入50个字节:
<-- 90 3D 00 00 39 01 000000 320000 1234567890AABBCC DDEE1234567890AA
BCCDDEE12345678 90AABBCCDDEE1234
567890AABBCCDDEE 1234567890AABBCC DDEE 00
--> 917E(长度错误)
该错误表明您的命令太长。您可能使用 DESFire EV1,它仅支持最大 55 字节的包装 APDU 长度。因此,当以包装本机模式打包到单个 APDU 中时,WriteData 命令的最大数据长度为
55 - APDU 标头 - APDU Lc - 文件 ID - 偏移量 - 长度 - APDU Le = 55 - 4 - 1 - 1 - 3 - 3 - 1 = 42 字节。
由于 APDU 包装,该值略小于 WriteData 命令本身的限制。请注意,您仍然可以通过将数据拆分到多个 DESFire 帧(使用 0xAF 状态和命令代码),在一个 WriteData 命令中发送(更多)更多数据。
DESFire EV1 数据表中提到了 55 个字节。vikky的实际测试表明,这实际上可能是 60 字节(导致最大数据长度为 47 字节)。
| 归档时间: |
|
| 查看次数: |
1307 次 |
| 最近记录: |