问题标签 [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.
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:下划线表示相关字节,解析时当然会去掉。
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
c++ - 如何在 C/C++ 中与智能卡交互?
是否有任何用 C/C++ 编写的开放框架有助于与智能卡设备进行交互,这里我的目标是创建这样一个在 C/C++ 中独立于平台的系统。
我一直在尝试搜索此类库,但我遇到的只是基于 Java 的框架,例如 OCF 和 Java Smart Card I/O API。
任何帮助表示赞赏。
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
产量:
知道什么是错的吗?
php - Promag读卡器PHP访问
我有 promag 310 读卡器。它通过 com 端口连接到 PC。我想在 windows 平台上使用 PHP xampp 访问卡 ID。我添加php_pcsc.dll
到扩展文件夹。我更新php.ini
了它。然后我写了这段代码:
但是PHP返回:
所以我没有访问读卡器。如何使用 PHP 访问卡 ID?有没有人有任何想法来实现这种情况?
谢谢你。
sdk - 在JavaCard中,模拟器可以使用PCSC接口进行通信吗?
我写了一个Applet,但不想通过SDK发送和接收APDU,你能告诉我应该怎么做吗?
javacard开发包中的模拟器可以和PCSC接口通信吗?
我使用了 JCOP 工具和 oracle 的 JavaCard SDK。两者都无法与PCSC接口通信,只能通过IDE本身与模拟器通信。
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 等)
这是我为收集卡片创建的功能:
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。
任何链接或帮助都将非常有用。
谢谢。
java - 树莓派上的 Java TerminalFactory 和 ACR122U NFC 阅读器
我正在使用 Raspberry Pi 在 Java 中构建一个 NFC 读卡器小程序。由于某种原因,Java 没有“看到”整个终端,而 nfc-list 和 pcsc_scan 都看到了连接的阅读器。
和 pcsc_scan
我的 Java 代码如下所示,这是一个查看终端是否工作的小脚本。
我还尝试使用以下命令手动选择 pcsc 库:
不幸的是,这也不起作用。
寻求建议下一步该怎么做,在此先感谢!
java - WINDOWS_ERROR_INVALID_PARAMETER 当我向读卡器发送控制命令时
我调用 verify() 方法从读卡器(omnikey 3821)读取 PIN,但我有以下异常:
WINDOWS_ERROR_INVALID_PARAMETER
我认为问题是引发以下错误的方法transmitControlCommand的第二个参数:
我的代码:
请帮忙 。