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

Программирование, Хакинг, Безопасность, Софт, Железо, а также всё связанное с компьютерами
Аватара пользователя
Андрей
Архитектор
Сообщения: 5710
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 486 раз
Поблагодарили: 394 раза

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

Сообщение Андрей » 12 ноя 2020, 20:28

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

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

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

Весь процесс можно автоматизировать обычным батником, который массово достает пароли из всех доступных ключей. Большое спасибо Александру Санникову за доработку скрипта. Скачать 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

Аватара пользователя
Андрей
Архитектор
Сообщения: 5710
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов
Благодарил (а): 486 раз
Поблагодарили: 394 раза

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

Сообщение Андрей » 12 ноя 2020, 20:30