Frage

Ich möchte für eine bestimmte MAC-Adresse im Netzwerk suchen, die alle aus einem Python-Skript. Ich habe bereits eine Karte aller aktiven IP-Adressen im Netz, aber ich kann nicht herausfinden, wie die MAC-Adresse aufzulesen. Irgendwelche Ideen?

War es hilfreich?

Lösung

Sie müssen ARP . Python-Standardbibliothek enthält keinen Code für das, so müssen Sie entweder ein externes Programm aufrufen (Ihr Betriebssystem ein ‚arp‘ Dienstprogramm haben kann), oder Sie müssen die Pakete selbst (möglicherweise mit einem Tool wie scapy .

Andere Tipps

dieser Artikel „Hand-crafted Ethernet Frames in Python senden ( ARP zum Beispiel)“, scheint genau das zu sein, was Sie suchen.

Ich glaube nicht, dass es ein in Art und Weise gebaut ist es von Python zu bekommen selbst.

Meine Frage ist, wie Sie bekommen die IP-Informationen aus Ihrem Netzwerk?

Um es von Ihrem lokalen Rechner erhalten Sie ifconfig (Unix) oder ipconfig (Windows) mit wenig Schwierigkeiten analysieren können.

Wenn Sie eine reine Python-Lösung wollen, können Sie einen Blick auf scapy Handwerk-Pakete (benötigen Sie ARP-Anfrage zu senden, und überprüfen Antworten). Oder wenn Sie nichts dagegen haben, externes Programm aufgerufen wird, können Sie arping verwenden (auf Un * x-Systemen, ich weiß nicht, von einem Windows-Äquivalent).

Es scheint, dass es, dies zu tun mit Python kein nativer Weg. Ihre beste Wette wäre die Ausgabe von „ipconfig / all“ unter Windows oder „ifconfig“ auf Linux zu analysieren. Erwägen Sie die Verwendung os.popen () mit einigen regexps.

Abhängig von Ihrer Plattform. Wenn Sie mit * nix, können Sie den Befehl ‚arp‘ verwenden, um die MAC-Adresse für eine bestimmte IP (unter der Annahme, IPv4) Adresse nachschlagen. Wenn das nicht funktioniert, können Sie die Adresse anpingen und dann schauen, oder wenn Sie den Zugriff auf das rohe Netzwerk (mit BPF oder einem anderen Mechanismus), könnten Sie Ihre eigenen ARP-Pakete senden (aber das ist wahrscheinlich übertrieben).

Sie wollten die Ausgabe von ‚arp‘, aber der Kernel-ARP-Cache nur die IP-Adresse (n), wenn diese Hosts mit dem Host, auf das der Python-Skript ausgeführt wird kommunizierten enthält analysieren.

ifconfig kann verwendet werden, um die MAC-Adressen der lokalen Schnittstellen angezeigt werden, nicht aber die im LAN.

Mark Pilgrim wird beschrieben, wie dies für die aktuelle Maschine mit dem NetBIOS-Modul unter Windows zu tun, hier . Sie können den Netbios-Modul als Teil des Win32-Pakets zur Verfügung zu python.org bekommen. im Moment kann ich leider nicht die Dokumentation auf dem Modul finden.

als Python nicht gemeint war mit OS-spezifischen Fragen befassen (es angenommen hat, interpretiert und Cross-Plattform werden), würde ich einen externen Befehl ausführen, dies zu tun:

in Unix ist der Befehl ifconfig

, wenn Sie es als Rohr führen Sie das gewünschte Ergebnis erhalten:

import os
myPipe = os.popen2("/sbin/ifconfig","a")
print(myPipe[1].read())
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top