问题标签 [omnikey]

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 回答
606 浏览

mifare - APDU 响应 910B 对 DESFire EV2 卡意味着什么?

我正在通过 DESFire 命令将 DESFire EV1 和 DESFire EV2 卡编程为包装的 APDU。当一张卡片出现时,我使用 GetVersion 命令来获取 UID(然后我用它来查找卡片历史记录和多样化密钥)。我发送此命令以获取卡版本信息:

通常我会收到一些字节的响应,并91 AF表明有更多信息需要我们根据文档重复等。这适用于 DESFire EV1 和 DESFire EV2 卡,直到我们在 OMNIKEY 5x21 读卡器中使用它们(读卡器在两种型号的 HID 卡打印机中,HDP5000 和 DTC4500e)。当我们这样做时,我们得到响应但91 0B 没有数据——但仅从 EV2 卡我们看不到 EV1 的问题。我没有在任何地方看到此回复,我不清楚这可能意味着什么。

重申一下——我们只在配备 DESFire EV2 卡的全能读卡器中看到这一点。DESFire EV1 卡不这样做,我们在其他读卡器上根本没有看到这一点(到目前为止)。

我们在轮换牌方面取得了一些有限的成功。我们的一位远程工程师在卡的特定方向上取得了成功,这表明存在一些 EM/范围/天线问题,但到目前为止,QA 和生产根本无法重现这一点。

我也将这个问题发布到 NXP 论坛,但没有任何回应。这篇文章有更多细节。


2020 年更新:我很高兴91 0B再次遇到来自 Desfire 卡的回复,搜索错误并找到我多年前的旧帖子。情况完全不同,但我现在可以补充这么多:91 0B手段的回应:

在不支持该命令的状态下接收命令,或者接收到完全未知的命令。

0 投票
1 回答
962 浏览

java - omn​​ikey 3121 windows 动态 emv 读卡器和写卡器

我有一个omnikey 3121,所以我需要能够读写可以在每个终端上工作的动态emv卡。我对Java、C#、C++等方面的知识很少。所以如果你是这些领域的专家,请帮我获取一些参考源代码和文档。谢谢。

0 投票
1 回答
207 浏览

windows - Omnikey 5421 通用卡命令接口不适用于 Mifare plus SL1

我正在尝试使用 Omnikey 5421 将 Mifare Plus 卡切换到 SL1 模式,但是按照文档的说明使用“通用卡命令”界面似乎不起作用(卡不返回任何类型的输出,除了 0x9000 似乎只是命令已成功发送的 ACK - 在 0x90 0x00 之前的响应中应该有来自芯片本身的额外字节)。

使用 SCardTransmit 发送序列:

0xFF 0xA0 0x00 0x07 0x03 0x01 0x00 0x01 - 进入通用会话 - 返回 0x9000

...使用文档的附加命令:

0xFF 0xA0 0x00 0x05 6+n 01 00 F3 00 00 64 + Mifare+ 命令 00 - 无论是什么命令都返回 0x9000,即使是无效的 Mifare+ 命令

0xFF 0xA0 0x00 0x07 0x03 0x01 0x00 0x02 - 退出通用会话 - 仍然返回 0x9000

似乎唯一有效的命令是进入和退出,我在两者之间发送的任何其他命令似乎都没有任何效果,包括 RATS、Writeperso 或 Commitperso。当我在末尾添加 00 Le 字节时,返回码是 0x6400 而不是 0x9000,尽管文档说在发出 Mifare+ 命令时应该附加 Le 字节。

一旦卡在 SL1 模式下个性化(读、写、验证),所有其他操作都可以正常工作。我已经可以使用 android NFC 将卡切换到 SL1 模式,因此算法或卡似乎没有问题。

我尝试使用 PC/SC 第 3 部分文档中的命令,但返回代码“不支持”,因此似乎只有这种透明通道机制可用于发出 14443A 命令。

0 投票
0 回答
639 浏览

c++ - 如何从 OMNIKEY 3121 智能卡设备读取数据?

我有一个用 c++ 编写的软件,这个软件的功能是连接到 OMNIKEY 智能卡,并读/写一些数据,我使用以下代码进行读取:

这在那儿是没有问题的,但是在OmniKey公司在新产品(HID Global OMNIKEY Smart Card Reader)下将芯片从x-chip更改为AVIATOR后,我的代码停止了,无法通过前面的代码读取数据。我已经阅读了很多,我认为可以通过更改电压序列来解决问题,如开发人员指南 https://www.hidglobal.com/doclib/files/resource_files/plt-03635_a.0_- _synchronous-api_software_developer_guide.pdf

OK SW 开发指南(第 17 页)中还有一章建议使用十六进制值(0x1B)进行此更改 https://www.hidglobal.com/sites/default/files/resource_files/plt-03099_a.3__-omnikey_sw_dev_guide .pdf

但直到现在我无法获得哪个是合适的 API 函数,我必须使用它来传递这个建议的 Hexa 值。

0 投票
1 回答
506 浏览

c++ - 如何使用 C++ 发送 APDU 命令?

我想制作连接到 HID OMNIKEY 3128 智能卡“Aviator 芯片”的软件,我已经使用 API 函数“SCardConnect”成功连接了这个设备,但根据开发者指南(第 17 页) https://www.hidglobal .com/doclib/files/resource_files/plt-03099_a.3_-_omnikey_sw_dev_guide.pdf 我必须更改电压序列来解决读/写问题,这通过发送 APDU 命令来完成,“我如何使用 c++ 发送此命令,有没有像 SCardConnect 这样的 API 函数?

0 投票
1 回答
948 浏览

java - 如何访问 Omnikey 3121 智能卡读卡器

我想使用 Java 通过 Omnikey 阅读器访问智能卡。我找到了一些解决方案,比如 smartcardio,但它没有足够的帮助。基本上我与阅读器连接,但当我不需要它时它使用 APDU。我有一个想法,通过 USB 向我的阅读器打开流,并通过流将二进制命令放入设备,然后以相同的方式获得答案,但从技术上讲,我该如何用 Java 编写它?

我还发现了类似 usb4java 的库,但对此也有不好的看法。也许有人对这个设备有任何经验,可以给我一些提示吗?

在互联网上,关于智能卡编程的教程并不多。我也尝试使用 pyApduTool 或 HID Omnikey Sync API V2.0.,但这仅用于测试。我必须编写简单的请求才能从卡中获取信息。

0 投票
2 回答
1031 浏览

java - 使用 Omnikey 5022 读取 PACS(原始韦根)数据

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

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

如何读取智能卡数据

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

这是我从 PACS Probe 得到的:

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

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

该命令是:

它返回这个:

9E020003
// 我需要 000000310BC53938

由于我是智能卡开发的新手,因此我们将不胜感激。提前致谢。

0 投票
0 回答
158 浏览

apdu - 发送 APDU 命令进行超轻 C 身份验证

我正在尝试对超轻 c 进行身份验证,但我在以下问题上被困了几天:(使用 OK5321)

我能够打开通用会话:

认证:

第三步我尝试了以下方法://random rndbA: 0xA8, 0xAF, 0x3B, 0x25, 0x6C, 0xC7, 0x5E, 0x40

然后,当我尝试阅读时,我收到一个错误。

我做错了什么吗?

0 投票
1 回答
76 浏览

smartcard - 用于超轻型 C 的 Omnikey 5X21 APDU 写入命令

我能够使用 FFD6 命令更新 Ultralight C 上的内存,尽管似乎只能使用此命令更新内存 15< 页。

要写入 >15 页,我认为似乎需要使用类似于 FFA2 的不同命令。

该命令的示例是什么?

0 投票
1 回答
50 浏览

apdu - 锁定页面 APDU 命令 OK5X21

我一直在尝试锁定前 15 页以避免任何写操作。

下面列出了我尝试使用的命令:

注意:[0x00, 0x00, 0xFF, 0xFF]是一个字节数组

我总是觉得90 00它似乎在做某事,尽管我仍然能够写作。

之后,我阅读了与 COMPATIBILITY_WRITE 相关的内容,应该使用它,A0所以我尝试使用它重新制定我的命令,但我总是得到67 00or 6B 00

我正在使用带有 Omnikey5X21 的 Ultralight C。

难道我做错了什么?