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

Зачастую пользователи не могут вспомнить пароль (пинкод) от контейнера ЭЦП, что неудивительно меняется он раз в год при плановой смене ключа ЭЦП после чего ставится галочка "запомнить пароль" и пароль больше никогда не вводится.Сохраненный пароль можно посмотреть с помощью консольной утилиты 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


Скачать отдельно утилиту csptest для версий 3.6 3.9 и 4.0 можно отсюда.

 
1 1 1 1 1 1 1 1 1 1 Рейтинг 5.00 [1 Голос]

Комментарии   

 
0 #59 Sysadmin 21.05.2021 10:51
Цитирую tdm:
Если пароль сохранён в криптопро, но вы его забыли, то просто откройте криптопро-сервис-изменить пароль. Работает 100%. Сам проверил. У меня контейнеры были сохранены в реестре и ваш метод не сработал. После вводы второй команды с именем контейнера, выходит окно "вставьте носитель".

Изменить пароль не всегда работает. На аппаратных ключах может стоять запрет на изменение пароля пользователем..
Цитировать
 
 
0 #58 tdm 21.05.2021 09:24
Если пароль сохранён в криптопро, но вы его забыли, то просто откройте криптопро-серви с-изменить пароль. Работает 100%. Сам проверил. У меня контейнеры были сохранены в реестре и ваш метод не сработал. После вводы второй команды с именем контейнера, выходит окно "вставьте носитель".
Цитировать
 
 
+2 #57 Максим 04.12.2020 20:19
Все отлично помогло!!!!
Цитировать
 
 
+2 #56 vgs 05.10.2020 15:21
Метод не сработал.
Цитировать
 
 
+1 #55 Сергей 16.09.2020 19:00
батник прикольный, но может кто может написать аналогичный на подбор пароля?
Цитировать
 
 
+2 #54 Дмитрий 25.08.2020 12:00
А есть возможность восстановить из код безопасности csp?
Цитировать
 
 
+2 #53 Игорь 30.05.2020 16:19
Спасибо огромное. На площадки по торгам входил без проблем, а вот для входа на Госуслуги потребовался пароль от контейнера. Если честно, то я его никогда не знал. А тут ввёл цифры : 12345678 и вуаля, всё получилось.
Цитировать
 
 
0 #52 Виктор 06.03.2020 09:15
команду chcp надо в nul выводить чтоб не показывалась.
В итоге батник доработал и так вышло:

@echo off
SetLocal EnableExtension s EnableDelayedExpansion
copy "C:\Program Files\Crypto Pro\CSP\csptest .exe" >nul
chcp 1251>nul
......
EndLocal
chcp 866>nul
echo Пароли (если они были и доступны) скопированы в файл "%computername%.txt"
echo. & pause
exit
Цитировать
 
 
0 #51 Виктор 06.03.2020 08:21
Я на OEM 866 перевёл т.к. не всегда 1251 работает и всё отлично
Цитировать
 
 
0 #50 Виктор 06.03.2020 08:18
Цитирую Евгений:
в каком притоне вас учили батники писать?
избыточная не совместимая бредятина... вот так лучше! 8)

@echo off
chcp 1251
set path=%path%;C:\Program Files\Crypto Pro\CSP\;
for /f "usebackq tokens=3,4* delims=\" %%a in (`csptest -keyset -enum_cont -fqcn -verifycontext` ) do (
for /f "usebackq skip=3 tokens=1,2" %%i in (`csptest -passwd -showsaved -container "%%a"`) do if "%%j"=="" echo %%a: %%i
)


Вы правы. они кодировку не указали и надо дорабатывать
Цитировать
 

Добавить комментарий