当前位置: 首页 > 知识库问答 >
问题:

pcsc-sharp Mifare认证

魏誉
2023-03-14

我正在使用 pcsc 库与 ACR122U 读卡器通信读/写信息 MIFARE 经典 1k 卡。

在熟悉了库和APDU概念后,我能够在我的应用程序中使用卡UID作为标识符。现在我需要在卡上设置自己的ID。因此,我阅读了一些关于恩智浦MIFARE的手册(如MF1S70YYX_V1),也获得了一些关于ISO 7816-4的信息。

我意识到在访问卡内存以执行读/写操作之前需要进行身份验证,我知道标准的Key值。

我从GitHub下载了pcsc-sharp示例并运行了Mifare1kTest示例。我工作但卡。第 36 行中的负载键失败。LoadKey 中 Apdu 命令的响应值是 SW1=99 SW2=0,我在任何文档中都找不到。注释掉“抛出新异常”部分可使示例正常工作。

我现在的问题是,哪些值是传递给Card. LoadKey的正确值,分别是用于Apdu命令中参数的正确值。“密钥号”(部门号-扇区/块组合)是什么意思?如果示例有效,是否需要LoadKey调用?

共有1个答案

尉迟轶
2023-03-14

你的问题很宽泛,但这些应该对你有用。代码用注释解释

var loadKeySuccessful = card.LoadKey(
    KeyStructure.VolatileMemory,
    0x00, // first key slot
    new byte[] {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF} // key
);
 类似资料:
  • PCSC/Perl 允许使用 PCSC/lite 库与智能卡读卡器进行通信,可以方便在 Perl 程序中使用。

  • pcsc-lite 封装了访问使用 SCard API (PC/SC) 访问智能卡设备的开发包。

  • 我有多个ACR122T智能卡设备,没有唯一的序列号(来自ACS)。我需要知道我从pcsc lite中连接到哪个物理智能卡。我通过使用lsusb知道物理设备在哪个USB端口上,但如何将该USB端口信息映射到ScardeTAttribute(SCARD_ATTR_device_UNIT)? 似乎地图应该在操作系统级别,因为我找不到从pscs lite API中读取USB端口信息(lsusb结果)的方法

  • 我使用WinSCard列出所有阅读器,这会给我一个如下列表: 这很好,但我不知道哪个名字属于哪个读卡器。 这些名字来自哪里?它们是如何建造的? 到目前为止,我发现:在注册表中有一个键。在此项下,您可以找到与读卡器的“服务”(我通过查询WMI注册表找到)匹配的子项。例如:读卡器的服务是。 此子项()具有另一个子项,该子项具有多个有趣的值: :DWORD,连接的读卡器数量 我猜这些是附加在“友好名称”

  • 我正在开发一个C#Java卡(智能卡)程序,并试图利用github上的PCSC sharp库。 这是我的请求的“短/tl; dr”版本: PCSC清晰示例涵盖了Iso7816 Case2短。有人能纠正我下面的例子吗,或者给我提供一个Iso7816 Case3短(命令数据。没有响应数据)和Case4短(命令数据。预期的响应数据)的例子? 这是我的请求的"长"版本:在Java卡上,我同时使用标准和自定

  • 我无法找到一种REST webservice方式来身份验证(登录)并知道他的角色(授权)。虽然,Openbravo维基说有一种登录的方法,但没有提供任何其他关于其网址等细节。有人能在这方面提供帮助吗?谢啦 编辑 我也在Openbravo论坛上发布了这个问题。希望这将有利于其他人。