问题标签 [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 投票
5 回答
24242 浏览

smartcard - 什么 APDU 命令获取卡 ID

哪个 APDU 命令获取卡 ID 的 7 个字节?我使用带有 ISO14443 层的 T=CL (ISO7816) 协议。在检测卡上,我只能看到卡 ID 的 4 个字节。我发现这应该是获取卡ID的APDU命令。例如它的:
0xFF, 0xCA, 0x00, 0x00, 0x00
但此命令的结果是:6E 00,在 APDU 答案的规范上告诉“不支持类”

然后我发现它的APDU命令可能是:
0x00, 0xCA, 0x00, 0x00, 0x00
这个命令返回6A 88
where- 6A XXWrong parameter(s) P1-P2”88- “Referenced data not found”

你怎么想的?

谢谢!

PS所有命令为:CLA, INS, P1, P2, LenData, Data
其他我的命令正常工作(例如sellect aplet并使用它),仅在获取卡ID时出现问题

0 投票
2 回答
3450 浏览

tags - 我可以在没有安全 IC 的情况下使用 PN532 模拟标签吗?

我正在尝试模拟 PN532 上的标签。我需要它与仅支持其 API 中的标签但不支持 LLCP 或其他 P2P 协议的设备进行交互。

我想使用主机控制器处理读/写。任何模拟标签类型都可以(Mifare、Felica 等),但我的解决方案不包含安全元素。

我认为 Mifare Ultralight 将是理想的选择。由于它不包括任何加密(只是普通的读写),它可能比任何其他都更容易模拟?

简而言之,是否可以在不使用 PN532 上的安全 IC 的情况下模拟可以回复来自发起者/阅读器的读/写命令的标签?

0 投票
2 回答
1153 浏览

tags - NFC 阅读器:ACR122U-A9 没有标签

与 NFC 阅读器一起提供的 SDK 不起作用,我们无法使用 SDK 提供的工具写入数据/标签。主要问题是使用其他工具写入的数据不会永久保留在设备中。当使用 Android 设备扫描标签时,阅读器变得清晰,我们必须再次写入数据。我已经检查并尝试了来自https://github.com/fkooman/nfcip-java/blob/master/nfcip-java/doc/ACR122_PN53x.txt的说明,但它不起作用。

因此,我们需要帮助来了解需要什么命令才能将数据(标签)保留在 Reader 中,即使它已从计算机上拔下。阅读器需要在仿真模式下工作,并应提供标签。

0 投票
3 回答
20679 浏览

android - 通过软件 NFC 进行卡模拟

在阅读了很多问题后,我决定发布这个。我读到 android 的股票版本不支持用于卡模拟的 API。此外,由于 google/samsung 管理的密钥,我们无法编写自定义应用程序来保护嵌入在 nfc 控制器中的元素。

我需要模拟一张卡片(mifare 或 desfire 等)。我可以看到的选项是通过软件进行。我有一个 ACR122U 阅读器,并且我已经测试了 NFC P2P 模式在我拥有的 Nexus-S 上运行良好。

1)我看到一个网站说nexus s的NFC控制器(pn532)可以模拟mifare 4k卡。如果这是真的,我可以向这个模拟卡写入/读取 apdu 命令吗?(可能如果我使用像 cyanogenmod 这样的改装 rom)

2)我可以编写一个android应用程序来读取从阅读器发送的apdu命令并生成适当的响应(如果不完全,那么仅在某种程度上)。为此,我搜索了我们需要用 cynagenmod 修补 nexus 。有人试过通过这种方法模拟卡吗?

我认为这是可能的,因为我们有来自门禁控制公司的产品,它们提供移动应用程序,人们可以通过这些产品打开门,例如http://www.assaabloy.com/en/com/Products/seos-mobile-access/

0 投票
2 回答
1053 浏览

android - 三星 Galaxy S4 是否与 CyanogenMod 的智能卡仿真 (NFC) 兼容?

我有三星 Galaxy S4 和 SCM SDI010 读卡器。我的目标是让 S4 模拟智能卡,然后可以被读卡器读取。

我尝试应用此处描述的 PKI 小程序示例(安装 CyanogenMod 10.2,在 S4 上启动 se-emulator 并在我的 Linux PC 上启动 se-pki-client)。但是连接建立失败,读取器端出现“SCARD_W_UNRESPONSIVE_CARD”或“SCARD_W_UNPOWERED_CARD”异常。

  1. 有谁知道 CyanogeMod 是否支持 S4 上的 NFC 芯片进行卡模拟?
  2. 我是否需要在上面教程中没有直接描述的 S4 上显式激活卡模拟?

此致

0 投票
2 回答
4964 浏览

java - 通过 javax.smartcardio 读取虚拟 NFC 标签

我有一个用于 tikitag Web 服务的旧 NFC 阅读器(后来更名为touchatag,最终在 2012 年左右放弃)。由于该网站不再可用,我再也找不到原来的 tikitag/touchatag 驱动程序。经过一番搜索,我发现这个 NFC 读卡器是通用的 ACS ACR122U USB 读卡器,并从这里安装了合适的驱动程序。我的系统是 Windows 7(64 位)。

首先,我尝试使用NFC 工具库对 NFC 标签进行高级读写访问。我收到一条错误消息,说遇到了不受支持的标签;尽管阅读器上没有标签,甚至在很远的地方都没有标签。其他开发人员似乎也遇到了与此库相同的错误,如此处所示。请注意,此标记会被无限检测(因此,它不会在被检测到一次后就消失)。

我将所需的低级代码复制到一个单独的类中(即,独立于 NFC 工具库)。您可以在下面找到此代码(类似的代码也可以在教程中找到):

此代码检测到与使用 NFC 工具库时完全相同的“幻像”标签。因此,这个问题似乎与 NFC 工具库无关(正如库开发人员在响应错误报告时暗示的那样)。要么我遗漏了某些东西,要么问题与已安装的驱动程序、NFC 读取器硬件或 javax.smartcardio 中的一些未修复的错误有关(按可能性顺序列出)。

我已尝试卸载上述驱动程序并让 Windows 7 自行安装合适的驱动程序(称为“Microsoft Usbccid Smartcard Reader (WUDF)”),这会导致与上述相同的错误。我没有尝试过其他阅读器,因为我只有一个。

(注意:这个NFC读卡器在Windows设备概览中的名称是“CCID USB Reader”,而不是“ACS ACR122”之类的东西。不知道这是否重要,只是想我会提一下。)。

有没有人遇到过这个问题,并设法解决它?

更新

好的,我已经尝试在检测到模拟标签后向阅读器发送 CLF 命令;即获取已连接PICC的ATS(ACR122U手册第11页):

但我不断收到错误响应代码 (0x63 0x00)。关于我可能做错了什么的任何想法?

0 投票
1 回答
2390 浏览

nfc - EMV 持卡人姓名与 NFC 扫描信用卡上的姓名不同

我一直在玩 androids NFC 功能并扫描我信用卡上的数据

我从卡中获得的持卡人姓名在表格中

而我实体卡上的名字是这样的

有谁知道是否可以获取卡上的持卡人姓名?用于进行在线支付的一种。带有斜线的名称也可以以这种形式使用吗?

0 投票
1 回答
10446 浏览

android - Android NFC IsoDep 读取文件内容

我正在尝试从ISO/IEC 14443 Type A卡中读取一些信息。

在使用 android 应用程序NFC TagInfo分析卡后,我发现应用程序(AID:15845F)具有我需要的特定文件(文件 ID:01)。

我已经设法连接到卡并选择应用程序。

但我的第二个查询失败,错误代码为:6A86(不正确的参数 P1-P2)。我已经搜索了很多并找到了不同的文档(例如:http ://bit.ly/180b6tB ),但我无法理解如何为P1P2实现正确的值。


编辑

使用NFC TagInfo的卡的标签类型:ISO/IEC 14443-4 智能卡、Mifare DESFire EV1 (MF3ICD81)

源代码中使用的 SELECT 命令实际上并没有失败,而是返回了 9000 响应。所以这就是为什么我认为一切正常。

您提到NFC TagInfo没有为 DF 名称等提供正确的值。值0x313538343546是否正确,您是如何找到它的?

你能给我一个简短的描述,我怎样才能得到我想要的数据?是否有任何其他安卓应用程序可用于读取正确的 DF 名称、AID 等?我基本上需要从一个应用程序中获取一个文件。如果需要,我还可以提供一些使用NFC TagInfo收集的信息的屏幕截图。


编辑 2

我已经重写了命令,但是(如您所建议的)将它们保存在 APDU 包装器中。因此,我最终得到了两个不同的命令,一个用于选择应用程序,另一个用于选择文件

搜索本机 Mifire-Desfire 命令的教程没有成功,所以我坚持以下教程: http: //noobstah.blogspot.de/2013/04/mifare-desfire-ev1-and-android.html

本教程提供了卡认证,我禁用了,并且还使用了收发方法,据我了解,这不是执行本机命令的正确方法吗?哪种方法,甚至可能是代码片段,用于执行本机命令?我应该使用哪个 Android-Class?

我已经重写了教程中提供的类并将其上传到pastebin。执行完课程后,我得到了以下结果。

在这一点上,我很困惑,不知道下一步我应该做什么。实际上是错误还是我应该在查询中执行哪些更改以获得我想要的数据?

0 投票
1 回答
6456 浏览

nfc - Mifare 1k 值块操作

我对 Mifare Standard 1k 卡有疑问。我在地址为 62 的数据块上做了一个值块(00000001FFFFFFFE0000000100FF00FF-有效?)。值块的值应该是 1,值块的地址是 0。

我已将数据块 2 的访问位更改为:

  • C1=1
  • C2=1
  • C3=0

其他 2 个数据块具有工厂访问位。扇区尾部的访问位也发生了变化,它们是:

  • C1=0
  • C2=1
  • C3=1

因此,相应扇区(第 16 个扇区)的访问位是3B478C69(有效?)。

问题是我无法在该块上执行任何值块特定功能(递增、递减等),我总是得到6A81响应->“卡被阻止或不支持命令”。我使用的 APDU 是FFF5C13E0400000001.

0 投票
1 回答
10491 浏览

android - Android NFC 与 Mifare DESFire EV1 通信

使用 Nexus 4 和最新的 Android API 级别 18 与 Mifare DESFire EV1 AES 标签通信让我很头疼。为了写入和读取此类标签,遵循 NXP 原生协议,必须遵循以下步骤:

  1. 选择应用
  2. 认证
  3. 写或读

为此,我使用 Android 的IsoDep类,该类提供对ISO 14443-4属性和 I/O 操作的访问。非常奇怪的是,一旦我发送了选择应用程序本机命令,我就会得到意外的响应。想象一下我有 AID F4013D,所以我发送:

所有可能的响应必须是一个字节长度(成功0x00或错误代码),并且不能是两个或更多。因此,0x6E成功之前的响应是绝对出乎意料的。它并不总是发生,当它没有发生并且工作正常时,选择应用程序和身份验证过程工作正常。但是,一旦经过身份验证,写入命令就没有正确的行为,所有写入命令都以0xAF来自 PICC 的 a 而不是 success结束0x00。PICC 似乎在不应该期望一些额外的数据时(我发送了正确长度的有效负载)。如果我发送任何其他命令,我会收到0xCA(命令中止)错误代码。

正常情况下,如果我使用个人阅读器(非 Android NFC)发送这些类型的命令,它总是可以正常工作。Android NFC API 中的某些东西似乎变得很奇怪,它应该只是一个从不解释或修改数据的原始数据传输器。

我也尝试过使用ISO 7816-4 APDU 结构,结果相同。出于好奇,使用 Galaxy Nexus 不会发生选择应用程序的奇怪响应,但总是会出现写入命令。