Bonne journée à tous.Il est arrivé historiquement que les clés électroniques des organisations de notre petite exploitation pour le programme de gestion électronique des documents SBIS soient importées dans le registre Windows de chaque poste de travail, de chaque utilisateur.Lors de la création d'un nouveau lieu de travail, un buisson avec des clés a été déchargé de la branche Crypto-Pro et importé vers un nouvel utilisateur.Sur un serveur de terminaux, j'ai réalisé que c'était inacceptable et j'ai décidé de télécharger toutes les clés sur un lecteur flash USB et d'autoriser les lecteurs externes dans Crypto-Pro.Maintenant, lors de la création de nouveaux utilisateurs sur le serveur Terminal Server, aucun geste avec des clés électroniques n'est nécessaire.Le problème était que vous devez convertir les clés ASCII du registre en 16 fichiers binaires.Peut-être que je ne sais pas comment "google", mais je n'ai pas trouvé de solutions toutes faites sur le sujet, alors j'ai fait mon propre script sur bash.Peut-être que quelqu'un vous sera utile.Une petite description.Les clés se trouvent dans la branche de registre - [HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Crypto Pro \ Settings \ Users \ SID-user \ Keys \ Key-name]Structure des clés dans la branche de registre déchargée:"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 ...En paramètre, le script doit spécifier un fichier avec les clés téléchargées du registre (par exemple, keys.reg).À la suite du script, le dossier des clés sera créé dans le répertoire racine à partir duquel le script a été lancé et à l'intérieur du dossier avec le nom des clés. Les dossiers portant le nom des clés contiendront chacun 6 fichiers: nom.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