问题标签 [pyscard]

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 投票
2 回答
1862 浏览

python - 如何检索基本的智能卡信息

我正在使用一个简单的智能卡读卡器,并且希望使用相同的读卡器检索存储在 EMV 芯片上的信息。目前,我找到了一个库,称为 pyscard,它使用python.

目前,我已经设法使用文档和一些命令代码来获取我的卡的 ATR,包括 Applet 代码,但无法检索任何实际重要的数据,例如 CardHolder 名称、PAN、到期日、卡类型(Visa、MasterCard...)等。

ATR 或 AID 是否有用?我是否必须处理或分析 ATR 和 AID 才能获得命令代码?

是否有可能获取数据,因为在任何地方都没有命令代码,但是很多堆栈溢出文章几乎都没有在维基百科和整体文档中提供详尽的解释。

pyscard 文档似乎也没有提供此类信息。

此外,是否可以访问用户已购买的库,例如作为列表:4.5 欧元、22 欧元、5 欧元等或不可以,或者这些数据是否记录在芯片上?

我找到的最接近的来源是这个链接:https ://iso8583.info/lib/EMV/TLVs,这里有类似重复的文章用 Python 和 pyscard 检索智能卡的 PAN,这里有一些文档https://www.openscdp.org /scripts/tutorial/emv/reademv.html

这里也是 pyscard 的文档:https ://pyscard.sourceforge.io/index.html

感谢您的回答,如果不是因为投票,我发现许多类似的查询都收到了这样的投票。

0 投票
0 回答
99 浏览

python - 移除 RFID 标签后读卡器关闭,直到程序重新启动后才会重新打开

我正在尝试使用 ACR122u NFC 阅读器与 NFC 标签进行通信。该程序启动良好,当一个标签连接时,它能够读取并执行所有所需的操作。但是,一旦 NFC 标签被移除,阅读器就会关闭,并且在程序重新启动之前不会打开。这是我用于轮询读者的代码:

循环继续按预期运行,但阅读器已关闭并且不会再次连接。

任何帮助将非常感激。

0 投票
1 回答
2557 浏览

python - 在 python 中使用智能卡在网站上进行身份验证

所以我有一张公司提供的智能卡,它看起来像一张带芯片的信用卡。此卡在插入读卡器后登录网站。

现在我必须用python编写一个程序,它可以读取卡片并使用Requests模块登录该网站。我试图找出如何使用 python 脚本从卡中检索此身份验证数据,然后使用此数据,但我部分成功。我安装了pyscard

到目前为止,我能够传输数据并从卡中检索一些数据。我在 INS (来源:ISO 7816)中发送了用于某种内部身份验证的命令 88 (我假设此身份验证数据用于登录网站),但我得到以下响应:

我在 ISO 7816 中找不到此响应的含义。有人可以告诉我我是否有正确的方法或提示可以从这里继续前进吗?简而言之,我想知道如何使用 python 脚本和智能卡登录网站?

0 投票
1 回答
141 浏览

python - 将动态数据转换为数组中的十六进制

我正在使用 python 中的智能卡并使用 pyscard 库。我有以下数据:

WRITE_PREF = [0X80, 0X12, 0X00, 0X01, 0X12, 0X01, 0X00, 0X00, 0X20, 0X00, 0X00, 0X00]

我正在接收字符串格式的随机数据(长度为 10)。转换为十六进制后,我得到包含随机字符串数据的十六进制值的数组。

问题:十六进制值数组具有字符串形式的值。

示例:['0x33','0x32'....]

当我附加 WRITE_PREF 和这个十六进制数据时,我得到这样的数组:

[128, 18, 0, 1, 18, 1, 0, 0, 32, 0, 0, 0, '0x33', '0x32']

我将第一部分转换为十六进制,并将整数的数组值替换为十六进制。当我使用命令传输数据时:

我得到错误。我很确定这是因为数组中的值是十六进制字符串。如果我手动传输一些数据,例如:

[0x33,0x32,0x30]

它工作正常。所以问题一定是因为数组数据中的引号。例子:

['0x33','0x32','0x30']

有没有办法解决这个问题?

0 投票
0 回答
253 浏览

docker - 访问 docker 容器内的外部读卡器(智能卡读卡器、nfc 读卡器等)设备

我正在尝试制作一个使用读卡器并希望对该解决方案进行 dockerise 的应用程序。到目前为止,我已经对应用程序进行了 docker 化(在 Windows 上使用 WSL 的 Linux 容器(docker 桌面)),但问题是我似乎无法访问容器内的阅读器。

为了检查访问权限,我lsusb在运行后使用了一个简单的命令docker exec -it <container name> /bin/bash

我提到了以下方法: Docker - 一种访问主机 USB 或串行设备的方法?

另外我正在使用Pyscard python 库来访问应用程序的阅读器。

0 投票
0 回答
59 浏览

python - 在读取、写入和其他基本命令方面需要帮助以控制 ACR1281U-C1 (Mifare-4K)

我有用于命令的 ACR1281U-C1 的 API 文档。
还将 ACR1281U-C1 连接到 PC 并使用 Pyscard 包及其实用软件
,我可以运行以下命令来读取和写入卡的内存。

  1. #认证卡#FF
    CA 00 00 00

  2. #加载认证密钥
    FF 82 20 00 06 FF FF FF FF FF FF

  3. #Auth Block(用于验证 E0 块读取)#FF
    86 00 00 05 01 00 E0 60 00

但得到 63 00 响应码,表示“操作失败”。

因此,任何一个都可以指导读取、写入数据到(Mifare-4K)卡内存的过程。

0 投票
0 回答
56 浏览

contactless-smartcard - 从智能卡读取数据 - pyscard

我正在尝试使用 ACS ACR122U 读卡器从“MIFARE Classic 4K - 仿真(6212 Classic),诺基亚”卡中读取数据。

我需要读取的扇区是数字 18,密钥 A 是 A0A1A2A3A4A5(我可以用智能手机读取它)。尽管如此,我无法将密钥加载到阅读器,也无法进行身份验证。

我设法获得了 UID、阅读器和 ATR。但是当我尝试读取一个扇区时,我正在寻找一些东西。

编辑:我设法用相同的代码(但另一个键)读取了另一张卡。用那张卡,我收到 90 00 正确的钥匙,63 00 错误的钥匙。但是有了这张卡……什么都没有。

编辑2:据我所知,自动协议激活可能有问题。如何设置图层以读取 MIFARE Classic 内存区域?

0 投票
1 回答
150 浏览

python - 验证 SIM 卡上的 ADM 以更改 IMSI

我一直在阅读 ETSI TS 102 221 V8.2.0 (2009-06) 以了解如何与 sim 卡交互并使用 pyscard 在 python 中与它们交互。

我已经能够成功读取 ICCID 和当前的 IMSI,但是当我尝试更新 IMSI 时,我得到了“9804”,这意味着“访问条件不满足,身份验证失败”。

PIN 被禁用,IMSI 文件的更新条件似乎是管理员号码,这是我从提供商那里获得的。
PIN 应该通过“验证 Pin”命令进行身份验证,但 ADM 号码似乎不存在这样的命令。

我一直在查看“身份验证”命令,但我无法理解它。我在网上找到了几个 APDU,人们声称它们是验证 ADM 号码的正确方法,但它们都不起作用。
除了发送正常的 APDU(CLA、INS、P1、P2、Lc(P3)、<data>、Le)之外,还有什么其他的方法可以验证 ADM?

总结一下:
从文档中,我找不到创建验证 ADM 号码的 APDU 的方法(可能不够了解)。
非常感谢您对此事的任何和所有帮助或见解。

0 投票
1 回答
63 浏览

python - 使用 ACR1252 和 pyscard 对尾随块中的密钥进行 Mifare 4K 更改返回错误“99”

我们从供应商处收到 Mifare 4k 卡,该供应商对每个扇区预告片进行如下预编码:

这样做时,供应商将访问位设置为FF0780并且读取密钥(密钥 A)和写入密钥(密钥 B)保持出厂默认设置FFFFFFFFFFFF

当尝试使用 pyscard 和编码器 ACR1252 写入新的读取密钥(密钥 A)和写入密钥(密钥 B)和访问位时,我收到响应代码“99”,这是一个未记录的错误代码。我认为发生这种情况是因为访问位已更改,因为直接来自工厂的空白卡不会产生此错误。

在这个例子中,我们更新了尾部块,使得 Key A 和 Key B 是FFFFFFFFFFFF并且访问位是787788

知道为什么供应商设置了访问位的卡返回响应代码 99 吗?

注意:身份验证工作正常,只是写入步骤失败。

0 投票
1 回答
156 浏览

driver - 运行某些 APDU 失败,说明使用协议 T0 传输失败。Falscher 参数

我在使用 ACS ACR38U-I1、Python 3.7 和 pyscard 在 Windows 10 下访问 SLE4428 卡时遇到问题。我正在使用制造商目前为 Windows 提供的最新驱动程序。

主要问题是运行某些 APDU 失败,说明Failed to transmit with protocol T0. Falscher Parameter(= 错误参数,错误代码 87)。然而,在 Raspberry Pi 上使用相同的阅读器运行完全相同的代码可以完美运行。我没有在 Pi 上安装任何特定的驱动程序。

我正在使用此代码运行 APDU:

此代码在两个平台上都可以正常工作。然而,尝试使用身份验证 [0xff, 0x20, 0x00, 0x01, 0x03, 0xff, 0xff] 会导致Windows 上描述的崩溃。我已经尝试过股票 Windows 驱动程序以及使用不同的协议,但没有成功。

另一个 Windows 独有的奇怪行为:插入卡时,读卡器的 LED 快速闪烁,大约需要 9 秒才能访问卡。

这是我第一次尝试与硬件接口,所以这可能很明显,但我无法弄清楚。对于已知在此配置中工作的(仍然可用的)阅读器,我将不胜感激任何输入和/或建议。