2016-08-22 137 views
1

我最近使用的是Mifare Classic 1k智能卡。我使用制造商模块(扇区0,块0)来识别卡,因为Mifare Classic卡的UID并不是真正独特的。Mifare DESFire EV1 4k制造商区块

我的应用场景是我想从智能卡中读取一个标识符,并将其与数据库进行比较,每个用户都有一个智能卡分配给他们。所以用户可以用他们的卡登录。现在我不得不使用新的Mifare DESFire EV1 4k卡。这些卡片是否也有制造商区块或只有7字节的UID?使用此UID来识别卡是否安全?

+0

取决于“* identify *”的含义......您是否打算确定您的卡是一批MIFARE Classic或MIFARE DESFire卡中的特定卡?或者您打算确定该卡是MIFARE Classic还是MIFARE DESFire? –

+0

目前还不清楚,你试图达到什么程度的安全。那里有**卡允许写这些信息... – guidot

+0

我想写一个软件,从智能卡读取一个标识符,并与数据库进行比较,其中每个用户都有一个智能卡分配给他。所以用户可以用他的卡登录。当我使用Mifare Classic Cards时,我使用制造商模块作为标识符,但我的公司现在切换到Mifare DESFire卡。我正在寻找类似卡的序列号的东西,以便我可以将卡分配给用户。 – Chrisser

回答

2

您可以预期的7字节UID真正 MIFARE DESFire EV1卡是唯一的。但请注意,DESFire EV1卡可以配置为使用随机4字节UID。在这种情况下,每个RF激活都会随机生成UID。这些卡的7字节UID只能在认证后使用GetCardUID命令(命令代码0x51)获得。

但是,您应该知道(特别是考虑您的用例)UID可以轻松克隆,并且不适合对卡(或其用户)进行身份验证。另请参见

如果你想要的东西,是compareable对MIFARE经典的制造商块(即东西,揭示了产品类型和生产批次信息),MIFARE DESFire卡有一个GetVersion命令(命令代码0x60)。

最后,请注意,MIFARE Classic卡的制造商区块实际上并不比UID提供更多的独特性。原因是制造商模块的前4个字节是UID本身。下一个字节是UID上的校验和(因此对于具有相同UID的卡,其值是相同的)。接下来的3个字节是SAK和ATQA值,对于所有(大多数?)MIFARE Classic 1K卡,通常为'88'和'0400'。其余字节标识芯片类型(因此对于所有相同类型的卡都是相同的)和生产批次(因此至少每个批次相同)。