Hi,
ich versuche auf dem Raspberry Pi mittels Python einen socket (UDP) zu erstellen, um damit mittels eines externen WLAN-Adapters (im Monitor mode) Daten rauszuschicken.
Vor einem Jahr ca hatte ich es schon einmal geschafft, leider hab ich aber die Skripte nicht mehr...
Das Aufsetzen des Sockets funktioniert, lediglich schaffe ich es nicht, ihn an einen bestimmten WLAN-Adapter zu binden (also an den externen, weil das interne Modul keinen Monitor mode beherrscht).
Hier ist mal mein Code:
Code:
import socket
import time
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
server.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
#server.setsockopt(socket.SOL_SOCKET, socket.SO_BINDTODEVICE, 1) #PermissionError: [Errno 1] Operation not permitted
server.settimeout(0.2)
message = b"my message!"
while True:
server.sendto(message, ('<broadcast>', 37020))
print("message sent!")
time.sleep(1)
Wenn ich die auskommentierte Zeile mit SO_BINDTODEVICE einfüge, kommt die hinterher genannte Fehlermeldung.
Meine Vermutung ist, dass ich evtl. nicht die benötigten Rechte für diesen Befehl habe.
Hoffentlich gibts hier ein paar Profis, die mir helfen können!
Vielen Dank & Gruß
Chris
EDIT:
Achso, Python ist installiert als 2.7.16 und 3.7.3 auf Raspbian Buster.
Sollte ich evtl. das alte Python deinstallieren?
EDIT2:
Wenn ich die Datei per "Sudo Python3 server.py" ausführe, bekomme ich die Meldung "No such Device", d.h. die Permission-Meldung ist weg (vermutlich wegen sudo), allerdings stimmt die übergabe "1" als Paramter bei "BindToDevice" nicht...
Schade dass ich das Skript von früher nicht mehr habe, das war nur eine Zeile. Evtl. lief das auch über die Funktion "socket.bind"
Lesezeichen