не пробрасывается Smart Card через usbip

Свойства, ошибки, замечания и проблемы определенных версий WTware
Ответить
Гость

не пробрасывается Smart Card через usbip

Сообщение Гость »

Подскажите, почему не пробрасывается смарт карты через usbip. Конкретно между Linux (сервер) и Windows (клиент). Устройство в диспетчере видется и драйвер устанавливается, но пользовательская программа через Smart Card Api не работает? Event логах появляются сообщения:
Сообщение 1:
Источник: ScardSvr
Тип: Ошибка Код (ID): 602
При инициализации драйвера считывателя WDM не удалось открыть устройство считывателя: Отказано в доступе.
Сообщение 2:
Источник: ScardSvr
Тип: Ошибка Код (ID): 514
Диспетчер ресурсов смарт-карт не смог добавить считыватель \\?\USB#Vid_08e6&Pid_3437#1&431a56f&11&01#{50dd5230-ba8a-11d1-bf5d-0000f805f530}: Отказано в доступе.

В процессе исследования проблемы обнаружилось, что при запуске службы смарт кард и при доступе к драйверу функцией CreateFileA (см. Лог ниже) выскакивает ошибка INVALID_HANDLE_VALUE (5 = Отказано в доступе). Скажите куда копать дальше?
Проблема в Virtual USB bus (busenum.sys)?
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
log 1
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
# TID Module API Return Error
70 3788 SCardSvr.exe CreateFileA ( "\\?\USB#Vid_08e6&Pid_3437#1&431a56f&10&01#{50dd5230-ba8a-11d1-bf5d-0000f805f530}", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL ) INVALID_HANDLE_VALUE 5 = Отказано в доступе.
71 3788 kernel32.dll RtlInitAnsiString ( 0x0006fa90, "\\?\USB#Vid_08e6&Pid_3437#1&431a56f&10&01#{50dd5230-ba8a-11d1-bf5d-0000f805f530}" )
72 3788 kernel32.dll RtlAnsiStringToUnicodeString ( 0x7ffdfbf8, 0x0006fa90, FALSE ) STATUS_SUCCESS
73 3788 kernel32.dll RtlInitUnicodeString ( 0x0006fa68, "\\?\USB#Vid_08e6&Pid_3437#1&431a56f&10&01#{50dd5230-ba8a-11d1-bf5d-0000f805f530}" )
74 3788 kernel32.dll RtlIsDosDeviceName_U ( "\\?\USB#Vid_08e6&Pid_3437#1&431a56f&10&01#{50dd5230-ba8a-11d1-bf5d-0000f805f530}" ) 0 0x00000000 = STATUS_WAIT_0
75 3788 kernel32.dll RtlEqualUnicodeString ( 0x0006f9ec, 0x7c885340, TRUE ) FALSE
76 3788 kernel32.dll RtlEqualUnicodeString ( 0x0006f9ec, 0x7c88504c, TRUE ) FALSE
77 3788 kernel32.dll RtlEqualUnicodeString ( 0x0006f9ec, 0x7c885384, TRUE ) FALSE
78 3788 kernel32.dll RtlDosPathNameToNtPathName_U ( "\\?\USB#Vid_08e6&Pid_3437#1&431a56f&10&01#{50dd5230-ba8a-11d1-bf5d-0000f805f530}", 0x0006fa68, NULL, 0x0006fa40 ) TRUE
79 3788 kernel32.dll NtCreateFile ( 0x0006fa88, GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE | 128, 0x0006fa28, 0x0006fa60, NULL, 0, 0, FILE_OPEN, FILE_NON_DIRECTORY_FILE, NULL, 0 ) STATUS_ACCESS_DENIED 0xc0000022 = {Отказ доступа} Процесс запросил доступ к объекту, однако права доступа не предоставлены.
80 3788 kernel32.dll RtlFreeHeap ( 0x00080000, 0, 0x00085d18 ) TRUE
81 3788 kernel32.dll RtlFreeHeap ( 0x00080000, 0, NULL ) TRUE
82 3788 kernel32.dll RtlNtStatusToDosError ( STATUS_ACCESS_DENIED ) 5
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
При прямом обращении к драйверу при помощи собственной программы RfReaderTest.exe, обращения проходят (см. Лог 2).
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
log 2
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TID Module API Return Error
841 2700 RfReaderTest.exe CreateFileA ( "\\?\usb#vid_08e6&pid_3437#1&431a56f&10&01#{50dd5230-ba8a-11d1-bf5d-0000f805f530}", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL ) 0x00000064
842 2700 kernel32.dll RtlInitAnsiString ( 0x0012fe48, "\\?\usb#vid_08e6&pid_3437#1&431a56f&10&01#{50dd5230-ba8a-11d1-bf5d-0000f805f530}" )
843 2700 kernel32.dll RtlAnsiStringToUnicodeString ( 0x7ffdebf8, 0x0012fe48, FALSE ) STATUS_SUCCESS
844 2700 kernel32.dll RtlInitUnicodeString ( 0x0012fe20, "\\?\usb#vid_08e6&pid_3437#1&431a56f&10&01#{50dd5230-ba8a-11d1-bf5d-0000f805f530}" )
845 2700 kernel32.dll RtlIsDosDeviceName_U ( "\\?\usb#vid_08e6&pid_3437#1&431a56f&10&01#{50dd5230-ba8a-11d1-bf5d-0000f805f530}" ) 0 0x00000000 = STATUS_WAIT_0
846 2700 kernel32.dll RtlEqualUnicodeString ( 0x0012fda4, 0x7c885340, TRUE ) FALSE
847 2700 kernel32.dll RtlEqualUnicodeString ( 0x0012fda4, 0x7c88504c, TRUE ) FALSE
848 2700 kernel32.dll RtlEqualUnicodeString ( 0x0012fda4, 0x7c885384, TRUE ) FALSE
849 2700 kernel32.dll RtlDosPathNameToNtPathName_U ( "\\?\usb#vid_08e6&pid_3437#1&431a56f&10&01#{50dd5230-ba8a-11d1-bf5d-0000f805f530}", 0x0012fe20, NULL, 0x0012fdf8 ) TRUE
850 2700 kernel32.dll NtCreateFile ( 0x0012fe40, GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE | 128, 0x0012fde0, 0x0012fe18, NULL, 0, 0, FILE_OPEN, FILE_NON_DIRECTORY_FILE, NULL, 0 ) STATUS_SUCCESS
851 2700 kernel32.dll RtlFreeHeap ( 0x00140000, 0, 0x001527f0 ) TRUE
852 2700 kernel32.dll RtlFreeHeap ( 0x00140000, 0, NULL ) TRUE
aka
Разработчик
Разработчик
Сообщения: 11864
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: не пробрасывается Smart Card через usbip

Сообщение aka »

Гость писал(а):Подскажите, почему не пробрасывается смарт карты через usbip.
Заранее предупреждаю: пробрасывать смарт-карту с целью залогиниться в виндовс бесполезно.
Гость писал(а):В процессе исследования проблемы обнаружилось, что при запуске службы смарт кард и при доступе к драйверу функцией CreateFileA (см. Лог ниже) выскакивает ошибка INVALID_HANDLE_VALUE (5 = Отказано в доступе). Скажите куда копать дальше?
Дальше пойти на http://usbip.sourceforge.net/ скачать исходники, читать и думать. Я никогда не разбирался в виндовом драйвере и ничего по теме подсказать не смогу. Мы для этого проброса писали только службу wtware usb initiator. Если НЕ указывать ip сервера в конфиге терминала в параметре shared_usb, т.е. не пользоваться нашей службой, а вызывать руками usbip.exe, то на виндовсе никакой наш код выполняться не будет, а будет выполняться только открытый код usbip.

PS: втварь знает про 08e6:3437. Если нужно и есть время, можно попробовать пробросить это штатным перенаправлением смарт-карты через RDP.

PPS: попробуй из терминальной сессии увидеть смарт-карту, физически подключенную к серверу, т.е. воткнутую в серверный USB. Чего-то мне подсказывает, что у тебя это не получится :wink:
Гость

Re: не пробрасывается Smart Card через usbip

Сообщение Гость »

Спасибо за ответ, буду думать дальше!
Ответить

Вернуться в «О версиях WTware»