我是APDU的新手。我读了DESFire的数据表。根据它,我们有:
CLA = 0x90
INS = DESFire CMD Code
P1 = 0x00
P2 = 0x00
LC = Length of wrapped Data
data = DESFire command parameter(s)
LE = 0x00我想要获得DESFire UID,但是我不能为此创建APDU命令。有人能把我引向正确的方向吗?我创建了这个APDU,但我不确定它是否正确:
byte[8] cmd_apdu_getUID_part1= {0x90 , 0x93 , 0x20 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00};我不理解像LC这样的参数的概念,我也没有找到用于获取UID的INS。UID第1部分是0x93 ox20,UID第2部分是0x95 0x20吗?
发布于 2015-04-24 06:30:04
命令9x 20是低ISO 14443-3协议的一部分,用于卡的防撞和激活。另一方面,APDU是在更高的协议层上交换的,并且只在激活卡之后才交换。因此,不能在APDU中使用这些命令代码。
如何从DESFire (EV1)卡中获取UID取决于您实际想获得的ID类型:
xx为00或UID的预期长度,对于DESFire通常是04或07)。91 AF指示可以通过将命令代码设置为0xAF获得更多数据。所以你必须发送另一条命令:
90 AF 00 00
答案(又一次)看起来像是
<7响应数据bytes> 91 AF
所以你必须再发送一个0xAF命令。然后你会得到表格的答案:
<14响应数据bytes> 91 00
其中,响应数据的最后7个字节包含UID。关于如何解析接收到的数据,请参见parseGetVersion()。https://stackoverflow.com/questions/29819356
复制相似问题