Suche für den host mit der MAC-Adresse mittels Python
Ich würde gerne die Suche für einen gegebenen MAC-Adresse in meinem Netzwerk, die alle aus einem Python-Skript. Ich habe bereits eine Karte aller aktiven IP-Adressen im Netzwerk aber ich kann nicht herausfinden, wie zu Lesen die MAC-Adresse. Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie ARP. Python standard-Bibliothek sind keine Codes, so dass Sie müssen entweder ein fremdes Programm aufrufen (Ihr Betriebssystem möglicherweise ein 'arp' nutzen) oder Sie brauchen, um zu bauen die Pakete selbst (evtl. mit einem tool wie Scapy.
Dieser Artikel, "Senden von hand gefertigt Ethernet-Frames in Python ARP (zum Beispiel)", scheint genau das, was Sie suchen.
Ich glaube nicht, dass es eine eingebaute Möglichkeit, es zu bekommen von Python selbst.
Meine Frage ist, wie bekommen Sie die IP-Informationen aus Ihrem Netzwerk?
Erhalten Sie von Ihrem lokalen Rechner könnten Sie analysieren ifconfig (unix) oder ipconfig (windows) mit wenig Schwierigkeiten.
Wenn Sie möchten, eine Reine Python-Lösung, können Sie einen Blick auf Scapy zu craft-Pakete (benötigen Sie zum senden von ARP-Anfrage und überprüfen Sie die Antworten). Oder wenn Sie nichts dagegen haben, aufrufen der externen Programme, die Sie verwenden können
arping
(auf Un*x-Systeme, ich kenne keine Windows-Entsprechung).Es scheint, dass es keine native Möglichkeit, dies zu tun mit Python. Ihre beste Wette wäre, analysieren die Ausgabe von "ipconfig /all" unter Windows oder "ifconfig" auf Linux. Betrachten Sie mit os.popen (), mit ein paar regexps.
Hängt von der Plattform ab. Wenn Sie mit *nix, können Sie die " arp " - Befehl, um sich die mac-Adresse für eine bestimmte IP (IPv4 vorausgesetzt) - Adresse. Wenn das nicht funktioniert, können Sie die ping-Adresse und dann schauen, oder wenn Sie haben Zugriff auf die raw-Netzwerk (mit BPF oder einen anderen Mechanismus), könnten Sie schicken Ihre eigenen ARP-Pakete (aber das ist wahrscheinlich übertrieben).
Würden Sie wollen, analysieren die Ausgabe von 'arp', aber der kernel-ARP-cache-enthält nur die IP-Adresse(N), wenn diese hosts kommuniziert mit dem host, auf dem das Python-Skript ausgeführt wird.
ifconfig kann verwendet werden, um die Anzeige der MAC Adressen des lokalen interfaces, nicht jedoch die auf der LAN.
Mark Pilgrim beschreibt, wie Sie dies unter Windows für den aktuellen Rechner mit dem Netbios-Modul hier. Sie können das Netbios-Modul als Teil des Win32-package verfügbar python.org. Leider im moment kann ich nicht finden, die Dokumente auf dem Modul.
als python war nicht dazu gedacht, den Umgang mit OS-spezifische Probleme (es soll interpretiert werden und cross-Plattform -), würde ich ein externes Kommando ausführen, um so zu tun:
in unix der Befehl
ifconfig
wenn Sie es ausführen, wie ein Rohr erhalten Sie das gewünschte Ergebnis: