Считать серийный идентификатор mifare с помощью pyscard - PullRequest
3 голосов
/ 03 ноября 2011

Я пытаюсь все, чтобы прочитать серийный идентификатор с карты MIFARE.Я могу использовать atr от pyscard.Но он будет давать тот же идентификатор, когда я использую несколько карт.

Или я записываю данные на карту mifare.Но как я могу это сделать.Я использую скрипт Python на сервере Ubuntu.Мой кардридер acr122u.

Пожалуйста, это будет очень полезно

Спасибо

Ответы [ 3 ]

5 голосов
/ 16 октября 2013

Вы должны использовать команды APDU, чтобы это работало.Команда для получения UID: 0xFF, 0xCA, 0x00,0x00,0x00 в случае карты mifare.

Перейдите по этой ссылке и посмотрите под API высокого уровня.Это должно дать вам представление.

1 голос
/ 01 ноября 2014

Вот некоторый быстрый и грязный код Python, который использует pyscard и печатает UID (с утверждениями вместо фактической обработки ошибок), посылая APDU из Ответ Патрика .

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)
1 голос
/ 10 января 2013

Лучшим способом использования является pyscard (модуль Python) или Ввод-вывод Java Smart Card (часть Java JDK)

...