问题标签 [contactless-smartcard]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2519 浏览

android - 获取处理选项在 Visa 非接触式卡上意外返回 6984 代码

我正在使用 Java 代码和 Android NFC 功能与非接触式支付卡进行通信。

我的代码适用于一堆 Visa 和 MasterCard,但我遇到了与 Visa 卡的特定子类别有关的问题。

以下是我采取的步骤和遇到的问题:

  • 我使用 PPSE 识别应用程序
  • 选择应用程序 AID (A0000000031010) 文件控制信息包括我构建的 PDOL
  • 发送一个获取处理选项

在这一点上,我得到一个 6984 返回代码 - 据我所知 - 转换为超过 PIN 尝试限制,但我无法看到这是来自 GPO 的合法响应。

鉴于没有进行身份验证尝试,我也不希望看到这一点,而且这是非接触式交易。这是否表明该卡已在其他地方失效?

我应该注意到我正在编写的代码执行从卡访问 Track2 数据所需的最少步骤,它不是试图重新创建完整的 EMV 内核处理。

谢谢

0 投票
1 回答
4062 浏览

payment - 获取处理选项的问题

A0000000032010在 Visa 非接触式卡上选择了应用程序 ( )

当我发出 GPO 命令时:

我得到错误:

有谁知道是什么原因造成的?

0 投票
0 回答
1695 浏览

key - NFC 通信 - Mifare Desfire AES - 更改密钥命令

我正在使用 HID Omnikey 5321 阅读器与 Mifare DESFire EV1 标签进行通信。我使用 WinSCard DLL(在 C++ 中)将本机 DESFire 命令包装在 ISO 7816 APDU 消息结构中。在标签上,我有一个带有 3 个键的应用程序。由于密钥设置设置为 0x0B,我使用应用程序主密钥进行身份验证以更改密钥值。

我设法更改了应用程序主密钥,但没有更改密钥 1 和 2。

使用应用程序主密钥进行 AES 身份验证后,我尝试更改密钥 2:

我通过(旧密钥 2)异或(新密钥 2)计算 CRC

我通过本机命令计算 CRC

然后我用会话密钥加密,IV 设置为 00

发送的 APDU

作为回应,我得到“1E”状态码,表示 CRC 或填充错误。

我也尝试不使用 XORing 数据。我只是附加了通过本机命令计算的 CRC,就像我成功更改主密钥一样,但我仍然有同样的错误。

我不知道问题出在哪里。

0 投票
1 回答
1777 浏览

android - 基于主机的卡仿真,请指导?

我是这个领域的新手,我有一个 Nexus S(CyanogenMod11 = Android Kitkat 4.4.2)而且我需要使用 HCE(基于主机的卡模拟)模式来模拟非接触式卡。

为了完成此操作,我需要遵循的步骤和提示有什么指导吗?( - 我需要对模拟的安全元件进行编程吗?把它放在云端吗?)

PS:我还必须使用新的阅读器模式,因为我的应用程序将被另一部支持 Android NFC 的手机而不是 NFC 阅读器读取。

谢谢你。

0 投票
1 回答
1315 浏览

aes - NFC - Mifare DESFire - AES 通信

我正在使用 Omnikey 5321 阅读器与 Mifare DESFire EV1 标签进行通信。我想读取标准数据文件中的 40 个字节。我正在使用 Winscard DLL (c++) 将原生 desfire 命令包装在 ISO 7816 APDU 消息结构中。

应用程序选择和AES认证都OK。我有读取数据命令的问题。通信设置设置为 0x03(完全加密)。

我收到了 48 个数据字节和“0x9100”状态码。使用解密数据计算IV:

我先异或(0xBD 01 00 00 00 28 00 00 80 00 00 00 00 00 00 00)和AES认证后计算的子密钥2)。

然后我使用设置为 0x00 的 Init Vector 和会话密钥对结果进行加密。加密的数据被认为是IV。

我终于解密了用 IV 和会话密钥收到的 48 个数据字节。

40 个数据字节有时是好的,但有时是错误的。我不知道为什么它并不总是相同的结果。解密的 CRC 总是相同的,填充也是如此。

当我尝试读取另一个文件中的纯数据时,我没有问题。所以我认为这是有问题的解密。但 CRC 和填充并不总是相同的。

一些帮助会非常有用

0 投票
1 回答
592 浏览

nfc - TWN3 Mifare USB 和 Mifare Desfire

我使用 TWN3 Mifare USB 收发器和 Mifare DESFire EV1 转发器。我从转发器获取数据时遇到问题。(对于串行通信,我使用 Hercules SETUP 实用程序 3.2.6。)

  1. 我打开串行通信
  2. 将转发器放在收发器上
  3. 在 Hercules 中发送 's' 命令 -> 我将获得转发器的 UID
  4. 然后我发送f0408000001命令选择应用程序-> 我会得到A0响应,为什么?为了成功选择应用程序,我应该得到00

当我尝试发送f020D02到 ID 为 02 的选择文件时,我总是得到F答案(错误:一般故障)。

Mifare Desfire 转发器的结构是:

  • 申请(AID 000000)
  • 申请(AID 000001)
    • 文件 01(文件大小 15 字节)
    • 文件 02(文件大小 4096 字节)
0 投票
1 回答
5320 浏览

c++ - SCardTransmit,如何读写智能卡

我正在使用打印机,尝试读写非接触式卡。

这是我正在使用的硬件和软件的手册: 手动非接触式

如果我理解正确,与智能卡交互(在其中读取和写入)的过程是:

  1. 使用 SCardEstablishContext() 建立上下文
  2. 使用 SCardConnect() 通过选定的读卡器连接到卡
  3. 使用 SCardTransmit() 与卡片对话

那是对的吗?

第 1 点和第 2 点工作正常并返回 0 (SCARD_S_SUCCESS),但我遇到了 SCardTransmit 问题。

  • 例如,如果我想阅读第 5 块,这是我使用的代码:

    它返回错误代码 22。

    如果我将 SCARD_PROTOCOL_T0 更改为 SCARD_PROTOCOL_T1,它似乎可以工作(我不知道 pbRecvBuffer 的值是否正确):pbRecvBuffer 有 2 个字节的值:6e 00 和 ret = 0。

    这些价值观有意义吗?

    我阅读了 SCardTransmit api ( SCardTransmit ) 并且我知道我必须使用协议 T=0,这是否意味着我必须让 SCARD_PROTOCOL_T0 工作?在那种情况下,为什么我会收到错误 22?我做错了什么?

  • 如果我想在块 5 中写入,我遵循相同的过程:SCardEstablishContext、SCardConnect 和 SCardTransmit。我将 pbSendBuffer 更改为:{(BYTE)0xFC, (BYTE)0xD0,(BYTE)0x05, (BYTE)0x00, 0x10};,但我不太了解数据在哪里,以及我应该在 SCardTransmit 上放置哪些参数. 你能给我举个例子吗?

非常感谢!

0 投票
1 回答
1045 浏览

android - 如何在 NFC 类型 4 标签仿真上组织大数据文件

我正在开发一个应用程序,我将数据存储在 4Mbit 数据闪存上,并通过 NFC 用智能手机读出。为此,我使用 NFC 前端 (AS3953) 和微控制器来模拟 Type 4 标签。将数据分成 264 字节的块(闪存的页面大小)并按顺序读取它们会很方便。

那么更好的结构是什么:一个大的 NDEF 文件,每个文件有许多 264 字节的记录,或者在一个专用文件下有许多单个基本文件?

感谢您的投入,安德烈亚斯

0 投票
3 回答
13293 浏览

android - 使用三星 Galaxy S4 从 Visa Paywave NFC 启用卡读取信用卡数据的 APDU 命令

我正在使用上述代码使用三星 Galaxy s4 读取 VisaPayWave NFC 卡详细信息(持卡人姓名、有效期、卡号等)。我得到的输出是 [106,-126]。我认为我使用的 APDU 命令不正确。请提出正确的命令。

0 投票
0 回答
326 浏览

android - 使用 NFC 通过 Android 读取 ISO 14443 Type B 时出现标签丢失问题

我正在尝试通过 Android 使用 NFC 读取 SO 14443 Type B,

检测卡需要很长时间,并且大部分时间收发器失败并且标签丢失。

但没有遇到 A 型卡的任何问题。

我正在尝试使用 Android 前台调度方法,也尝试使用三星 S3 和 S4 以确保 Android API 有任何问题。

我尝试在不同手机中使用不同的 NFC 控制器 NXP PN544 和 Broadcom BCM20794 也得到相同的响应。

我无法断定我们是否有 NFC 天线的最大功率强度来为 PICC 天线供电

B型卡有什么解决方案吗