Python 3 - IP Adressen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Wer os.system immer noch nutzt, hat die Dokumentation nicht gelesen. Ich mache nicht denjenigen einen Vorwurf, die Python nicht als Hauptsprache verwenden, sondern denjenigen, die andauernd falsche Anleitungen schreiben.

    Beispiel mit typehints:

    Ohne typehints:

    Und falls du das als str und nicht als IPv4Address oder IPv6Address benötigst, ist es kürzer:

    Anmerkung: Ein Interface kann keine, eine oder sogar mehrere IP-Adressen haben. Der Befehl ip stammt aus dem Paket iproute2  und unterstützt die Ausgabe im Json-Format, dass geeignet ist von sämtlichen vorhandenen Sprachen geparst zu werden.

    Die Verwendung von os.system ist sinnlos, da man dann nicht an die Ausgabe kommt, sondern lediglich den Rückgabewert des zuvor ausgeführten Programms. Eine 0 bedeutet immer, dass alles OK war. Zusätzlich erlaubt os.system nette Hacks.

    Wenn man z.B. /; uname -a eingibt, wird zuerst ls / und dann uname -a ausgeführt. Das am besten noch hinter einem Webserver im Internet zugänglich machen, um damit jemand anderes den Server übernehmen kann (ist schon passiert).

    subprocess.Popen(..., shell=True) ist genauso gefährlich. Der Unterschied ist, dass man auf die Standardausgabe zugreifen kann.

    Der weiterer Grund, wieso viele os.system bzw. shell=True nutzen, ist die pure Faulheit. Die Leute sind einfach zu faul, eckige Klammern und Anführungszeichen einzugeben. Das sollte man sich aber angewöhnen, da man damit eine viel bessere Kontrolle hat. Ansonsten interpretiert die Shell den String, was dann zu diesem fatalen Ergebnis führt. Der Befehl uname -a könnte auch ein rm -Rf / sein, der das komplette Dateisystem löscht. Das ist natürlich etwas doof. Die Hacker verwenden lieber eine Reverse-Shell, um alles zu machen.


  • Hallo @all

    ich habe mich weiter mit dem Vorschlag von __blackjack__ beschäftig. Nach vielen Versuschen habe ich es nun geschafft.

    Meine aktuelle Lösung dazu ist nun diese:

    Code
    import psutil
    
    interface = 'wlan0'
    ip_address = psutil.net_if_addrs()[interface][0].addresss


    Damit Danke an alle, die hier so viele Vorschläge gemacht haben.

    es grüßt
    Andre

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!