Вот, написал скрипт для выпуска серийных номеров к программам.
#!/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
Данный скрипт предназначен только для ознакомления.
Данный скрипт также может проверять серийные номера, которые он же и выпустил.


