我正在嘗試所有使用mifare卡讀取序列號。 我可以使用pyscard的atr。但是當我使用多張牌時,他會給出相同的ID。閱讀序列號mifare與pyscard
或者我在mifare卡上寫數據。但我怎麼做到這一點。我正在使用ubuntu服務器上的python腳本。我的讀卡器是一個acr122u。
請這將是非常有益的
感謝
我正在嘗試所有使用mifare卡讀取序列號。 我可以使用pyscard的atr。但是當我使用多張牌時,他會給出相同的ID。閱讀序列號mifare與pyscard
或者我在mifare卡上寫數據。但我怎麼做到這一點。我正在使用ubuntu服務器上的python腳本。我的讀卡器是一個acr122u。
請這將是非常有益的
感謝
最好的方式來使用是pyscard(Python模塊)或Java Smart Card I/O(Java的JDK的一部分)
你應該使用APDU此的命令工作。 如果使用mifare卡,獲取UID的命令是0xFF,0xCA,0x00,0x00,0x00。
跟着this link,看看高級別的api。這應該給你一個想法。
這是一些快速和髒的python代碼,它使用pyscard並通過從Patrick's answer發送APDU來打印UID(斷言代替實際的錯誤處理)。
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)