APDU MIFARE Classic 4K 读取特定扇区/块的值

Posted

技术标签:

【中文标题】APDU MIFARE Classic 4K 读取特定扇区/块的值【英文标题】:APDU MIFARE Classic 4K read value at specific sector/block 【发布时间】:2015-02-09 19:11:38 【问题描述】:

我正在尝试从我的 MiFare Classic 4K 智能卡中读取一些数据。我已经知道数据的确切扇区/块位置(因为通过 android 转储),但我不知道如何在 SpringCard Prox'N'Roll 中显示它。

我知道如何访问我的卡并进行了大量研究,但我无法找到如何获取数据,因为我并不真正了解 APDU 命令消息中所需的值。

可能是这样的?

CLA: FF
INS: B0/B2/CA ?
P1-P2: ???
LC Field: ??
Data field: ??

http://www.cardwerk.com/smartcards/smartcard_standard_ISO7816-4_6_basic_interindustry_commands.aspx#chap6_1

我想读取第 32 扇区,第 140 块。

【问题讨论】:

【参考方案1】:

使用此特定读卡器 (SpringCard Prox'N'Roll PC/SC) 从 MIFARE Classic 卡读取块的最简单方法是读卡器特定的 READ MIFARE CLASSIC(使用指定密钥)命令:

FF F3 00 <BLOCK> 06 <KEY> 00

此命令将首先尝试使用&lt;KEY&gt; 作为密钥 A 进行身份验证(如果失败则作为密钥 B)。认证成功后会读取区块&lt;BLOCK&gt;

所以对于你的场景,你会使用

FF F3 00 8C 06 uu vv ww xx yy zz 00

其中uu vv ww xx yy zz 是身份验证密钥。

【讨论】:

哇,非常感谢!这可能是一个愚蠢的问题,但我在哪里可以找到身份验证密钥? 身份验证密钥是一个共享密钥,由发卡者为该扇区定义。所以你应该能够从他们那里得到那个密钥。 但是我认为没有身份验证密钥也可以访问它,因为我可以读取 Springcard MemoryCardTool 中的数据......那么当它是“公共”时为什么我需要一个身份验证密钥?点击按键后的截图:gyazo.com/4d768a889f0ba43a7f0043f71a0cf635 MIFARE Classic 中没有“公共”的概念。您总是需要一个身份验证密钥。如果 SpringCard 工具可以读取数据,则很可能使用某些标准密钥(例如传输密钥FF FF FF FF FF FF、NDEF 密钥D3 F7 D3 F7 D3 F7 或 MAD 密钥A0 A1 A2 A3 A4 A5)来读取数据。 正如您之前提到的Android:如果像我的NFC TagInfo app 这样的工具能够读取数据,那么您可以将其用于对该块进行身份验证的密钥作为第一个(密钥A)/扇区尾部块的最后一个(键 B)6 个字节。

以上是关于APDU MIFARE Classic 4K 读取特定扇区/块的值的主要内容,如果未能解决你的问题,请参考以下文章

ACR122U 的 MIFARE Classic 1K 加载身份验证密钥失败

Nexus 4 读取 Mifare Classic 卡 UID

.NET - 通过 NFC 阅读器读取 Mifare Classic。恩智浦与博通阅读器

mifare 经典上的 APDU 写入块命令

将 javax.smartcardio 用于 MIFARE Classic 和 Omnikey 5021 CL

从 MIFARE DESFire 获取 UID 的 APDU?