Что нового

Нужна реализация определения подключения смарт-карт Е-токен и Ру-токен.

Booster

Новичок
Сообщения
48
Репутация
1
Версия AutoIt: v3.3.8.1

Описание: Здравствуйте. Нужна реализация определения подключения смарт-карт E-token и Ru-token, на подобии как определение подключения флэшки. Хотелось бы, что-бы скрипт выдавал некое значение при подлючении E-токен и еще какое то значение при подключении Ру-токен, которое потом можно было бы объявить переменной, по которой можно определить какая смарт карта была подключена.

Примечания:
 
Автор
B

Booster

Новичок
Сообщения
48
Репутация
1
Пожалуйста помогите кто чем может. Я уже просто глаза в кровь сбил, не могу найти решение. Очень нужно данное решение, вообще кто нибудь хоть, что нибудь может сказать? :'(
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Booster
я думаю, большинство пользователей форума знать не знают, что это за токены :smile:
 

eropov

Jury
Сообщения
195
Репутация
25
Kaster
я думаю, большинство пользователей форума знать не знают, что это за токены :smile:

Токены это флешка хранящая в себе ключи, допустим от электронных систем оплаты.
Даже понятия не имею как с ними работать, было бы интересно увидеть решение :smile:
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Booster
Если это вроде флешки - то код отсюда должен подойти:
http://autoit-script.ru/index.php/topic,2301.0.html
 
Автор
B

Booster

Новичок
Сообщения
48
Репутация
1
eropov не совсем верно выразился. eToken и ruToken, это USB устройства, но это не флэшнакопители, у токенов иной тип. Поэтому мне этот (http://autoit-script.ru/index.php/topic,2301.0.html) скрипт не подойдет, т.к. он определяет только флэшки. Кстати eToken определяется в диспетчере задач, может кто подскажет как отследить появление устройства в диспетчере?
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
Run(@ComSpec &' /k wmic path Win32_USBHub');требует прав админа

Сначала запусти и посмотри шо кажет, после суй токен и запускай код ешё раз. Раскажешь видно токен здесь аль нет.
 
Автор
B

Booster

Новичок
Сообщения
48
Репутация
1
По указанной команде ruToken определился так:
[box title=TitleBox] Rutoken S 0 FALSE Win32_USBHub
Rutoken S USB\VID_0A89&PID_0020\5&1BF1F549&0&1
Rutoken S USB\VID_0A8
9&PID_0020\5&1BF1F549&0&1 OK Win32_ComputerS
ystem GOSORG
[/box]
eToken не определяется, но при этом виден в диспетчере устройств:
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
Run(@ComSpec &' /k wmic path Win32_USBHub where caption="Rutoken S" get description /every:2 /repeat:5')

Эта команда раз в 2 сек 5 раз опрашивает usb девайсы на предмет наличия токена. Твоя задача запустить код, сунуть токен и смотреть.
 
Автор
B

Booster

Новичок
Сообщения
48
Репутация
1
Да команда отрабатывается. Но теперь не понятно, а как мне это отследить в скрипте? Не запускать же консоль? А по eToken можешь, что-нибудь подсказать (он таким образом не определяется)?
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
Win32_ControllerHastHub
Win32_DiskDrive
Win32_DiskDrivePhysicalMedia
Win32_DiskDriveToDiskPartition
Win32_DiskPartition
Win32_DriverForDevice
Win32_HeatPipe
Win32_IDEController
Win32_IDEControllerDevice
Win32_InfraredDevice
Win32_PnPDevice
Win32_PnPEntity
Win32_PnPSignedDriver
Win32_PnPSignedDriverCIMDataFile
Win32_PortConnector
Win32_SystemDevices
Win32_SystemDriver
Win32_SystemSlot
Win32_SystemSystemDriver
Win32_USBController
Код:
Run(@ComSpec &' /k wmic path Win32_USBHub')
Здесь заменяешь Win32_USBHub на пункты из списка и пытаешься найти етокен. Об отслеживании в скрипте не беспокойся - это решаемая проблема.
 
Автор
B

Booster

Новичок
Сообщения
48
Репутация
1
Вот, что нашел:
По параметру Win32_PnPSignedDriver - в списке присутствует драйвер
[box title=TitleBox]Устройство чтения смарт-карт Microsoft Usbccid (WUDF)
SMARTCARDREADER USB\VID_0529&PID_0620\5&836C4F8&0&1
wudfusbcciddriver.inf
[/box]
По остальным параметрам ничего связанного с токенами найти не смог.
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$objService = ObjGet("WinMgmts:\\.\root\cimv2")
$objEventSource = $objService.ExecNotificationQuery _
            ("SELECT * FROM __InstanceCreationEvent " & _
             "WITHIN 5 WHERE (TargetInstance ISA 'Win32_USBHub' " & _
              "AND TargetInstance.caption='Rutoken S') ")
While 1
  $objEvent = $objEventSource.NextEvent
ExitLoop
WEnd
MsgBox(0,'','1')
$oMyError = 0
Func MyErrFunc()
	MsgBox(4096, "AutoItCOM Test", "We intercepted a COM Error !" & @CRLF & @CRLF & _
			"err.description is: " & @TAB & $oMyError.description & @CRLF & _
			"err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _
			"err.number is: " & @TAB & hex($oMyError.number, 8) & @CRLF & _
			"err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _
			"err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
			"err.source is: " & @TAB & $oMyError.source & @CRLF & _
			"err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _
			"err.helpcontext is: " & @TAB & $oMyError.helpcontext)
	Exit 1
EndFunc   ;==>MyErrFunc

Вот для рутокена. А в Win32_PnPSignedDriver запись про етокен постоянно или появляется как вставишь девайс?
 
Автор
B

Booster

Новичок
Сообщения
48
Репутация
1
sngr
Да, прости, забыл написать. В Win32_PnPSignedDriver запись про етокен постоянно присутствует в не зависимости подключен токен или нет.
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Тебе надо сделать как здесь http://autoit-script.ru/index.php/topic,10850.msg71839.html#msg71839 только заменяя Win32_USBHub на элементы из списка. Если не найдёшь, ищи в тырнете программу делающую снимки реестра: нажал кнопку - сохранились текущие значения, нажал ещё раз сохранились значения на текущий момент, вычев одно из другова, программа получает список изменеий в реестре. Тебе надо сделать снимок реестра, вставить токен и сделать ещё один, тем самым обнарижив ключи , что постоянно добавляются, когда суёшь токен.
 
Автор
B

Booster

Новичок
Сообщения
48
Репутация
1
sngr
Спасибо с рутокен вроде должно получиться (по крайней мере определение подключения работает как нужно), как наколдую отпишусь, про благодарности тоже не забуду :smile:.
P.S.
Тебе надо сделать как здесь Re: Нужна реализация определения подключения смарт-карт Е-токен и Ру-токен. только заменяя Win32_USBHub на элементы из списка.
Я вроде так уже делал? В итоге только в Win32_PnPSignedDriver есть инфа о драйвере етокен, но это не поможет, она там постоянно.
P.P.S Про реестр спасибо за совет, буду пробовать, потом отпишусь. Ты главное не пропадай, у меня только на тебя надежда :smile:


Добавлено:
Сообщение автоматически объединено:
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
While 1
If RegRead('HKLM\SYSTEM\ControlSet001\Control\DeviceClasses\{d86354cc-a2ac-4223-95b9'& _
'-2e48ce154434}\##?#{892EDE5E-BE49-443c-A0B3-005D74F2D69C}#ScFilter#6&25a0651d&1&53#'& _
'{d86354cc-a2ac-4223-95b9-2e48ce154434}\Control','ReferenceCount')=1 Then
MsgBox(0,'','1')
ExitLoop
EndIf
Sleep(5000)
WEnd

Имеет смысл и для рутокена сделать определение через реестр, ищешь ключи с ReferenceCount.
 
Автор
B

Booster

Новичок
Сообщения
48
Репутация
1
sngr
Твой последний код не сработал, не реагирует на Е-токен никак. Попробовать перебрать все параметры реестра с ключами 'ReferenceCount' ?
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Да.
Код:
msgbox(0,'',regread('hklm ....','ReferenceCount'))
 
Автор
B

Booster

Новичок
Сообщения
48
Репутация
1
sngr
В общем проверил, в реестре есть ключи, которые "отзываются" на подключение етокен, но только на моем ПК, если проверить ключи на других ПК то их просто нет...В общем этот вариант не прокатил.
 
Верх