我正在开发连接到HID Omnikey 5022读卡器的Java应用程序。我需要读取PACS位(原始Wiegand数据)。

我对此问题有完全相同的问题,我也可以使用PACS Probe应用程序查看数据:

How to read Smart Card data

不幸的是,提供的答案对我不起作用。

这是我从PACS Probe得到的:


读卡器:HID Global OMNIKEY 5022智能卡读卡器0
卡类型:PicoPass 32KS(8x2 + 16)
卡序列号(CSN,UID):32966202F8FF12E0(十六进制)
PACS位(原始韦根)数据:000000310BC53938(十六进制)


我已经尝试过在Omnikey 5023指南中找到的命令,令人惊讶的是它返回了一些数据,但这不是我所需要的。

该命令是:

commandAPDU = new CommandAPDU(new byte[] { (byte) 0xFF, (byte) 0x70, (byte) 0x07, (byte) 0x6B, (byte) 0x07,
                (byte) 0xA0, (byte) 0x05, (byte) 0xBE, (byte) 0x03, (byte) 0x80, (byte) 0x01, (byte) 0x04, (byte) 0x00 }); // Read PACS 5023


它返回以下内容:


  9E020003
  //我需要000000310BC53938


感谢您的帮助,因为我是智能卡开发的新手。

提前致谢。

最佳答案

您从阅读器获得的响应APDU是不支持的专有命令的错误代码。

您将需要一个安全会话来使用OMNIKEY 5022或OMNIKEY 5023阅读器访问PACS位数据。

除非您拥有适用于该读取器的适当文档,否则我可能会坚持使用卡序列号(UID,CSN),并使用PC / SC(或pcsclite)的Java包装器连接到读取器和卡。

然后发出(通过SCardTransmit(FFCA0000 APDU)来获取https://PACSprobe.com的示例输出中显示的UID(32966202F8FF12E0)

至于Java:使用smartcardio lib。对于本地PC / SC来说,这是一个很好的包装

将安全通道协议移植到Java上需要做很多工作。调用第三方库可能更容易。

10-06 09:21