发送 APDU 命令以读取被动标签?

Posted

技术标签:

【中文标题】发送 APDU 命令以读取被动标签?【英文标题】:Sending APDU command for reading a passive tag? 【发布时间】:2018-10-15 09:40:04 【问题描述】:

我在我的 Beaglebone 上使用 libnfc 和 apdu_examle.c 和 PN532。 我有一个 android 示例,用于在我的手机上模拟 Miffare 经典 1k 卡 HCE(主机卡仿真),并且一切正常。如果我点击手机,我可以阅读手机发送的信息。

是否可以发送 apdu 命令从 Miffare 经典 1k 卡(无源标签)读取数据?不是电话。 该卡符合 ISO/IEC 14443A 标准。 卡上必须有特定的格式或数据结构吗?

以下是有关该卡的更多信息:

ISO/IEC 14443A (106 kbps) 目标: ATQA (SENS_RES): 00 04

UID 大小:单个 支持位帧防冲突 UID (NFCID1): db 6c 10 2b SAK (SEL_RES): 08 不符合 ISO/IEC 14443-4 不符合 ISO/IEC 18092

基于MIFARE类型识别程序的指纹识别:

MIFARE 经典 1K MIFARE Plus(4 字节 UID 或 4 字节 RID)2K,安全级别 1 带有 MIFARE 1K 仿真的 SmartMX

【问题讨论】:

【参考方案1】:

MIFARE Classic 不适用于 APDU(ISO 7816 第 4 层),而是在第 3 层 + 专有扩展上运行。据我所知,除非手机具有 NXP 的 NFC 芯片组,否则无法使用 HCE 与其通信。

但如果您的卡是带有模拟 MIFARE 的 SmartMX,这意味着您可以将 APDU 发送到 JavaCard 操作系统。您是否尝试过发送一个简单的命令,例如一个空的 SELECT 00A4040000

【讨论】:

我尝试发送 00A4040000,但收到“应用程序级别错误”错误。我想我明白我正在使用 libnfc 中的“nfc_initiator_transceive_bytes”函数来发送 apdu 命令,但标签不理解这一点。所以我需要发送本机命令,libnfc 中是否有函数可以在 libnfc 中发送本机命令?谢谢 我对 libnfc 不熟悉,所以我无法真正帮助您,抱歉。也许你的卡有这个命令以某种方式受到限制。

以上是关于发送 APDU 命令以读取被动标签?的主要内容,如果未能解决你的问题,请参考以下文章

使用 APDU 命令获取卡的一些信息

APDU 命令读取二进制命令与文件结构不兼容

APDU 命令读取 SLE4432/42 卡

使用 READ BINARY 命令 APDU 从智能卡读取大型二进制文件 (>32k)

信用卡芯片读取错误

非接触式智能卡仅响应第一个 APDU 命令