Зачастую пользователи не могут вспомнить пароль (пинкод) от контейнера ЭЦП, что неудивительно меняется он раз в год при плановой смене ключа ЭЦП после чего ставится галочка «запомнить пароль» и пароль больше никогда не вводится.Сохраненный пароль можно посмотреть с помощью консольной утилиты csptest, входящей в состав КриптоПро CSP.
Утилита находится в папке с установленным КриптоПро (по умолчанию C:Program FilesCrypto ProCSP).
Переходим в директорию с программой
Смотрим имена доступных контейнеров закрытого ключа ЭЦП:
команда выводит список доступных контейнеров вида: \.<имя считывателя><имя контейнера>
После этого выводим сохраненный пароль для нужного контейнера:
PS: Данный способ подходит для КриптоПро 3.6 и выше. В КриптоПро 3.0 у утилиты csptest отсутствует опция -showsaved.
PPS: Если этот метод не помогает и у вас аппаратные контейнеры (токены), можно попробовать ввести пароль по умолчанию. Для rutoken это 12345678, для eToken 1234567890, для JaCarta PKI/ГОСТ 11111111 (1234567890 если включена опция обратная совместимость).
PPPS: Весь процесс можно автоматизировать обычным батником,который массово достает пароли из всех доступных ключей. Большое спасибо Александру Санникову за доработку скрипта. Скачать bat-файл можно отсюда. Текст батника:
@echo offSetLocal EnableExtensions EnableDelayedExpansioncopy «C:Program FilesCrypto ProCSPcsptest.exe» >nulchcp 1251if exist %computername%.txt del /f /q %computername%.txtif exist temp.txt del /f /q temp.txtset NameK=«»for /f «usebackq tokens=3,4* delims=» %%a in (`csptest -keyset -enum_cont -fqcn -verifycontext` ) do (set NameK=%%a;csptest -passwd -showsaved -container «!NameK!» >> temp.txt)del /f /q csptest.exeset/a $ai=-1set/a $bi=2for /f «usebackq delims=» %%a in («temp.txt») do @(set «$a=%%a»if «!$a:~,14!»==»AcquireContext» echo:!$a! >> %computername%.txtif «!$a:~,8!»==»An error» echo:Увы, ключевой носитель отсутствует или пароль не был сохранен. >> %computername%.txt & echo: >> %computername%.txtif «!$a:~,5!»==»Saved» set/a $ai=1if !$ai! geq 0 set/a $ai-=1 & set/a $bi-=1 & echo:!$a! >> %computername%.txtif !$bi!==0 echo: >> %computername%.txt & set/a $bi=2)del /f /q temp.txtEndLocalecho on
Скачать отдельно утилиту csptest для версий 3.6 3.9 и 4.0 можно отсюда.
Источник