Buen día a todos.Sucedió históricamente que las claves electrónicas de las organizaciones de nuestra pequeña explotación para el programa de gestión de documentos electrónicos SBIS se importaron en el registro de Windows de cada estación de trabajo, cada usuario.Al crear un nuevo lugar de trabajo, se descargó un arbusto con claves de la rama Crypto-Pro y se importó a un nuevo usuario.En un servidor de terminal, me di cuenta de que esto era inaceptable y decidí cargar todas las claves en una unidad flash USB y permitir unidades externas en Crypto-Pro.Ahora, al crear nuevos usuarios en el servidor de terminal, no se necesitan gestos con claves electrónicas.El problema era que necesita convertir las claves ASCII del registro a 16 archivos binarios.Tal vez no sé cómo "googlear", pero no encontré ninguna solución preparada sobre el tema, así que hice mi propio script en bash.Tal vez alguien sea útil.Una pequeña descripciónLas claves están en la rama del registro: [HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Crypto Pro \ Settings \ Users \ SID-user \ Keys \ Key-name]Estructura de la clave en la rama del registro descargada:"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 ..." máscaras2 .key ”= hex: 30,56,10 ...Como parámetro, el script debe especificar un archivo con las claves descargadas del registro (por ejemplo, keys.reg).Como resultado de la secuencia de comandos, la carpeta de claves se creará en el directorio raíz desde el que se inició la secuencia de comandos y dentro de la carpeta con el nombre de las claves. Las carpetas con el nombre de las claves contendrán 6 archivos cada una: nombre.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