如果您有 IClass 卡的 UID,则读取卡上的卡号

Posted

技术标签:

【中文标题】如果您有 IClass 卡的 UID,则读取卡上的卡号【英文标题】:Reading Card Number on card given you have UID of IClass Card 【发布时间】:2015-09-16 14:06:05 【问题描述】:

我有 HID Class Reader USB Device 5427 CK 。我已成功读取卡的 ATR 和 UID。问题是卡片上印有一个数字。

即 2x01966 21093771-1

我在使用 java API 读取卡片时得到的输出。

 PC/SC card in HID OMNIKEY 5427 CK 0, protocol T=1, state OK
ATR = 0x3B 8F 80 01 80 4F 0C A0 00 00 03 06 0A 00 1C 00 00 00 00 7E 
Card UID = 0xB6 A9 0E FB FF 12 E0 
Card type: PicoPass 16KS (8x2)

如何从 UID 中获取相同的数字

【问题讨论】:

【参考方案1】:

请参阅OMNIKEY Contactless Smart Card Readers Developer Guide 可用的here。第 9 章和第 10 章讲述了如何与 iClass 卡进行通信。

Select PageP2=0x04(请求 8 字节卡序列号)命令可能有效(第 38 页)。

编辑>

请先阅读上述手册。

下载“用于 OMNIKEY 非接触式智能卡读卡器的同步 API”here(如第 6 章所述)。

安装下载的包并研究“C:\Program Files\HID Global\Sync-API”下提供的示例iClassExplorer

如果您坚持从 java 调用它,您可能会发现 JNA 很有用。

javax.smartcardio 方法可能不起作用,因为您需要使用 scardsyn.dll 中的 SCardCLICCTransmit 函数(第 9.1 章)。

【讨论】:

SmartCardReader.main(SmartCardReader.java:78) sun.security.smartcardio.ChannelImpl.transmit(Unknown Source) 处 sun.security.smartcardio.ChannelImpl.doTransmit(Unknown Source) 处的未知错误 0x8010002f原因:sun.security.smartcardio.PCSCException:unknown error 0x8010002f at sun.security.smartcardio.PCSC.SCardTransmit(Native Method) ... 3 更多 使用这个 apdu cmd 80 A6, 00 04 00, 02, 00 得到这个错误 没有任何好处 :( 重试没有好处 仍然有相同的错误 用于 UID 的 apdu 命令正在返回数据,ATR 也只返回序列号。读取这个扇区是否有任何安全原因 第 9.1 节:通过符合 ISO7816 的 APDU 交换支持 iCLASS 卡。命令和响应 APDU 通过驻留在 OMNIKEY 同步 API 中的 OMNIKEY 专有 API 函数 SCardCLICCTransmit 进行交换。 已经试过它给出错误...所以使用java智能卡io libray【参考方案2】:

SCardCLICCTransmit() 是驻留在 OMNIKEY 同步 API DLL 中的专有 API 调用。 将此阅读器与本机 CCID 驱动程序一起使用,并通过 FFCA0000 访问 UID。如果没有额外的包装器,这应该可以很好地工作。此 APDU 适用于所有 PC/SC 第 3 部分兼容的非接触式智能卡读卡器。

【讨论】:

以上是关于如果您有 IClass 卡的 UID,则读取卡上的卡号的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个选项卡上的场景切换或弹出选项卡式应用程序中第一个选项卡的第二个场景?

如何在 WebView2 中设置基于选项卡的 cookie?

Android判断SD卡是不是存在的实现

arduino门禁系统卡uid默认多少

Firebase Firestore 安全规则 |如果字段值与 auth uid 相同,则允许读取

Flutter - 选项卡上的动态高度