Bom Dia a todos.Aconteceu historicamente que as chaves eletrônicas das organizações de nossa pequena holding para o programa de gerenciamento eletrônico de documentos SBIS foram importadas para o registro do Windows de cada estação de trabalho, de cada usuário.Ao criar um novo local de trabalho, um arbusto com chaves foi descarregado da ramificação Crypto-Pro e importado para um novo usuário.Em um servidor de terminal, percebi que isso era inaceitável e decidi fazer o upload de todas as chaves para uma unidade flash USB e permitir unidades externas no Crypto-Pro.Agora, ao criar novos usuários no servidor de terminal, não são necessários gestos com chaves eletrônicas.O problema era que você precisava converter chaves ASCII do registro em 16 arquivos binários.Talvez eu não saiba como "pesquisar" no Google, mas não encontrei soluções prontas sobre o assunto, então criei meu próprio script no bash.Talvez alguém venha a calhar.Uma pequena descrição.As chaves estão na ramificação do registro - [HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Crypto Pro \ Settings \ Users \ SID-user \ Keys \ Key-name]Estrutura da chave na ramificação do registro descarregada:"name.key" = hex: 10, d5 ..." header.key "= hex: 20,42,19, ..." primary.key "= hex:30,12" masks.key "= hex: 30,23" primary2.key "= hex: 30,12 ..." masks2 .key ”= hex: 30,56,10 ...Como parâmetro, o script deve especificar um arquivo com as chaves baixadas do registro (por exemplo, keys.reg).Como resultado do script, a pasta de chaves será criada no diretório raiz a partir do qual o script foi iniciado e dentro dela a pasta com o nome das chaves. As pastas com o nome das chaves conterão 6 arquivos cada - name.key, header.key, primary.key, primary2.key, masks.key, masks2.key.#!/bin/bash
path=./
temp=$path/temp
file[1]="name.key"
file[2]="masks.key"
file[3]="masks2.key"
file[4]="primary.key"
file[5]="primary2.key"
file[6]="header.key"
if [ ! -d "$temp" ]; then
mkdir "$temp"
fi
if [ ! -d "$path/keys" ]; then
mkdir "$path/keys"
fi
dos2unix -n -q $1 $temp/$1
cat $temp/$1 | grep -E -o 'Keys\\\w+]' | sed -E 's/Keys\\//; s/]//' > $temp/keysname
while read key
do
cat $temp/$1 | sed -e '/./{H;$!d;}' -e "x;/$key]/!d" | sed -n "/$key]/!p" > $temp/$key
if ! [ -d "$path/keys/$key" ]; then
mkdir "$path/keys/$key"
fi
for i in {1..6};
do
hex=$(cat $temp/$key | tr -d '\n' | sed -E 's/\\//g; s/ //g; s/\$//g' | grep -E -o "${file[$i]}\"=hex:(\w{2},?)+?" | sed -E "s/${file[$i]}\"=hex://; s/,//g" | sed -E 's/\w{2}/\\x&/g')
echo -e -n "$hex" > "$path/keys/$key/${file[$i]}"
done
done < $temp/keysname
if [ -d "$temp" ]; then
rm -rf "$temp"
fi
exit 0