Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
import os
def create_open_wifi_network(ssid, redirect_url):
# First things first, stop the network manager to configure our wireless interface
os.system("sudo service NetworkManager stop")
# Let's configure the wireless interface as a cool access point
os.system("sudo ifconfig wlan0 down")
os.system("sudo iwconfig wlan0 mode master")
os.system("sudo ifconfig wlan0 up")
os.system(f"sudo iwconfig wlan0 essid '{ssid}'")
# Now, we'll set up DHCP and IP forwarding to keep things flowing smoothly
os.system("sudo service dnsmasq start")
os.system("sudo service hostapd start")
os.system("sudo sysctl net.ipv4.ip_forward=1")
os.system("sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE")
# Time to add a little twist - a captivating captive portal to redirect users to the provided URL
with open("/etc/hostapd/hostapd.conf", "w") as f:
f.write(f"interface=wlan0\nssid={ssid}\ndriver=nl80211\nchannel=6\n")
os.system("sudo systemctl unmask hostapd")
os.system("sudo systemctl enable hostapd")
os.system("sudo hostapd /etc/hostapd/hostapd.conf")
# Let's make sure IPv4 forwarding is always on point, even on boot
with open("/etc/sysctl.conf", "a") as f:
f.write("net.ipv4.ip_forward=1\n")
# And just to be safe, we'll add some slick iptables rules on boot too
with open("/etc/rc.local", "a") as f:
f.write("iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\n")
print("Boom! Your super cool open Wi-Fi network with a captive portal is all set up!")
if __name__ == "__main__":
ssid = "OpenNetwork"
redirect_url = "http://google.com/"
create_open_wifi_network(ssid, redirect_url)
Wenn ich den code ausführe, so erscheint mein wlan auch. jedoch kann man sich nicht richtig verbinden?
Ein Python-Programm, dass gefühlt zu 90% aus os.system()-Aufrufen besteht, ist übrigens ein besserer Kandidat für ein Shell-Skript. Abgesehen davon, dass os.system() schon sehr lange nicht mehr verwendet werden sollte, macht es auch wenig Sinn, um diesen Teil noch eine Python-Schicht zu basteln. Natürlich kann man das Shell-Skript später sozusagen als eine Einheit innerhalb eines Python-Moduls aufrufen und da eine GUI drumherum bauen, oder was auch immer man damit vorhat.
Um den Punkt, dass das kein Python ist was Du da geschrieben hast, noch mal deutlich zu machen, hier das ganze als Bash-Skript. Das war supereinfach zu konvertieren. Hauptsächlich einfach die ``os.system("…")``-”Rahmen” um die einzelnen Shell-Befehle entfernen. Und die ganzen ``sudo`` habe ich entfernt. Wenn *jedes* Kommando in einem Skript ``sudo`` braucht, dann braucht keines davon *im* Skript ``sudo`` sondern man ruft das Skript selbst mit den entsprechenden Rechten auf.
#!bin/bash
ssid=OpenNetwork
#
# First things first, stop the network manager to configure our wireless
# interface
#
service NetworkManager stop
#
# Let's configure the wireless interface as a cool access point
#
ifconfig wlan0 down
iwconfig wlan0 mode master
ifconfig wlan0 up
iwconfig wlan0 essid $ssid
#
# Now, we'll set up DHCP and IP forwarding to keep things flowing smoothly
#
service dnsmasq start
service hostapd start
sysctl net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#
# Time to add a little twist - a captivating captive portal to redirect users to
# the provided URL
#
echo -e "interface=wlan0\nssid=$ssid\ndriver=nl80211\nchannel=6" > /etc/hostapd/hostapd.conf
systemctl unmask hostapd
systemctl enable hostapd
hostapd /etc/hostapd/hostapd.conf
#
# Let's make sure IPv4 forwarding is always on point, even on boot
#
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
#
# And just to be safe, we'll add some slick iptables rules on boot too
#
echo 'iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE' >> /etc/rc.local
echo 'Boom! Your super cool open Wi-Fi network with a captive portal is all set up!'
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
__blackjack__ hat geschrieben: ↑Freitag 7. Juli 2023, 12:16
Um den Punkt, dass das kein Python ist was Du da geschrieben hast, noch mal deutlich zu machen, hier das ganze als Bash-Skript. Das war supereinfach zu konvertieren. Hauptsächlich einfach die ``os.system("…")``-”Rahmen” um die einzelnen Shell-Befehle entfernen. Und die ganzen ``sudo`` habe ich entfernt. Wenn *jedes* Kommando in einem Skript ``sudo`` braucht, dann braucht keines davon *im* Skript ``sudo`` sondern man ruft das Skript selbst mit den entsprechenden Rechten auf.
#!bin/bash
ssid=OpenNetwork
#
# First things first, stop the network manager to configure our wireless
# interface
#
service NetworkManager stop
#
# Let's configure the wireless interface as a cool access point
#
ifconfig wlan0 down
iwconfig wlan0 mode master
ifconfig wlan0 up
iwconfig wlan0 essid $ssid
#
# Now, we'll set up DHCP and IP forwarding to keep things flowing smoothly
#
service dnsmasq start
service hostapd start
sysctl net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#
# Time to add a little twist - a captivating captive portal to redirect users to
# the provided URL
#
echo -e "interface=wlan0\nssid=$ssid\ndriver=nl80211\nchannel=6" > /etc/hostapd/hostapd.conf
systemctl unmask hostapd
systemctl enable hostapd
hostapd /etc/hostapd/hostapd.conf
#
# Let's make sure IPv4 forwarding is always on point, even on boot
#
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
#
# And just to be safe, we'll add some slick iptables rules on boot too
#
echo 'iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE' >> /etc/rc.local
echo 'Boom! Your super cool open Wi-Fi network with a captive portal is all set up!'
Wenn ich dein script ausführe hat es die gleiche wirkung?
Sollte es wenn ich keinen Fehler gemacht habe. Beziehungsweise ist da ja kein ``sudo`` mehr drin, das heisst man muss das Skript als ganzes mit entsprechenden Rechten ausführen, was dann auch dazu führt, dass die Schreibvorgänge in die Dateien mit diesen Rechten gemacht werden. Das war ja beim ”Python”-Quelltext nicht der Fall — es sei denn das wurde schon mit den Rechten ausgeführt und die ganzen ``sudo``-Aufrufe da drin warn eh schon überflüssig.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
__blackjack__ hat geschrieben: ↑Freitag 7. Juli 2023, 16:16
Sollte es wenn ich keinen Fehler gemacht habe. Beziehungsweise ist da ja kein ``sudo`` mehr drin, das heisst man muss das Skript als ganzes mit entsprechenden Rechten ausführen, was dann auch dazu führt, dass die Schreibvorgänge in die Dateien mit diesen Rechten gemacht werden. Das war ja beim ”Python”-Quelltext nicht der Fall — es sei denn das wurde schon mit den Rechten ausgeführt und die ganzen ``sudo``-Aufrufe da drin warn eh schon überflüssig.
Error for wireless request "Set Mode" (8B06) :
SET failed on device wlano ; Invalid argument.
net.ipv4.ip_forward = 1.
Synchronizing state of hostapd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable hostapd
wlan0: interface state UNINITIALIZED->ENABLED
KALI LINUX
wlan0: AP-ENABLED
wlan.py
X11VNC Ser.- usw. .....
@snafu: Das ist Merkator — natürlich weiss das Skript-Kiddie nicht was es da tut. Frag gar nicht erst nach was jemand der seine Programme Passwordstealer nennt, aber nur zufällig, das macht natürlich was ganz anderes, eigentlich machen will. Ich finde die Inkompetenz jedenfalls beruhigend.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Hier muss nur der Falsche mitlesen und dann gibt es für Merkator per PN ein "richtig cooles" Skript, das alles selbständig macht und nur noch auf seinem Rechner per sudo ausgeführt werden muss...
Na ja... auch mit nur semi-viel Ahnung würde man wissen, dass `os.system` für so Aufrufe veraltet ist.
An zwei Stellen im Ausgangsskript fehlt ein `sudo` bzw. die notwendigen Root-Rechte. Und die Verwendung von `rc.local` ist seit ca. 10 Jahren unter Linux nicht mehr Stand der Dinge.