LINUX.ORG.RU

Типичный keygen на bash

 ,


0

2

Вот, написал скрипт для выпуска серийных номеров к программам.

#!/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

Но, как то так.
Данный скрипт предназначен только для ознакомления.
Данный скрипт также может проверять серийные номера, которые он же и выпустил.

★★★★★

Ответ на: комментарий от anonymous
--- a/keygen.sh	2019-05-06 20:23:00.942944774 +0300
+++ b/keygen.sh	2019-05-06 20:30:55.682919439 +0300
@@ -25 +25 @@
-	c=$(echo $d|head -c 1)
+	c=8 #cho $d|head -c 1)
#
# Cr4(k3d 8y
#
# __  __ _       _ ____       _           ____                            
#|  \/  (_)_ __ (_)  _ \ ___ | |__   ___ |  _ \  __ _ _ __   ___ ___ _ __ 
#| |\/| | | '_ \| | |_) / _ \| '_ \ / _ \| | | |/ _` | '_ \ / __/ _ \ '__|
#| |  | | | | | | |  _ < (_) | |_) | (_) | |_| | (_| | | | | (_|  __/ |
#|_|  |_|_|_| |_|_|_| \_\___/|_.__/ \___/|____/ \__,_|_| |_|\___\___|_|
anonymous ()
Ответ на: комментарий от saahriktu

это не однострочник. самый короткий вариант с cat /proc/sys/kernel/random/uuid тут указал онанизмус. я о таком бы и не догадался. для меня вообще загадка что там и где лежит.

tz4678 ()