Python - IP Adresse aller aktiven Netzwerkgeräte anzeigen?
Hallo, ich möchte gerne eine Pythonscript erstellen, das mir die IP Adressen aller aktiven Geräte in meinem Heimnetz (192.168.0.0 - 192.168.255.255) anzeigt.
Ich möchte dann alle vergebenen IP Adressen in einer Pythonliste haben.
Der folgende Code zeigt ja nur meine IP Adresse an.
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])
s.close()
Wer hat einen Vorschlag, wie man den o.g. Code ergänzen kann?
1 Antwort
Die Frage ist ja grundlegend, wie Du ermitteln möchtest, ob eine IP in Benutzung/aktiv ist.
ICMP echo? ARP collision check? SYN-Scan mit vorgegebenen Ports ....
Dann iterierst Du einfach über alle IP-Adressen und führst die entsprechende Prüfmethode aus.
Zwar nich gerade aktuell, aber:
https://github.com/samuel/python-ping
Hier siehst du wie Du mit einem RAW socket ICMP Nachrichten schickst. Für die anderen Methoden benötigst Du auch einen RAW socket - Du mußt dann halt den Rest selbst implementieren, z.B. ein ARP mit (WHO HAS?) abschicken und schauen, ob es antworten gibt.
https://tools.ietf.org/html/rfc5227
Sektion 2.1.1
Du wirst nicht umhin kommen Dich mit dem ARP-Protokoll zu beschäftigen...
Alle drei Möglichkeiten sprechen für sich und kommen in Frage. Kennst du einen Python Code, der die o.g. Aufgabe löst?