Suche nach einem Host mit MAC-Adresse mit Python

8

Ich möchte in meinem Netzwerk nach einer bestimmten MAC-Adresse suchen, und zwar alles innerhalb eines Python-Skripts. Ich habe bereits eine Karte aller aktiven IP-Adressen im Netzwerk, aber ich kann nicht herausfinden, wie man die MAC-Adresse liest. Irgendwelche Ideen?

    
Nate 08.10.2008, 03:22
quelle

9 Antworten

11

Sie benötigen ARP . Die Standardbibliothek von Python enthält keinen Code dafür. Sie müssen also entweder ein externes Programm aufrufen (Ihr Betriebssystem hat möglicherweise ein 'arp' Dienstprogramm) oder Sie müssen die Pakete selbst erstellen (möglicherweise mit einem Werkzeug wie Scapy .

    
Allen 17.09.2008, 17:28
quelle
2

Dieser Artikel , "Senden Sie handgefertigte Ethernet-Frames in Python (z. B. ARP)", scheint genau das zu sein, wonach du suchst.

    
alif 18.09.2008 03:43
quelle
1

Ich glaube nicht, dass es einen eingebauten Weg gibt, um es von Python selbst zu bekommen.

Meine Frage ist, wie erhalten Sie die IP-Informationen von Ihrem Netzwerk?

Um es von Ihrem lokalen Rechner zu bekommen, könnten Sie ifconfig (unix) oder ipconfig (windows) mit wenigen Schwierigkeiten parsen.

    
Benjamin W. Smith 17.09.2008 17:27
quelle
1

Wenn Sie eine reine Python-Lösung haben möchten, können Sie sich Scapy ansehen, um Pakete zu erstellen (Sie müssen dazu) Sende ARP-Anfrage und prüfe Antworten). Oder wenn es Ihnen nichts ausmacht, ein externes Programm aufzurufen, können Sie arping verwenden (auf Un * x-Systemen kenne ich kein Windows-Äquivalent).

    
Sylvain Defresne 17.09.2008 17:30
quelle
1

Es scheint, dass es bei Python keine native Methode gibt. Am besten würdest du die Ausgabe von "ipconfig / all" unter Windows oder "ifconfig" unter Linux parsen. Überlegen Sie os.popen () mit einigen Regexps.

    
Martin Cote 17.09.2008 17:31
quelle
0

Hängt von Ihrer Plattform ab. Wenn Sie * nix verwenden, können Sie mit dem Befehl 'arp' die MAC-Adresse für eine bestimmte IP-Adresse (IPv4-Adresse vorausgesetzt) ​​suchen. Wenn das nicht funktioniert, können Sie die Adresse pingen und dann schauen, oder wenn Sie Zugriff auf das unformatierte Netzwerk haben (mit BPF oder einem anderen Mechanismus), könnten Sie Ihre eigenen ARP-Pakete senden (aber das ist wahrscheinlich übertrieben) / p>     

nsayer 17.09.2008 17:29
quelle
0

Sie möchten die Ausgabe von 'arp' parsen, aber der Kernel-ARP-Cache enthält nur diese IP-Adresse (n), wenn diese Hosts mit dem Host kommuniziert haben, auf dem das Python-Skript läuft.

ifconfig kann verwendet werden, um die MAC-Adressen von lokalen Schnittstellen anzuzeigen, nicht jedoch die im LAN.

    
EmmEff 17.09.2008 17:32
quelle
0
Joe Skora 17.09.2008 17:38
quelle
-1

Da Python nicht mit OS-spezifischen Problemen umgehen sollte (es soll interpretiert und plattformübergreifend sein), würde ich einen externen Befehl ausführen:

in Unix ist der Befehl ifconfig

Wenn Sie es als eine Pipe ausführen, erhalten Sie das gewünschte Ergebnis:

%Vor%     
akiva 17.09.2008 19:13
quelle

Tags und Links