Я новичок в программировании SmartCard, поэтому, пожалуйста, потерпите меня ..
Я пытаюсь получить анаграмматический доступ к карте памяти SLE4442 с помощью WinSCard API.При доступе к карте с помощью инструмента pcscdiag.exe отсюда: http://scm -smartpcscdiag.software.informer.com / Я получаю следующую информацию:
T = 65535
Clock =372
F = 372
D = -
N = 0
W = 0
IFSD = 252
EBC = Продольная проверка избыточности
Тип ICC на ATR = неизвестный тип
Естественно, попытка доступа к карте с использованием протокола T = 0 или T = 1 не удалась, но я могу подключиться к чтению с доступом RAW:
lReturn = SCardConnect(
(sc->hContext),
(LPCTSTR)(sc->pmszReaders),
SCARD_SHARE_EXCLUSIVE,
SCARD_PROTOCOL_RAW,
//SCARD_SHARE_EXCLUSIVE,
//SCARD_PROTOCOL_T1,
&(sc->hCardHandle),
&(sc->dwAP) );
Теперь япытаясь, в качестве первого шага, прочитать содержимое карты:
lReturn = SCardBeginTransaction(sc.hCardHandle); // successful ,err checking omitted
DWORD dwSendLength, dwRecvLength;
SCARD_IO_REQUEST pioRecvPci;
BYTE pbSendBuffer[512];
BYTE pbRecvBuffer[512];
dwSendLength = 512;
dwRecvLength = 512;
pbSendBuffer[0] = 0x00; // CLA
pbSendBuffer[1] = 0xB0; // INS
pbSendBuffer[2] = 0x00; // P1
pbSendBuffer[3] = 0x00; // P2
pbSendBuffer[4] = 0x00; // LEN
dwSendLength = 5;
lReturn = SCardTransmit(
sc.hCardHandle,
SCARD_PCI_RAW,
//SCARD_PCI_T1,
pbSendBuffer,
dwSendLength,
&pioRecvPci,
pbRecvBuffer,
&dwRecvLength
);
Я также пытаюсь установить CLA в 0xFF, и другие варианты (вложенные циклы, со значениями 0..255 дляCLA и INS)
Я получаю сообщение об ошибке 1783: RPC_X_BAD_STUB_DATA
Что я делаю не так?Что мне нужно сделать, чтобы прочитать карточку?
Заранее спасибо!