!shbitchid minilector AIR NFC vz美元 (http://www.dontesta.it/vp-tsontent/uploads/2020/11/ИМГ_1728-сцалед.йпг)

Bit4id CIE miniLector

前段时间我收到了** miniLector CIE **ofBit4id。它是一款智能卡读卡器非接触式接口** NFC(近场通信)**,设计用于同时使用电子身份证 (CIE)和传统非接触式卡,包括卡CNS(国民服务卡)带双接口。在本文的过程中,我将尝试指导您完成本阅读器在操作系统** Ubuntu Server 20.04 LTS (Focal Fossa) **上的安装过程,后者安装在Raspberry Pi 4上。

** 为什么要在 Raspberry Pi 上安装智能卡读卡器?** 这是创建基于使用带 NFC 接口的智能卡的访问系统的第一步。我想要达到的最后一个场景类似于我最近在文章Raspberry Pi - TS-CNS的应用示例中讲述的内容,并且肯定通过图 1 中的图表更加清晰。

在图 1 的可能场景中,我们将智能卡读卡器通过 USB 连接到 Raspberry Pi(在本例中为版本 4);一个由四个继电器组成的模块通过** GPIO**(通用输入/输出)连接到后者。在 Raspberry Pi 上,安装的软件安全地管理对继电器模块的访问,以进行激活和停用操作。

** Access Manager ** 组件管理对来自通过读卡器(** Smart Card Manager ** 组件)从智能卡中提取的数据的安全信息的访问,然后这些数据用于通过 * * LDAP ** 服务(轻量级目录访问协议),后者还提取有关新识别的个人可以在四个继电器上执行的操作的信息,这些操作由 ** Relay Module Manager ** 组件管理。

** UI **(用户界面)组件,可以是文本的(参见项目raspberry-pi-access-via-ts-cns)或图形,表示与最终用户的交互点,即正式授权的人可以对连接到 Raspberry Pi 的继电器执行操作。

[! 图 1 - 可能的智能卡和 Raspberry Pi 集成方案] (https://www.dontesta.it/wp-content/uploads/2020/11/possibile-scenario-integration-smartcard-raspberry-pi. .png)

图 1 - 智能卡和 Raspberry Pi 集成的可能场景

您如何看待这种集成方案?为了实现图 1 所示(其实现不是本文的主题),我们必须让 ** miniLector CIE ** 阅读器在 Ubuntu Server 上正常工作,记住后者是安装在 Raspberry 上的皮。

1 .要求

让我们看看完成CIE miniLector阅读器的安装必不可少的要求是什么。

  • ** 树莓派 4 **:4系列的所有型号都可以使用;我个人使用的是带有 8 GB RAM 内存的版本,特别是我购买了Melopero Raspberry Pi 4 计算机官方高级套件(8GB RAM,白色)。

  • ** 操作系统 **:Ubuntu Server 20.04.1 LTS用于 ** ARM ** 平台。

  • Reader** miniLector CIE **可直接从Bit4id.

  • ** 与互联网的连接**。 Raspberry Pi 必须能够访问 Internet 以下载正确安装智能卡读卡器所需的所有附加软件。

我假设您的 Raspberry Pi 上已安装并正确配置了 Ubuntu Server 20.04.1 LTS 操作系统。如果您尚未在 Raspberry Pi 上安装操作系统,我建议您遵循出色的教程如何在您的 Raspberry Pi上安装 Ubuntu Server,这将让您在 30 分钟内安装并运行 Ubuntu Server你的树莓派。下图显示了我在 Raspberry Pi 4 上安装 Ubuntu Server 的欢迎消息。

[! 图 2 - 登录 Raspberry Pi 4 时的 Ubuntu Server 欢迎消息] (https://www.dontesta.it/wp-content/uploads/2020/11/ubuntu-server-20-lts -welcome-树莓派-4.png)

图 2 - 登录 Raspberry Pi 4 时的 Ubuntu Server 欢迎消息

2 .智能卡读卡器驱动程序

至于智能卡读卡器,无需特定特性,只要符合国际标准** PC / SC **\ * \ * (个人电脑/智能卡) ,可在 Windows 上使用, Mac OS 和 Linux/Unix 操作系统,并符合 \ * \ ISO 7816-3 标准。 要考虑的关键特性是对标准协议的支持*CCID(芯片卡接口设备)**。

在对智能卡读卡器进行了各种研究和比较之后,选择了读卡器** miniLector CIE **,同时也评估了之前对读卡器的积极体验 miniLector EVO Indoor USB 2.0 始终生产自Bit4id。 CIE miniLector 阅读器反映了上述所有基本特征,以及对 CCID 标准的支持,这在 Linux / Unix / Mac OS 环境中尤为重要。有关此阅读器的更多信息,请参阅数据表(PDF 格式)。

此智能卡读卡器附带驱动程序,适用于最常见的操作系统,大多数时候在最新的操作系统上通常不需要安装提供的驱动程序;操作系统本机 CCID 驱动程序就足够了。

** 为什么我们的情况略有不同? ** 随读卡器分发的驱动程序仅适用于 ** x86 ** 和 ** x86 \ _64 ** 平台,我们需要 CCID ** 驱动程序 for ARM 平台 ** 和** 支持 CIE miniLector 阅读器**。

使用操作系统Ubuntu Server 20.04.1 LTS是 CCID 驱动程序的分发版本1.4.31-1 (package libccid)。但是,此版本不支持 CIE miniLector。 Bit4id 生产并支持 CCID 驱动程序 1.4.31 版本的设备如下所示。

  • miniLector-s

  • 密匙

  • 上午

  • CKey4

  • 令牌 FIPS vz

  • 数字 DNA 密钥

  • Digital-DNA Key BT

  • 数字 DNA 密钥

  • TokenME EVO v2

  • 迷你讲师

  • miniLector AIR EVO

  • miniLector 蓝色

Ludovic Rousseau,CCID 驱动的作者和维护者,为智能卡读卡器定义了四个类。Bit4id 生产的属于 ** 应该可以工作的类别。**

1.支持读卡器

2.应该工作读者

3.不支持读卡器

4.禁用读卡器

由于播放器附带的驱动程序仅适用于x86和x86_64平台,我们如何为这个特定播放器添加对Ubuntu Server附带的CCID驱动程序的支持?

解决方案比您想象的要简单,我们将在下一章的课程中看到这个问题的答案。所以,把你的注意力重新集中起来,让我们继续下一章。

3 .如何为 CIE miniLector 添加 CCID 驱动程序支持

为了实现我们的目标,我们需要一步一步地进行。

  1. CIE miniLector 阅读器的硬件识别。

2.启用SourceRepositoryofUbuntu Server (Focal Fossa)

  1. 为构建新驱动版本libccid准备工作目录。

  2. 安装驱动构建所需的包。

  3. 准备源文件并应用补丁以添加对 CIE miniLector 阅读器的支持。

  4. 开始构建、安装和验证新驱动程序的运行过程。

在继续执行各个步骤之前,我们启动 Raspberry Pi,然后将阅读器连接到可用的 USB 端口之一。随着 Ubuntu Server 控制台的运行并在我们面前,我们已准备好执行上述步骤。

3.1 CIE miniLector 读卡器的标识

读取器的识别对于检索随后将用于将补丁正确应用到当前版本的 CCID 驱动程序的必要信息至关重要。每个硬件组件都**“受洗”**可以这么说,它有自己的标识符。命令** lsusb **是允许我们检索我们感兴趣的信息的命令。

[! 图 3 - 通过 lsusb 命令识别智能卡读卡器] (https://www.dontesta.it/wp-content/uploads/2020/11/lsusb-command-for-retrieve-information-smart-card -reader.png)

图 3 - 通过 lsusb 命令识别智能卡读卡器

从命令lsusb -v -t的输出中,我们能够轻松识别,也感谢类 (** Chip / SmartCard **),CIE miniLector reader,其标识符为 ** 0x25dd **: ** 0x3403 **,其中,第一个标识供应商或生产商,在本例中为 Bit4id,第二个标识特定设备。关于供应商或制造商以及设备标识的信息,我们先放在一边,这些在以后会有用。

3.2 启用源存储库

我想很明显我们需要CCID驱动源版本1.4.31-1(libccid包)。为了满足这个要求,启用 Ubuntu Server 20.04.1 LTS (Focal Fossa) 的源存储库,编辑文件/etc/apt/sources.list并取消注释下图中突出显示的行就足够了。

图 4 - 为 Ubuntu Server Focal Fossa (universe) 启用源

修改完成后,必须发出命令sudo apt update来更新源包的本地缓存。我们可以使用命令apt show source libccid检查 CCID 驱动程序的源包现在是否可用。

图 5 - 输出 del comando apt show source libccid

图 5 – 输出 del comando apt show source libccid

3.3 工作目录准备

一旦我们确定 CCID 驱动程序源代码可用,我们就可以准备工作目录,用于生成支持 CIE miniLector 阅读器的新驱动程序。例如,我们可以使用命令mkdir ~/ccid_minilector_cie在您的主目录中创建 ** ccid \ _minilector \ _cie ** 目录

3.4 安装构建所需的包

为了构建 CCID 驱动源,您需要安装开发工具包(autoconf、make、gcc 等)。要通过 apt 命令安装的软件包组如下所示。

1.构建必不可少

  1. 开发脚本

安装这两个包的命令是sudo apt install build-essential devscripts

3.5 准备源码和打补丁CCID驱动

在我们的工作目录(~/ccid_minilector_cie)中,您需要准备 CCID 驱动程序源,然后继续应用将添加对智能卡读卡器驱动程序支持的补丁。使用命令apt source libccid,我们将能够得到驱动源。请记住在我们的工作目录中运行命令。下图显示了我们应该通过执行命令获得的输出。

图 6 - 输出 del comando apt source libccid

图 6 – 输出 del comando apt source libccid

在上面指示的命令执行结束时,在工作目录中我们应该找到以下元素:

  1. ** ccid_1.4.31-1.dsc **。描述 CCID 驱动程序包的文本文件;

  2. ** ccid_1.4.31.orig.tar.bz2 **。包含原始源文件的存档;

  3. ** ccid_1.4.31-1.debian.tar.xz **。包含适用于任何补丁的 Debian 特定文件的存档(参见上图);

  4. ** ccid-1.4.31 **。包含使用任何补丁准备的 CCID 驱动程序源文件的目录,并将使用 Debian 发行版的标准构建系统进行编译。

** 将补丁应用到 CCID 驱动程序源以添加对 CIE miniLector 的支持是什么意思?** 这意味着我们需要检索识别智能卡读卡器的信息并将其添加到文件readers/supported_readers.txt中。此文件包含应该与 CCID 驱动程序一起正常工作的所有设备的列表。

为了方便操作,我做了所谓的补丁文件,这将应用到readers/supported_readers.txt文件中,使用如下所示的命令。

curl -s https://gist.githubusercontent.com/amusarra/265d952d9f47db355d5182a8bada3121/raw/87ae860c89e1a89043ec6127fc766c20a54d022f/BIT4ID_miniLector_AIR_NFC_v3.patch \
 | patch --verbose -b readers/supported_readers.txt

进入全屏模式 退出全屏模式

[! [图 7 - 使用补丁命令]的补丁应用程序(https://res.cloudinary.com/practicaldev/image/fetch/s--T4joFtMg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.dontesta.it/wp-content/uploads/2020/11/apply-patch-to-driver-ccid-1024x265.png "Figura 7 - Applicazione della patch tramite il comando patch")] (https://www.dontesta.it/wp-content/uploads/2020/11/apply-patch-to-driver-ccid.png)

图 7 - 使用 patch 命令应用补丁

补丁的应用会在 reader/supported_readers.txt 文件中添加以下行:

  • 025dd:03403:BITCHID 迷你讲师 AIR NFC vz

该行包括制造商标识,然后是设备标识,然后是设备本身的描述;但小心点! ** 为什么设备描述不是 miniLector CIE? ** 为什么 miniLector CIE 指的是商品名称,而 ** miniLector AIR NFC v3 ** 是设备的技术名称。

现在已经应用了补丁,您可以进入 CCID 驱动程序的构建阶段。

3.6 构建、安装和验证新的CCID驱动

构建的结果将是格式为[** deb ](https://en.wikipedia.org/wiki/Deb_(file_format)的驱动程序文件。要启动构建过程,请从 ~/ccid_minilector_cie/ccid-1.4.31 目录运行命令debuild -b -uc -us。在构建过程之后,我们会得到deb格式的驱动文件(位于~/ccid_minilector_cie/)。下图高亮显示了deb格式的CCID驱动的libccid_1.4.31-1_arm64.deb**文件。

[! 图 8 - 构建过程后 deb 格式的 CCID 潜水员] (https://www.dontesta.it/wp-content/uploads/2020/11/driver-ccid-after-build.png)

图 8 - 构建过程后 deb 格式的 CCID 驱动程序

使用sudo dpkg -i libccid_1.4.31-1_arm64.deb命令,我们将安装新的 CCID 驱动程序。现在已经安装了新的驱动程序,让我们使用apt show libccid命令检查安装情况。

下面显示的输出表明驱动程序已正确安装。我会说我们处于一个很好的阶段。现在我们可以继续验证刚刚编译和安装的驱动程序是否确实正常工作。

!【图9-检查安装新驱动CCID】(https://www.dontesta.it/wp-content/uploads/2020/11/check-driver-ccid-after-installation.png)

图 9 - 新 CCID 驱动安装验证

4 .读者测试

驱动程序已经正确安装在我们的树莓派上,因此我们可以验证操作系统是否正确地看到了阅读器,并执行了一个简单的阅读测试。对于测试操作,我们将使用必须使用sudo apt install pcsc-tools pcscd opensc命令安装的 PC / SC 工具。

** pcscd **是 ** pcsc-lite ** 和 MuscleCard 框架的守护程序。它是一个资源管理器,用于协调与连接到系统的智能卡和智能卡和加密令牌读取器的通信。 pcscd 通常在操作系统从/etc/init.d/pcscd启动时启动。它允许应用程序访问智能卡和读卡器,而无需了解后者的实现细节。最后,pcscd 协调读取器驱动程序的加载,它实际上负责加载 CIE miniLector 读取器(技术上称为 miniLector AIR NFC v3)的驱动程序。

pcsc-lite 的目的是提供一个交叉兼容的 API(称为 winscard),用于将基于 PC/SC 的应用程序从 Windows 迁移到 Unix。

在对 pcscd 和 pcsc-lite 进行了非常简短的概述之后,我们使用命令opensc-tool -l以在输出中看到 CIE miniLector 可用作我们的 Raspberry Pi 的智能卡读卡器。注意设备的技术名称,** miniLector AIR DI v3 **(见下图)。

[! 图 10 - 连接到 Raspberry Pi的智能卡读卡器列表] (https://www.dontesta.it/wp-content/uploads/2020/11/opensc-tool-lists-smart-card-readers .png)

图 10 - 连接到 Raspberry Pi 的智能卡读卡器列表

该测试的积极结果证实了我们应用补丁并随后安装在我们的 Raspberry Pi 上的驱动程序可以正常工作。因此,从现在开始,我们可以使用读卡器来读写非接触式智能卡。

就本文而言,我们已经成功地达到了预期的效果。不过还是给大家举个读卡的例子** Mifare Classic 1K **,特别是看看如何读卡的标识或者序列号。为此,我们可以使用命令opensc-tool -s "FF CA 00 00",其结果如下所示。四个字节** B4 90 90 1E **代表卡的序列号。字节 ** FF CA 00 00 ** 代替代表** APDU(应用协议数据单元)**,它发送给阅读器,允许我们获取请求的信息,在这种情况下是序列号的论文。

!【图11-读取Mifare Classic 1K卡的序列号】(https://www.dontesta.it/wp-content/uploads/2020/11/read-the-serial-of-the- mifare-经典-apdu.png)

图 11 - 读取 Mifare Classic 1K 卡的序列号

下图显示了有关读者及其正在阅读的内容的更多有趣信息。此信息是使用命令** pcsc \ _scan **获得的。

[! 图 12 - PC/SC 扫描命令的输出] (https://www.dontesta.it/wp-content/uploads/2020/11/output-pcsc_scan_command.png)

图 12 - PC/SC 扫描命令输出

5 \。资源

这里有一些有用的资源,也是本文的参考。

1、CCID免费软件驱动——https://ccid.apdu.fr/

  1. 智能卡 (Debian) –https://wiki.debian.org/Smartcards#libccid

  2. Ludovic Rousseau 的博客 –https://ludovicrousseau.blogspot.com/

  3. pyscard:python 的智能卡库 -https://github.com/LudovicRousseau/pyscard

  4. Debian 构建教程 –https://wiki.debian.org/BuildingTutorial

6.电子身份证:如何使用CIE访问在线服务

7.CIEfacile

6 .结论

我想写这篇文章作为对开头段落中所示场景创建的必要介绍(参见图 1 - 智能卡和 Raspberry Pi 集成的可能场景)。向 CCID 驱动程序添加对这种智能卡读卡器的支持非常简单,甚至保留了 Debian 派生系统采用的构建标准,例如我们用作参考操作系统的 Ubuntu Server。

我知道这篇文章的内容太具体了,但我相信你们中的一些人可能会觉得它很有用,或者已经不得不处理这种情况。在后一种情况下,我想知道问题是如何处理的。

从源代码构建 CCID 驱动程序的过程通常可以应用于所有从 Debian 派生的操作系统,Ubuntu 就是其中之一。然后可以在 Raspberry Pi OS(以前称为 Raspbian)上应用相同的过程。

使用 Raspberry Pi 对和智能卡读卡器的应用领域数不胜数,我将尽快发表文章,向您展示第一段中提出的场景的实现。 ** 使用 Raspberry Pi 和智能卡读卡器,您有什么想法或实现了什么? **

文章Raspberry Pi: How to Install CIE miniLector on Ubuntu Server 20.04 LTS似乎是Antonio Musarra 的博客上的第一篇。

[](http://feeds.feedburner.com/~ ff/dontesta/blog?au003dF7vd5xNkAk4:6l6DAk2HjM4:dnMXMwOfBR0)[](http://feeds.feedburner.com/~ff/dontesta/blog?au003dF7vd5xNkAk4:6l6DAk2HjM4:D70277 2pKExk10)2!(https://res.cloudinary.com/practicaldev/image/fetch/s--DCS1IRW9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/http://feeds.feedburner.com/%257Eff/dontesta/blog%3Fd%3DYwkR-u9nhCs)](http://feeds.feedburner.com/~ff/dontesta/blog?au003dF7vd5xNkAk4:6l6DAk2HjM4:YwkR-u9nhCs)[](http://feeds.feedburner.com/~ff/ dontesta/blog?a u003d f7vd5xnkak4:6l6dak2hjm4:f7zbnmyn0lo)[](http://feeds.feeds.feedburner.com/ feedburner.com/~ff/~ff/dontesta/dontesta/dontesta/blog? (http://feeds.feedburner.com/~ff/dontesta/blog?au003dF7vd5xNkAk4:6l6DAk2HjM4:qj6IDK7rITs)[](http://feeds.feedburner.com/~ff/dontesta/blog? au003dF7vd5xNkAk4:6l6DAk2HjM4:KwTdNBX3Jqk)[](http://feeds.feedburner.com/~ff/dontesta/blog?au003dF7vd5xNkAk4:6l6DAk2Hj M4:gIN9vFwOqvQ)

[](https://res.cloudinary.com/practicaldev/image/fetch/s--oggaPQXv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/http://feeds.feedburner.com/ %257Er/dontesta/blog/%257E4/F7vd5xNkAk4)

Logo

更多推荐