在ACR1252U NFC读卡器上强制PC/SC驱动程序并使用python进入卡模拟模式

问题描述 投票:0回答:1

目的:在Mac上使用python让ACR1252U NFC读写器进入卡模拟模式

我在使用 PC/SC 驱动程序在 macOS Catalina 10.15.3 上使用 ACS ACR1252U 读卡器时遇到问题。我从 ACS 网站安装了驱动程序。

通过使用 pyscard (http://pyscard.sourceforge.net/) 库,以下 Python 代码可以工作并在 windows 计算机上返回正确的输入卡模拟模式响应:Enter Card Emulation Mode Command & Response Format

import smartcard

hresult, hcontext = smartcard.scard.SCardEstablishContext( smartcard.scard.SCARD_SCOPE_USER )

hresult, readers = smartcard.scard.SCardListReaders( hcontext, [] )
print(readers)

hresult, hcard, dwActiveProtocol = smartcard.scard.SCardConnect(hcontext, readers[0], smartcard.scard.SCARD_SHARE_DIRECT, 0)

CTL_CODE = smartcard.scard.SCARD_CTL_CODE(3500)

apdu = [0xE0, 0x00, 0x00, 0x40, 0x03, 0x01, 0x00, 0x00]

hresult, response = smartcard.scard.SCardControl( hcard, CTL_CODE, apdu )

但是在 Mac 上却报错。我按照 this 答案更改了 plist 文件,但我仍然遇到相同的错误:

python3 nfc.py
['ACS ACR1252 1S CL Reader(1)', 'ACS ACR1252 1S CL Reader(2)']
Traceback (most recent call last):
  File "nfc.py", line 17, in <module>
    hresult, response = smartcard.scard.SCardControl( hcard, CTL_CODE, apdu )
  File "/usr/local/lib/python3.7/site-packages/smartcard/scard/scard.py", line 408, in SCardControl
    return _scard.SCardControl(hcard, dwControlCode, inbuffer)
SystemError: <built-in function SCardControl> returned NULL without setting an error

我使用自制程序安装了 libnfc,但我不确定如何根据答案的第二部分编译它。

任何帮助将不胜感激。

python nfc macos-catalina pcsc lib-nfc
1个回答
0
投票

你找到这个问题的答案了吗?我仍然有同样的问题。我想将读卡器置于卡模拟模式:

同样的错误:

(.venv) ➜ acr1252u python3 acr1252.py ['ACS ACR1252 双读卡器'] 回溯(最近一次调用最后一次): 文件“/Users/pchandak/Desktop/acr1252u/acr1252.py”,第 14 行,位于 hresult, 响应 = smartcard.scard.SCardControl( hcard, CTL_CODE, apdu ) 文件“/Users/pchandak/Desktop/acr1252u/.venv/lib/python3.9/site-packages/smartcard/scard/scard.py”,第 383 行,在 SCardControl 中 返回 _scard.SCardControl(hcard, dwControlCode, inbuffer) 系统错误:返回 NULL 且未设置错误

© www.soinside.com 2019 - 2024. All rights reserved.