Code
(echo -ne '\xfd'; dd if=/dev/random bs=1 count=5 2>/dev/null; echo -ne "\xaf\xfe") | xxd | awk '{print $2$3$4$5}' | sed -r 's/([^$]{4})/\1:/g' | tr -d '\n'; echo :
Generiert ein Präfix für eine Unique Local Address.
Man kann auch gleich noch die Addresse für ein Netzwerkinterface generieren:
Code
linux% ipv6calc --quiet --in prefix+mac $((echo -ne '\xfd'; dd if=/dev/random bs=1 count=5 2>/dev/null; echo -ne "\xaf\xfe") | xxd | awk '{print $2$3$4$5}' | sed -r 's/([^$]{4})/\1:/g' | tr -d '\n'; echo :) $(ip addr show dev $INTERFACE | grep "link/ether" | awk '{print $2}')
bsd% ipv6calc --quiet --in prefix+mac $((echo -ne '\xfd'; dd if=/dev/random bs=1 count=5 2>/dev/null; echo -ne "\xaf\xfe") | xxd | awk '{print $2$3$4$5}' | sed -r 's/([^$]{4})/\1:/g' | tr -d '\n'; echo :) $(ifconfig $INTERFACE | grep $EUDA | awk '{print $2}') ### OpenBSD: $EUDA==lladdr; FreeBSD: $EUDA==ether; $NetBSD: $EUDA==address:
Allerdings ist gandro für den Großteil dieses "Codes" verantwortlich
Hier noch die alte Variante die nur auf Big-Endian-Architekturen funktioniert:
Spoiler anzeigen
Code
(echo -ne '\xfd'; dd if=/dev/random bs=1 count=5 2>/dev/null; echo -ne "\xaf\xfe") | hexdump -e '"%x"' | sed -r 's/([^$]{4})/\1:/g'; echo :
OpenBSD:
Code
ipv6calc --quiet --in prefix+mac $((echo -ne '\xfd'; dd if=/dev/random bs=1 count=5 2>/dev/null; echo -ne "\xaf\xfe") | hexdump -e '"%x"' | sed -r 's/([^$]{4})/\1:/g'; echo :) $(ifconfig $INTERFACE | grep lladdr | awk '{print $2}')
Linux: