Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Крипто про он же csptest.exe

Ответить
Настройки темы
Любой язык - Крипто про он же csptest.exe

Новый участник


Сообщения: 46
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте! Уважаемые умы!
У меня по работе очень много разных эцп, от разных УЦ. Соответственно каждый УЦ при формировании ключа, обзывает его по своему, а зачастую это выглядит вот так "iojng-er4gedfgv-454g-45g45g" и т.д. Ну в общем все ключи называются по разному, бухгалтера несчастные по пол часа ищут нужное ЭЦП для работы с компанией по отчетности.
Смысл все темы таков, хочу взять все ключи на флешке (их порядка 1500) и через скрипт каждую подпись переименовать по человечески по образцу (НО информацию о ключе нужно брать из открытого ключа "Сертификата" т.к. актуальная и полная информация только там) образец "Ромашка, ООО от 13.01.2019 СКБ Контур" есть ли такая возможность?

Отправлено: 11:52, 02-07-2019

 

Старожил


Сообщения: 427
Благодарности: 72

Профиль | Отправить PM | Цитировать


Цитата:
и через скрипт каждую подпись переименовать по человечески по образцу
вы уверены что после переименования, ваши ключи будут открываться?

возьмите пустую флешку, скопируйте туда 1 один ключ, проверьте что он открывается
потом переименуйте руками, в соответствии с
Цитата:
из открытого ключа "Сертификата"
и попробуйте снова открыть этот ключ


ну и напишите, что у вас получилось потом, здесь
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:28, 02-07-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 46
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Ageron:
Цитата:
и через скрипт каждую подпись переименовать по человечески по образцу
вы уверены что после переименования, ваши ключи будут открываться?
возьмите пустую флешку, скопируйте туда 1 один ключ, проверьте что он открывается
потом переименуйте руками, в соответствии с
Цитата:
из открытого ключа "Сертификата"
и попробуйте снова открыть этот ключ
ну и напишите, что у вас получилось потом, здесь »
В ручном режиме ни каких проблем не вызывает переименование названия ключа, все прекрасно работает. 1500 тысячи ключей вручную сидеть переименовывать то себе удовольствие.

Отправлено: 13:17, 02-07-2019 | #3


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Не думаю что у многих под рукой найдется какой-нибудь ненужный ключ над которым можно поиздеваться. Пока не узнаем как прочитать данные по ключу на токене и как и в какое место записать найденную информацию из командной строки - кина не будет.
Ageron, можно ключи переименовывать, это не изменяет информации в самом ключе.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:05, 02-07-2019 | #4


Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469

Профиль | Отправить PM | Цитировать


Что из себя представляет тот файл из которого предполагается читать информацию?

Отправлено: 15:29, 02-07-2019 | #5


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1231
Благодарности: 515

Профиль | Отправить PM | Цитировать


Цитата ownsmir:
В ручном режиме ни каких проблем не вызывает переименование названия ключа, все прекрасно работает. 1500 тысячи ключей вручную сидеть переименовывать то себе удовольствие. »
powershell умеет это делать, вот только выше верно говорят - данные необходимо получать, а вот в каком виде - вопрос насущный.
1. переименование файлов - самый простой вопрос.
2. Чтобы получить необходимое имя, в которое требуется переименовать файл, необходим пример ключей
А так, в общем случае:
powershell 6.0 и выше:
Код: Выделить весь код
#requires -v 6.0
$arr = dir *.p12
$arr|%{
	"Введите пароль ключа $($_.fullname)"
	$pass = read-host -assec
	$cert = get-pfxcertificate $_.fullname -pass $pass
	$hash = ($cert.subject -split ',')|convertfrom-stringdata
	$name = $hash.cn
	ren $_.fullname $($name+$cert.serialnumber+$_.extension) -whatif
}
не рекомендую запускать сразу на куче файлов, тестируйте на двух-трех-четырех...

Для powershell 2.0
Код: Выделить весь код
#requires -v 2.0
$arr = dir *.p12
$arr|%{
	"Введите пароль ключа $($_.fullname)"
	$pass = read-host -assec
	$cert = new-object system.security.cryptography.x509certificates.x509certificate2
	$cert.import(
		$_.fullname,$pass,[security.cryptography.x509certificates.x509keystorageflags]"defaultkeyset"
	)
	$hash = ($cert.subject -split ',')|convertfrom-stringdata
	$name = ($hash|?{$_.cn}).cn
	ren $_.fullname $($name+"_"+$cert.serialnumber+$_.extension) -whatif
}

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 02-07-2019 в 18:08.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:31, 02-07-2019 | #6


Новый участник


Сообщения: 46
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png 14.PNG
(12.5 Kb, 7 просмотров)

Цитата Charg:
Что из себя представляет тот файл из которого предполагается читать информацию? »
Файл представляет собой папку на флешке в ней есть 6 файлов (прикреплю скрин) таких папок 1500+ штук.

Отправлено: 10:50, 03-07-2019 | #7


Новый участник


Сообщения: 46
Благодарности: 0

Профиль | Отправить PM | Цитировать


Как я представляю себе работу скрипта:
1. Скрипт идет на указанную флешку
2. Находит 1 папку с файлами .key
3. Считывает информацию по ЭЦП по открытому сертификату (установленному в контейнере данной папки)
4. Берет нужную информацию "Наименование организации", "дата выдачи", "Наименование организации выдавшей данную подпись" (Тензор, Контур, Астрал и т.д.)
5. Копирует данную ЭЦП на другую флешку с новым именем по максе "ООО Ромашка 01.01.2018 Тензор"
6. Переходит к следующей папке и т.д.

Можно через утилиту csptest.exe или еще если есть инструменты.
Я пытался уже через CMD и csptest сделать часть данных действий, но это если через txt файл тупо копировать переставив в нужном порядке название ключа исходное. Но не все ключи назваются понятно, как залезть в сертификат ключа через csptest я так и не нашел команду... По этому обратился к Вам, знающим больше моего

Цитата YuS_2:
Сообщения: 385
Благодарности: 149
Профиль | Отправить PM | Цитировать
Цитата ownsmir:
В ручном режиме ни каких проблем не вызывает переименование названия ключа, все прекрасно работает. 1500 тысячи ключей вручную сидеть переименовывать то себе удовольствие. »
powershell умеет это делать, вот только выше верно говорят - данные необходимо получать, а вот в каком виде - вопрос насущный.
1. переименование файлов - самый простой вопрос.
2. Чтобы получить необходимое имя, в которое требуется переименовать файл, необходим пример ключей
А так, в общем случае:
powershell 6.0 и выше:
Код:
#requires -v 6.0
$arr = dir *.p12
$arr|%{
"Введите пароль ключа $($_.fullname)"
$pass = read-host -assec
$cert = get-pfxcertificate $_.fullname -pass $pass
$hash = ($cert.subject -split ',')|convertfrom-stringdata
$name = $hash.cn
ren $_.fullname $($name+$cert.serialnumber+$_.extension) -whatif
}
не рекомендую запускать сразу на куче файлов, тестируйте на двух-трех-четырех...
Для powershell 2.0
Код:
#requires -v 2.0
$arr = dir *.p12
$arr|%{
"Введите пароль ключа $($_.fullname)"
$pass = read-host -assec
$cert = new-object system.security.cryptography.x509certificates.x509certificate2
$cert.import(
$_.fullname,$pass,[security.cryptography.x509certificates.x509keystorageflags]"defaultkeyset"
)
$hash = ($cert.subject -split ',')|convertfrom-stringdata
$name = ($hash|?{$_.cn}).cn
ren $_.fullname $($name+"_"+$cert.serialnumber+$_.extension) -whatif
} »
Можно как то убрать проверку пароля? Они без пароля все

Отправлено: 11:51, 03-07-2019 | #8


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1231
Благодарности: 515

Профиль | Отправить PM | Цитировать


Цитата ownsmir:
Файл представляет собой папку на флешке в ней есть 6 файлов (прикреплю скрин) таких папок 1500+ штук. »
Вопрос был про содержание, а не про место хранения.

Цитата ownsmir:
Но не все ключи назваются понятно, как залезть в сертификат ключа через csptest я так и не нашел команду... По этому обратился к Вам, знающим больше моего »
"Чтобы продать что-нибудь ненужное, надо сначала купить что-нибудь ненужное..."
Если вы покажете, какой-нибудь ненужный ключик, ответ получите гораздо быстрее...
И да, алгоритмы составлять не требуется, если вы считаете, что обращаетесь к знающим людям... знающие сами умеют это делать.

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:02, 03-07-2019 | #9


Старожил


Сообщения: 427
Благодарности: 72

Профиль | Отправить PM | Цитировать


Цитата ownsmir:
как залезть в сертификат ключа через csptest я так и не нашел команду... »
Скрытый текст

CSPTEST key set manipulation options:
<globals>:
-silent Do not display any user interface
--cplevel[=<number>] Apply 0/1/2/3 as <number> to use Crypt/CP/CPC/Emu interfaces
--cpdll <Dll> Apply full path to dll as <Dll>
-threads <N> Create N threads
-passes <K> Make K passes in each thread
-provider <name> [optional] specify provider name or next abbreviation:
cp2001 ph2001
-provtype <type> [optional] specify provider type or next abbreviation:
gost2001
<commands>:
-newkeyset Create new container and a key set
-addkeypair Create new keypair in existing container
-deletekeyset Delete key set
-info Show provider's info
--check[=<mask>] Check container. Use bit mask (all tests by default):
1: remask check
2: keys and certs check
4: header check
8: cert license
-hash <hashalg> Hash in file data with hash
(SHA1, SHA256, SHA384, SHA512, MD5, MD2, MD4,
GOST12_256, GOST12_512, GOST94_256 - default)
-sign <hashalg> Sign in file with private key and hash
(SHA1, SHA256, SHA384, SHA512, MD5, MD2, MD4,
GOST12_256, GOST12_512, GOST94_256 - default)
-verify <hashalg> Verify file with signature file on imported key with hash
(SHA1, SHA256, SHA384, SHA512, MD5, MD2, MD4,
GOST12_256, GOST12_512, GOST94_256 - default)
-pkverify <alg> Verify file with signature file on private key with hash
(SHA1, SHA256, SHA384, SHA512, MD5, MD2, MD4
GOST12_256, GOST12_512, GOST94_256 - default)
-display Send hashed data into Reader/Carrier
Working only with GOST hash algorithm
-enum_containers Enumerate containers
-crc Calculate CRC16 of container name string
-encryptioncarrier Set container encryption carrier
-export <file> Export public key blob into file
-expcert <file> Save key certificate from container into file
-impcert <file> Load key certificate from file into container
-makecert Make self signed cert and put it in container
-fmakecert <file> Make self signed cert and put it in file
-loadext <file> Load container extensions from PKCS#7 file, keytype option
selects signature or exchange trust store extension
-saveext <file> Save container extensions to PKCS#7 file
-cleanext <OID> Clean out container extension
"*" means delete all extensions
-noext Do not show info about container extensions
-stress CP{Acquire/Relase}Context
-help Print this help
<options>:
-verifycontext Open context for verification only
-container <name> Specify container name. Use "default" for select dialog
-unique Output unique container name instead name
-fqcn Output FQCN (Fully Qualified Container Name)
-machinekeyset Open HKLM
-exportable Generate exportable key
-protected Generate protected key
-default_optional Set CRYPT_DEFAULT_CONTAINER_OPTIONAL flag
-pattern <string> Substring in unique container name
-keytype <type> Key type for creating key and certificate, signing or
exporting public key, intended signature verifying
on private key: signature, exchange, uec, none.
Default: signature and exchange
-hashout <file> Out hash value into filename
-in <file> Data filename to be signed, verified or hashed
-out <file> Save signature in file
-signature <file> In/out signature file name
-certificate <file> Cert file to import public key from
-import <file> Import public key from file (see also: "-pubkey" parameter)
-pubkey <file> Additional public key to be used in ImportKey() as hPubKey
(exchange private key will be used with import as hPubKey
if no file specified and keytype is exchange)
-hard_rng Use hardware RNG
-length <keylen> Set key length to 1024 / 512 bits
-password <pin> Open container with this password
-nullpasswd Set NULL password (i.e. clean from cache)
-counter <num> Number of Acquire/Release context iterations
-waitcarrier <t> Wait t seconds before releasing
encryption carrier container


покажите формат вывода контейнеров с ключами

csptest -keyset -enum_containers -fqcn -verifycontext

Отправлено: 12:08, 03-07-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Крипто про он же csptest.exe

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Крипто Про CSP 4.0 и R4 в тихом режиме (FYI) merdzd Автоматическая установка приложений 3 22-04-2019 01:04
Разное - Windows 10 и Крипто-про CSP 3.9 Auberdin Microsoft Windows 10 1 21-09-2015 22:45
Разное - как создать exe для запуска другого exe с параметрами, из той же папки vzli_izv Программирование и базы данных 12 08-06-2013 14:49
iRU Stilo 2214L (он же Mitac 8081) не видит DVD D@nilYcH Ноутбуки 0 31-07-2011 16:19
MacBook Pro 2011. Какой же он? Welron Новости железа 0 22-02-2011 22:07




 
Переход