问题标签 [pcsc]

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 投票
1 回答
327 浏览

smartcard - 无法构造 VERIFY_PIN_DIRECT 控制命令

我正在编写一个 JAVA 应用程序来访问我的 OpenPGP-Card V2.0。我使用的卡终端是“REINER SCT cyberJack RFID标准”,仅支持OSX下的PC/SC,现在我想实现PC/SC 2.0命令“VERIFY_PIN_DIRECT”。

我尝试了以下控制序列, | 之后的字节 是 APDU 字节(我的测试引脚是“140396”):

一些重要的字节含义(有用的文档:http ://www.acs.com.hk/download-manual/1207/API-ACR83-1.06.pdf ):

但是,如果我发送此命令,我总是会69 82根据OpenPGP-Card 数据表 (PDF)得到相应的含义:

不满足安全状态:

密码错误

PW 未检查(命令不允许)

安全消息不正确(校验和和/或密码)

APDU 命令似乎是正确的,因为如果我向00 20 00 81 06 31 34 30 33 39 36卡发送以下命令,则接受 PIN。所以看来我的控制命令是错误的。我的错误在哪里?

更新:

一个工作命令是:

0F_06那么(在 index 处05)更好的价值是20_06因为 OpenPGP-Card 支持长度为 32 个字符的 PIN,但我的卡终端抱怨Invalid Value......

PS:下划线表示相关字节,解析时当然会去掉。

0 投票
4 回答
4317 浏览

apdu - 在未连接智能卡的情况下发送带有 winscard.dll (PC/SC) 的 APDU

我正在尝试将 APDU 命令发送到读卡器本身而不是智能卡。我正在使用的测试命令打开和关闭射频场。

如果我第一次连接到智能卡,此命令将通过 SCardTransmit 发送。但是一旦 RF 场关闭,卡就会断开连接,我无法发送另一个 APDU 来打开场。

基本上有什么方法可以在没有卡的情况下通过 pc/sc 发送 APDU。我想在读卡之前配置读卡器的某些部分。

提前致谢。

- - -编辑 - - -

正如 FPGA Warrior 提到的,我需要使用 SCardControl 将 APDU 命令发送到读卡器。

到目前为止我已经完成的步骤:

使用 SCardConnect 与 SCARD_SHARE_DIRECT 和 SCARD_PROTOCOL_UNDEFINED 连接到“卡”。这将返回成功并为您提供卡句柄。

返回:0 和看起来像一个有效的 _hCard 句柄。

然后我打电话给 SCardControl

我现在收到错误 ERROR_INVALID_HANDLE (0x6)。因此,我的 SCardConnect 似乎没有返回有效的句柄,即使它没有返回错误。

作为在设备上使用 PC_to_RDR_Escape 模式的附带说明,如果您安装的驱动程序不允许,您可能需要编辑注册表以将其打开。 https://msdn.microsoft.com/en-us/library/windows/hardware/dn653571%28v=vs.85%29.aspx

0 投票
1 回答
2407 浏览

c++ - 如何在 C/C++ 中与智能卡交互?

是否有任何用 C/C++ 编写的开放框架有助于与智能卡设备进行交互,这里我的目标是创建这样一个在 C/C++ 中独立于平台的系统。

我一直在尝试搜索此类库,但我遇到的只是基于 Java 的框架,例如 OCF 和 Java Smart Card I/O API。

任何帮助表示赞赏。

0 投票
2 回答
4477 浏览

opensuse - ./configure pcsc_cflags 尝试在 opensuse 中为 ACR122U 安装 acs 驱动程序

我正在尝试使用 ACR-122U NFC 阅读器,并从全新安装 Opensuse 开始。我抓住了 c/c++ 模式包并验证了我有

  • pcsclite 1.8.3 或以上
  • libusb 1.0.8 或以上
  • 柔性
  • perl
  • 包配置

在下面链接的 PC/SC 驱动程序包的自述文件中提到

http://www.acs.com.hk/en/products/3/acr122u-usb-nfc-reader/

当我尝试运行时./configure,我得到以下结果

运行zypper info pcsc-lite产量:

知道什么是错的吗?

0 投票
1 回答
1264 浏览

php - Promag读卡器PHP访问

我有 promag 310 读卡器。它通过 com 端口连接到 PC。我想在 windows 平台上使用 PHP xampp 访问卡 ID。我添加php_pcsc.dll到扩展文件夹。我更新php.ini了它。然后我写了这段代码:

但是PHP返回:

所以我没有访问读卡器。如何使用 PHP 访问卡 ID?有没有人有任何想法来实现这种情况?

谢谢你。

0 投票
1 回答
754 浏览

sdk - 在JavaCard中,模拟器可以使用PCSC接口进行通信吗?

我写了一个Applet,但不想通过SDK发送和接收APDU,你能告诉我应该怎么做吗?
javacard开发包中的模拟器可以和PCSC接口通信吗?

我使用了 JCOP 工具和 oracle 的 JavaCard SDK。两者都无法与PCSC接口通信,只能通过IDE本身与模拟器通信。

0 投票
1 回答
1052 浏览

java - 使用 Smart Card IO 时无法检索第二张卡的 ATR

对于某些背景,我使用In_List_Passive_Target了 PN532 用户手册中指定的命令来检索终端字段中所有卡的 UID。我还使用 ACR122U 的伪命令FF 00 00 00 04将这些命令发送到 PN532。

现在我已经这样做了,我想一一选择这些。我可以通过In_Deselect在使用完一张卡片 ( ) 后暂停它,然后使用In_List_Passive_Target带有其 UID 的命令选择下一张卡片来做到这一点。

但是,每次我选择一张卡时,我都想知道它返回的 ATR。事实证明,使用 Java Smart Card IO API 很难做到这一点,因为终端创建的卡对象始终是同一张卡(因此返回相同的 ATR),即使我断开卡然后创建新卡也是如此。考虑到如果我通过 PN532 终端命令与卡通信,这很奇怪In_Data_Exchange,它是正确的不同卡(不是通过 Card 对象可访问的旧卡)。我需要 ATR 能够检测它是哪种类型的卡(Mifare Classic、Desfire、Ultralight 等)

这是我为收集卡片创建的功能:

0 投票
0 回答
421 浏览

reverse-engineering - Javacard:ATR 和协议更改

我正在使用逻辑分析仪对智能卡进行逆向工程。我让小程序像原来的 SC 一样响应,但不起作用。经过进一步分析,我发现了3个问题:

1-ATR:需要改变ATR

2-ATR 通信协议:不知道为什么,原来的智能卡没有像标准一样发送ATR(在标准中:偶校验位),但它是在没有奇偶校验位的情况下传输的

3-PTS:在 ATR 之后,我需要将通信协议设置为 T=0,波特率:210526 而不是奇偶校验(clk=6MHz)。

我知道 1 和 3 是可能的,但我不知道由谁来做,我真的不知道第二个问题是否可以解决。

我有金雅拓 IDcore30 卡。我也有一个金雅拓IDbridge CT30,但由于奇偶校验位的差异,甚至无法读取原始的ATR,它无法读取ATR。

任何链接或帮助都将非常有用。

谢谢。

0 投票
1 回答
1510 浏览

java - 树莓派上的 Java TerminalFactory 和 ACR122U NFC 阅读器

我正在使用 Raspberry Pi 在 Java 中构建一个 NFC 读卡器小程序。由于某种原因,Java 没有“看到”整个终端,而 nfc-list 和 pcsc_scan 都看到了连接的阅读器。

和 pcsc_scan

我的 Java 代码如下所示,这是一个查看终端是否工作的小脚本。

我还尝试使用以下命令手动选择 pcsc 库:

不幸的是,这也不起作用。

寻求建议下一步该怎么做,在此先感谢!

0 投票
0 回答
320 浏览

java - WINDOWS_ERROR_INVALID_PARAMETER 当我向读卡器发送控制命令时

我调用 verify() 方法从读卡器(omnikey 3821)读取 PIN,但我有以下异常:

WINDOWS_ERROR_INVALID_PARAMETER

我认为问题是引发以下错误的方法transmitControlCommand的第二个参数:

我的代码:

请帮忙 。