TP-Link TL-WN823N MAC-Adresse ändern

Hallo Forum, ich bin neu hier und habe gleich eine Frage die wsl schon oft gestellt wurde nur immer wieder andere HW als Voraussetzung hat.
Ich habe mir zu meinem raspberry einen TP-Link TL-WN823N bestellt. Wenn ich die MAC-Adresse ändern möchte und ich den Befehl "ifconfig wlan0 hw ether a0:f3:c1:21:cc:aa" eingebe, kommt keine Fehlermeldung und die neue MAC-Adresse übernimmt er auch nicht. Kann mir jmd weiterhelfen, wie ich dieses Problem löse?
 
Schau mal in die /var/log/messages oder den Output von 'dmesg' ob es dort evtl. Meldungen gibt. Oftmals wird sowas einfach nur weg geloggt.
 
Ich habe jetzt überall, zumindest was mir eingefallen ist, nachgeschaut. Leider nur nichts gefunden. Noch ne Idee? Kann es sein, daß bei diesem Stick es einfach nicht funktioniert die MAC-Adresse zu ändern?
 
Ich habe jetzt überall, zumindest was mir eingefallen ist, nachgeschaut. Leider nur nichts gefunden. Noch ne Idee? Kann es sein, daß bei diesem Stick es einfach nicht funktioniert die MAC-Adresse zu ändern?

Die MAC-Adresse des Sticks kannst du nicht ändern, da diese "hart" in das EEPROM kodiert ist. Du kannst die MAC-Adresse nur spoofen. Du veränderst also nur die Adresse, die zuvor ausgelesen wurde. Das wird von ioctl durchgeführt.

Code:
/* call the IOCTL */
if (ioctl(skfd, SIOCSIFHWADDR, &ifr) < 0) {
       perror("ioctl(SIOCSIFHWADDR)");
       return 1;
}
Quelle: http://wiki.wlug.org.nz

Das Programm ifconfig übernimmt das für dich. Eine neue MAC-Adresse kannst du nur als priveligierter Nutzer (root) setzen. Ich kann mir nicht vorstellen, dass keine Fehlermeldung geworfen wird. Für den Befehl nochmal aus und tippe noch folgendes in die shell:

Code:
ifconfig down wlan0 hw ether a0:f3:c1:21:cc:aa up
echo $?
cat /var/log/messages | grep -i error
 
Zuletzt bearbeitet:
Wie ist des dann mit dem Netzwerk. Wenn die MAC-Adresse von einem anderen Rechner über WLAN abgefragt wird. Sieht er dann die geänderte oder die fest einprogammierte?
 
Wie ist des dann mit dem Netzwerk. Wenn die MAC-Adresse von einem anderen Rechner über WLAN abgefragt wird. Sieht er dann die geänderte oder die fest einprogammierte?

Die Netzwerkkarte wird vom jeweiligen Treiber gealden. Die Information liegen in einer bestimmten Struktur (net_device) vor. Darunter auch die MAC-Adresse.
Hardware-(MAC-)Adreßlänge und Geräte-Hardware-Adressen. Die Ethernet-Adreßlänge beträgt sechs Oktetts (hier geht es um die Hardware-ID der Schnittstellen-Karte), und die Broadcast-Adresse besteht aus sechs 0xff- Oktetten. ether_setup initialisiert diese Werte korrekt. Die Geräte-Adresse muß dagegen aus der Schnittstellen-Karte ausgelesen und nach dev_addr geschrieben werden. Das Auslesen ist gerätespezifisch. Die Hardware-Adresse wird verwendet, um korrekte Ethernet-Header zusammenzustellen, bevor das Paket an den Treiber zur Übertragung übergeben wird.
Es kommt daher ganz auf die Hardware und den Treiber an. Die Adresse wird aus Effizienzgründen, denke ich mal, nur bei der Initalisierung geladen, aber nagel mich da jetzt nicht fest. :p

Was passiert jetzt, wenn die beiden Rechner kommunizieren möchten. Die Anwendung XYZ kennt die MAC-Adresse vor der Anfrage nicht. Du stellst eine Anfrage an eine IP-Adresse. Die Anwendung XYZ muss erst die passende MAC-Adresse für die IP-Adresse finden. Dies geschieht mit Hilfe des Address Resolution Protocols (ARP). Dazu wird überprüft, ob die IP-Adressen der Kommunikationsteilnehmer im selben Subnetz liegen. Dies passiert, indem die Netzwerkmaske mit der IP-Adresse UND-verknüpft wird. Wenn die IP-Adresse nicht im selben Subnetz liegen sollte, geht das Paket an das Standard-Gateway. Liegen sie im selben Subnetz wird versucht die MAC-Adresse herauszufinden. Dazu wird erstmal in einem Zwischenspeicher nachgesehen, ob er die MAC-Adresse schon vorhanden ist. Den Zwischenspeicher kann man sich so anschauen:
Code:
arp -n

Falls das noch nicht der Fall ist, wird der andere Rechner erst mal das gesamte Subnetz zusammenbrüllen und nach der IP-Adresse fragen. Der Rechner mit der jeweiligen IP-Adresse antwortet dann und schickt ihm die MAC-Adresse. Diese ist die MAC-Adresse des net_devices. Die Adresse wird allerdings bei einer neuen Initialisierung durch den Treiber wieder auf den alten Wert zurückgesetzt werden. Du musst den Befehl nach jedem Start erneut ausführen.
 
Ich habe es jetzt nochmal ausprobiert. Es gibt keine Fehlermeldungen.
Kurze Frage noch: Das hier ist doch c++?
/* call the IOCTL */ if (ioctl(skfd, SIOCSIFHWADDR, &ifr) < 0) { perror("ioctl(SIOCSIFHWADDR)"); return 1; }Und noch eine Frage: Welchen Stick würdet ihr empfehlen für den Raspberry, bei dem ich auch die MAC-Adresse ändern kann?
 
Probiere das mal so

Code:
sudo ifconfig wlan0 down      #Bring wifi down
sudo macchanger -r wlan0      #Randomly generate new MAC address
sudo ifconfig wlan0 up        #Bring wifi back up


schau mal ob es sich dann geändert hat.

greetz Anycast
 
Zuletzt bearbeitet:
Hier die Dateien, inkl der .bash_history

Die .bash_history zeigt leider nur, das was du eingeben hast und keine Ausgaben. :p Nur die Ausgabe von dmesg oder messages hätten auch gereicht. Ich hab aber eine Ahnung in welche Richtung das gehen könnte. So! Mit dem Befehl script zeichnest du alles auf, was in der Shell passiert.

Code:
script wlan.log
uname -r
ifconfig wlan0
ifconfig down wlan0 hw ether a0:f3:c1:21:cc:aa up
echo $?
ifconfig wlan0
lsusb | grep wireless
lsmod

Die log-Datei postest du dann mal.

edit: Meinereins musst gerade feststellen das script im Terminal nur dürftig funktioniert. :p Frag mich jetzt bloß nicht warum. Wechsle vorher mit strg+f1 in eine richtige shell. Über ssh klappt es auch.
 
Zuletzt bearbeitet:
Es liegt wahrscheinlich, tatsächlich am Treiber. Würdest bitte noch

Code:
modinfo 8192cu

posten.
 
Zuletzt bearbeitet:
So, ich musste etwas suchen, aber ich hab glaube ich eine elegante Möglichkeit gefunden.

Code:
parm:           rtw_initmac:charp
Code:
char* rtw_initmac = 0;  // temp mac address if users want to use instead of the mac address in Efuse
Quelle: github.com

Über diesen Parameter kannst du die MAC-Adresse setzen. Den Parameter setzt du in der Datei /etc/modprobe.d/8192cu.conf. Warum es nicht möglich ist mit ifconfig eine neue MAC-Adresse zu setzen bin ich mir noch nicht sicher. Da müsste man tiefer graben. An deiner Stelle würde ich noch einen Bugreport schreiben.
 
Würde ich dir gerne sagen, nur ein Problem, ich habe jetzt auch schon gegoogelt, ich weiß nicht wie ich des in die Konfigurationsdatei schreiben soll. Kannst Du mir da bitte nochmal weiter helfen?
 
Zurück
Oben