summaryrefslogblamecommitdiffstats
path: root/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/20_get_creds.inc
blob: c9043e21327fe053c05b3b941f4b3ff216d2acdb (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12











                                                                                                                                
 







                                                                                            

                                                                                                                     

                                                           
                                                                   
 
function get_creds()
{
	# udp-Socket erzeugen Kanal erzeugen::
	exec 13<>/dev/udp/"$NATADDR"/"$PORT"
	
	# temp. Datei - wer hat Angst vor Nullbytes? Ich! Ich! Ich!
	head -n 1 "$CONFIGFILE" |cut -f3 -d$'\t' | while read -n 2 CODE; do [ -n "$CODE" ] && printf "\x$CODE"; done >"$KEYTEMP"
	# Auf Socket fuer Grundsystem schreiben:
	cat "$KEYTEMP" >&13
	
	# Serverantwort pwdaemon in temp. Datei schreiben:
	timeout 2s dd bs=$BYTES count=1 of="$RAWKEYTEMP" <&13 2>/dev/null

	# Kanal zu Socket schließen:
	exec 13<&-
	exec 13>&-
	
	# Wieviele Zeichen (Bytes 1 und 2 der Paketnutzlast)?
	ANZAHL=$((16#$(dd if=$RAWKEYTEMP bs=1 count=2 2>/dev/null|hexdump -e '1/1 "%02x"')))
	
	# Und raus-xor-en:
	PW=$( xor	"$(dd if="$RAWKEYTEMP" bs=1 skip=2 count="$ANZAHL" 2>/dev/null|hexdump -v -e '1/1 "%02x"')" \
			"$(head -n 1 "$CONFIGFILE" | cut -f 4 -d$'\t')" | sed 's/../\\x&/g')
	
	PW=$(echo -e "$PW")     # \x...-Ausdrücke zu ASCII
#	PW="${PW:0:${ANZAHL}}"  # ...und Rest nach ANZAHL abhacken.
}