In diesem kleinen Tutorial soll es um das setzen einer zufälligen [[https://secure.wikimedia.org/wikipedia/de/wiki/MAC-Adresse|MAC-Adresse]] für [[https://secure.wikimedia.org/wikipedia/de/wiki/Netzwerkkarte|NICs]] unter ArchLinux mit macchanger gehen. Da der verbreitete NetworkManager (der daemon hinter nm-applet) leider keine Unterstützung für pre-up Scripte mitbringt, sondern nur den dispatcher, der Scripte ausführt nachdem das NIC schon "up" ist, und man die MACAddr nur dann "spoofen" kann, wenn das NIC "down" ist, muss eine andere Lösung her. Wo Ubuntu (und wahrscheinlich auch Debian) auch mit dem NM noch die genannten netcfg Scripte ausführt, funktioniert dies unter anderen Distributionen, beispielsweise ArchLinux nicht. Wie im Artikel [[https://wiki.archlinux.org/index.php/Arch_Boot_Process#Custom_hooks]] beschrieben, kann man sich einen hook schreiben, der zu einem gewissen Zeitpunkt läuft. Da wir noch vor rc.multi laufen wollen, da dieses Script die Daemons aus dem DAEMONS Array in der rc.conf startet, schreiben wir eine Datei /etc/rc.d/functions.d/10_randMac mit dem Inhalt: randomize_mac(){ /usr/bin/macchanger -A wlan0 ( sleep 1 && /usr/bin/macchanger -A eth0 )& } add_hook multi_start randomize_mac Die Funktion "randomize_mac" führt statisch für zwei NICs einen Tausch der eigentlichen Adresse durch eine zufällige durch. Ein Problem das dabei auftritt, dass man macchanger 2x ausführt ist, dass dies zu schnell geschiet um in der Zwischenzeit genug neue Zufallszahlen als Basis zu bekommen, daher nehmen wir uns eine Subshell, die durch die Klammern gekennzeichnet wird, und führen darin einen 1-sekündigen sleep aus. Erst danach wird die nächste Adresse generiert und zugewiesen. Nur dafür bräuchten wir aber keine Subshell, allerdings blockiert und dieser Aufruf für etwas mehr als eine Sekunde den Bootprozess, deshalb das **&** am Ende, welches die Subshell in den Hintergrund bringt. Das funktioniert, weil die Subshell nichts anderes ist als ein weiterer, unabhängiger Prozess mit eigener PID. Die letzte Zeile hängt die Funktion, den "hook" vor der rc.multi Routine ein. Ein Nebeneffekt dieser frühen Modifikation ist, dass die MAC-Adresse sogar dann erhalten bleibt, wenn man den Hardware-killswitch (wenn vorhanden) betätigt, normalerweise "überlebt" das Spoofen, wenn es nach dem Bootvorgang betrieben wird nur ups und downs via ifconfig (o.ä.), und keine Powercycles. Der Grund dieses Verhaltens erschließt sich dem Autor aber nicht.