Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2014, 14:12   #1
qwaker
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 25
По умолчанию чтение смарт карты

Всем доброго времени суток! Надеюсь кто нибудь сможет помочь разобраться с этой проблемой. Имеется HID-устройство для чтения смарт карт OMNIKEY 5427 CK и HID-карта iClass (приложена фотография). Используя библиотеку winscard.dll без проблем можно считать UID и ATR карты, однако мне нужно считать первые пять чисел после звездочки, это если можно так сказать индивидуальный номер карты. Скитаясь по разным форумам и тематическим сайтам нашел лишь информацию, что данная информация содержится в другом "блоке памяти" карты, однако примеров кода не встретил.
http://stackoverflow.com/questions/4...how-to-get-uid
по этой ссылке пытаются сделать что то аналогичное, но как я понял ничего из этого не вышло. Может кто то сталкивался с этим? Для получения информации с карты служат методы SCardConnect и SCardGetStatusChange из библиотеки winscard. Буду благодарен за любую информацию
Изображения
Тип файла: jpg 20140919_151743.jpg (81.3 Кб, 150 просмотров)
qwaker вне форума Ответить с цитированием
Старый 23.09.2014, 08:27   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Код:
[StructLayout(LayoutKind.Sequential)]
public struct SCARD_IO_REQUEST
{
   public int dwProtocol;
   public int cbPciLength;
}

[DllImport("winscard.dll")]
public static extern int SCardTransmit(int hCard, ref SCARD_IO_REQUEST pioSendRequest,    ref byte SendBuff, int SendBuffLen, ref SCARD_IO_REQUEST pioRecvRequest,
ref byte RecvBuff, ref int RecvBuffLen);

Код:
private SmartcardErrorCode GetUID(ref byte[] UID)
    {
        byte[] receivedUID = new byte[10];
        UnsafeNativeMethods.SCARD_IO_REQUEST request = new UnsafeNativeMethods.SCARD_IO_REQUEST();
        request.dwProtocol = 1; //SCARD_PROTOCOL_T1);
        request.cbPciLength =    System.Runtime.InteropServices.Marshal.SizeOf(typeof(UnsafeNativeMethods.SCARD_IO_REQUEST));
        byte[] sendBytes = new byte[] { 0xFF, 0xCA, 0x00, 0x00, 0x04 }; //get UID command      for Mifare cards

        int outBytes = receivedUID.Length;
        int status = SCardTransmit(_hCard, ref request, ref sendBytes[0], sendBytes.Length,  ref request, ref receivedUID[0], ref outBytes);

        UID = receivedUID.Take(8).ToArray(); 
        return status;
    }
Это пробовали?

Или ЭТО?
Или ЭТО?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось WorldMaster; 23.09.2014 в 08:34.
WorldMaster вне форума Ответить с цитированием
Старый 23.09.2014, 08:31   #3
qwaker
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 25
По умолчанию

Сейчас попробую
qwaker вне форума Ответить с цитированием
Старый 23.09.2014, 11:11   #4
qwaker
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 25
По умолчанию

К сожалению все приводит к тому, что я нахожу UID карты. WorldMaster спасибо за помощь
qwaker вне форума Ответить с цитированием
Старый 23.09.2014, 11:34   #5
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от qwaker Посмотреть сообщение
К сожалению все приводит к тому, что я нахожу UID карты. WorldMaster спасибо за помощь
А что считывает то?? покажите
Разве то что вы считываете не содержит этот код? Он же уникальный для каждой карты.

Вот ТУТ Вроде как полный список команд для карт. Посмотрите может и вам чтото подойдет.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось WorldMaster; 23.09.2014 в 12:59.
WorldMaster вне форума Ответить с цитированием
Старый 23.09.2014, 12:53   #6
qwaker
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 25
По умолчанию

Считывает UID : 00 92 DC 00 F8 FF 12 E0
и ATR : 3B 8F 80 01 80 4F 0C A0 00 00 03 06 0A 00 18 00 00 00 00 7A
qwaker вне форума Ответить с цитированием
Старый 23.09.2014, 13:00   #7
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от qwaker Посмотреть сообщение
Считывает UID : 00 92 DC 00 F8 FF 12 E0
и ATR : 3B 8F 80 01 80 4F 0C A0 00 00 03 06 0A 00 18 00 00 00 00 7A
Посмотрели по ссылке последней?? там в командах может есть чтото нужное?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 23.09.2014, 13:21   #8
qwaker
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 25
По умолчанию

Сижу разбираюсь потихоньку
qwaker вне форума Ответить с цитированием
Старый 23.09.2014, 15:07   #9
qwaker
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 25
По умолчанию

Входящий параметр
Код:
byte[] sendBytes = new byte[] { 0xFF, 0xCA, 0x00, 0x00, 0x04 }
в SCardTransmit вроде имеет значение, что будет возвращено в массив. Пока не могу понять почему используются именно эти значения
qwaker вне форума Ответить с цитированием
Старый 23.09.2014, 15:26   #10
qwaker
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 25
По умолчанию

В режиме работы считывателя как клавиатуры он выдает в блокнот следующее:
0692dc00f8ff12e0 01be876a, где до пробела это UID карты, а 01be876a после нехитрых манипуляций с отбрасываниями битов становится требуемым 17333.
Программно пока удалось получить 0692dc00f8ff12e0 6282 и 0692dc00f8ff12e0 9, это если подменивать вышеуказанный массив sendBytes
qwaker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение CID номера SD карты. lengaz Помощь студентам 12 17.09.2013 18:46
Смарт теги Ципихович Эндрю Microsoft Office Word 33 04.09.2013 11:39
Ищем специалиста(смарт-карты,бонус.карты и т.п) modob1 Фриланс 3 20.01.2012 11:09
Смарт-теги в Ворде Ципихович Эндрю Microsoft Office Word 2 04.09.2011 08:11
Чтение и запись карты. Ckomoroh Gamedev - cоздание игр: Unity, OpenGL, DirectX 12 22.01.2010 21:40