我正在尝试使用 mifare 卡读取序列号。我可以使用 pyscard 的 atr。但是当我使用多张卡片时,他会给出相同的 ID。
还是我在 mifare 卡上写数据。但我该怎么做。我在 ubuntu 服务器上使用 python 脚本。我的读卡器是acr122u。
请这将非常有帮助
谢谢
为此,您应该使用 APDU 命令。如果是 mifare 卡,获取 UID 的命令是 0xFF,0xCA,0x00,0x00,0x00。
按照此链接查看高级 api。这应该给你一个想法。
最好的使用方式是pyscard(Python 模块)或Java Smart Card I/O(Java JDK 的一部分)
这是一些使用pyscard并通过从Patrick's answer发送 APDU 来打印 UID(使用断言代替实际错误处理)的快速而肮脏的 Python 代码。
from smartcard.scard import *
hresult, hcontext = SCardEstablishContext(SCARD_SCOPE_USER)
assert hresult==SCARD_S_SUCCESS
hresult, readers = SCardListReaders(hcontext, [])
assert len(readers)>0
reader = readers[0]
hresult, hcard, dwActiveProtocol = SCardConnect(
hcontext,
reader,
SCARD_SHARE_SHARED,
SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1)
hresult, response = SCardTransmit(hcard,dwActiveProtocol,[0xFF,0xCA,0x00,0x00,0x00])
print(response)