يوم جيد للجميع.حدث ذلك تاريخيًا أنه تم استيراد المفاتيح الإلكترونية لمؤسساتنا الصغيرة في برنامج إدارة المستندات الإلكترونية SBIS إلى سجل windows لكل محطة عمل ، لكل مستخدم.عند إنشاء مكان عمل جديد ، تم تنزيل شجيرة بمفاتيح من فرع Crypto-Pro وتم استيرادها إلى مستخدم جديد.على خادم طرفي ، أدركت أن هذا غير مقبول وقررت تحميل جميع المفاتيح إلى محرك أقراص USB محمول والسماح بمحركات خارجية في Crypto-Pro.الآن عند إنشاء مستخدمين جدد على الخادم الطرفي ، لا حاجة لإيماءات باستخدام مفاتيح إلكترونية.كانت المشكلة أنك بحاجة إلى تحويل مفاتيح ASCII من التسجيل إلى 16 ملفًا ثنائيًا.ربما لا أعرف كيفية "google" ، لكنني لم أجد أي حلول جاهزة حول هذا الموضوع ، لذلك قمت بعمل نص خاص بي على باش.ربما يأتي شخص في متناول اليدين.وصف صغير.المفاتيح موجودة في فرع التسجيل - [HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Crypto Pro \ Settings \ Users \ SID-user \ Keys \ Key-name]هيكل المفتاح في فرع التسجيل غيرالمحمل : "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 ...كمعلمة ، يجب أن يحدد البرنامج النصي ملفًا بالمفاتيح التي تم تنزيلها من التسجيل (على سبيل المثال ، keys.reg).نتيجة للبرنامج النصي ، سيتم إنشاء مجلد المفاتيح في الدليل الجذر الذي تم تشغيل البرنامج النصي منه وداخله المجلد باسم المفاتيح. ستحتوي المجلدات التي تحمل اسم المفاتيح على 6 ملفات لكل منها - 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