(проверить, работает ли) КриптоПро: просмотреть сохраненный пароль (пинкод) на контейнер закрытого ключа ЭЦП

Зачастую пользователи не могут вспомнить пароль (пинкод) от контейнера ЭЦП, что неудивительно меняется он раз в год при плановой смене ключа ЭЦП после чего ставится галочка «запомнить пароль» и пароль больше никогда не вводится.Сохраненный пароль можно посмотреть с помощью консольной утилиты csptest, входящей в состав КриптоПро CSP.

Утилита находится в папке с установленным КриптоПро (по умолчанию C:\Program Files\Crypto Pro\CSP\).

Переходим в директорию с программойcd «C:\Program Files\Crypto Pro\CSP\»

Смотрим имена доступных контейнеров закрытого ключа ЭЦП:csptest -keyset -enum_cont -fqcn -verifycontext

команда выводит список доступных контейнеров вида: \\.\<имя считывателя>\<имя контейнера>

После этого выводим сохраненный пароль для нужного контейнера:csptest -passwd -showsaved -container «<имя контейнера>»

PS: Данный способ подходит для КриптоПро 3.6 и выше. В КриптоПро 3.0 у утилиты csptest отсутствует опция -showsaved.

PPS: Если этот метод не помогает и у вас аппаратные контейнеры (токены), можно попробовать ввести пароль по умолчанию. Для rutoken это 12345678, для eToken 1234567890, для JaCarta PKI/ГОСТ 11111111 (1234567890 если включена опция обратная совместимость).

PPPS: Весь процесс можно автоматизировать обычным батником,который  массово достает пароли из всех доступных ключей. Большое спасибо Александру Санникову за доработку скрипта. Скачать bat-файл можно отсюда. Текст батника:


@echo off
SetLocal EnableExtensions EnableDelayedExpansion
copy «C:\Program Files\Crypto Pro\CSP\csptest.exe» >nul
chcp 1251
if exist %computername%.txt del /f /q %computername%.txt
if exist temp.txt del /f /q temp.txt
set 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.exe
set/a $ai=-1
set/a $bi=2
for /f «usebackq delims=» %%a in («temp.txt») do @(set «$a=%%a»
if «!$a:~,14!»==»AcquireContext» echo:!$a! >> %computername%.txt
if «!$a:~,8!»==»An error» echo:Увы, ключевой носитель отсутствует или пароль не был сохранен. >> %computername%.txt & echo: >> %computername%.txt
if «!$a:~,5!»==»Saved» set/a $ai=1
if !$ai! geq 0 set/a $ai-=1 & set/a $bi-=1 & echo:!$a! >> %computername%.txt
if !$bi!==0 echo: >> %computername%.txt & set/a $bi=2
)
del /f /q temp.txt
EndLocal
echo on

Ответить

Вы должны быть зарегистрированы в для возможности комментировать.