获取可用内存 MIFARE DESFire EV1

Get available memory MIFARE DESFire EV1

如何获取MIFARE DESFire EV1卡的可用内存?我知道一些 Android 应用程序会显示可用内存。那么有没有什么APDU命令可以获取可用内存呢?

您可以使用 GetVersion 命令获取总内存大小:

<-- 90 60 0000 00
--> ZZ YY XX WW VV TT SS 91AF
<-- 90 AF 0000 00
--> ZZ YY XX WW VV TT SS 91AF
<-- 90 AF 0000 00
--> UUUUUUUUUUUUUU NNNNNNNNNN WW YY 9100

其中SS是存储大小,可以解码为

int storageBytes = 1 << ((int)SS & 0x0FE) >>> 1);
bool storageExact = ((int)SS & 0x01) != 0;

最低位表示指示的存储大小(以字节为单位)是否为精确值,或者实际存储大小是否在 storageBytesstorageBytes * 2 之间。

您还可以使用 FreeMem 命令获取可用的空闲内存(以字节为单位):

<-- 90 6E 0000 00
--> SSSSSS 9100