Вот, написал скрипт для выпуска серийных номеров к программам.
#!/bin/bash
while true
do
if [ -z "$1" ]
then
B1=$(cat /dev/urandom|head -c 512|sha512sum|xxd -r -p|tr -dc 'A-Z'|head -c 4)
B2=$(cat /dev/urandom|head -c 512|sha512sum|xxd -r -p|tr -dc 'A-Z'|head -c 4)
B3=$(cat /dev/urandom|head -c 512|sha512sum|xxd -r -p|tr -dc 'A-Z'|head -c 4)
B4=$(cat /dev/urandom|head -c 512|sha512sum|xxd -r -p|tr -dc 'A-Z'|head -c 4)
else
B1=$(echo $1|tr '-' ' '|awk '{print $1}')
B2=$(echo $1|tr '-' ' '|awk '{print $2}')
B3=$(echo $1|tr '-' ' '|awk '{print $3}')
B4=$(echo $1|tr '-' ' '|awk '{print $4}')
fi
c="0x00"
for a in $(echo "${B1}${B2}${B3}${B4}"|md5sum|awk '{print $1}'|fold -w 2)
do
c=$((${c}+0x${a}))
done
d=$((${c}^4^4))
d=$((${d}*${d}))
c=$(echo $d|head -c 1)
if [ -z "$1" ]
then
if [ "$c" == "8" ]
then
echo "${B1}-${B2}-${B3}-${B4}"
break
else
continue
fi
else
if [ "$c" == "8" ]
then
echo "OK"
exit 0
else
echo "FAIL"
exit 1
fi
fi
done
Данный скрипт предназначен только для ознакомления.
Данный скрипт также может проверять серийные номера, которые он же и выпустил.