
Ich habe kürzlich mit Tcpdump ein Paket „ARP, Anfrage wer 192.168.2.3 hat, sag 192.168.2.2, Länge 28“ abgefangen.
Ich möchte diese Meldung reproduzieren und eine ARP-Anfrage von meinem Laptop an eine beliebige IP-Adresse senden. Wie kann ich das tun?
Ich wäre auch daran interessiert, die Aktualisierung der gesamten ARP-Tabelle zu erzwingen. Ich weiß, dass das Löschen der Tabelle sie erneuert, aber nur auf Laptops ist dieser Vorgang sehr langsam und es kann bis zu 1/2/5 Minuten dauern, bis die vollständige ARP-Tabelle neu erstellt ist. Gibt es eine Möglichkeit, den Neuaufbau der Tabelle durch Senden einer gesendeten ARP-Anforderung zu erzwingen?
Ich verwende einen Mac mit dem neuesten Betriebssystem Yosemite 10.10.4
Danke schön.
Antwort1
nmap
ist ein Allzwecktool zum Scannen von Netzwerken und kann nur zum Ausführen eines ARP-Scans verwendet werden:
nmap -PR 10.0.1.0/24 -sn
Dadurch wird das -sn
Port-Scanning deaktiviert, so dass nur ARP-Anfragen ausgeführt werden und -PR
es sich um den ARP-Scan handelt.
Antwort2
Es gibt ein Open-Source-Tool namens arping
, mit dem Sie benutzerdefinierte ARP-Anfragen senden können. Sie können es von Ihrem bevorzugten OS X-Open-Source-Paketmanager wie Homebrew oder MacPorts herunterladen.
ARP-Anfragen werden normalerweise gesendet (weil Sie nicht wissen, an welche MAC-Adresse Sie sie senden sollen, sonst müssten Sie keine senden). Sie sind jedoch nichtPlatzhalter; das heißt, Sie können keine einzelne Anfrage senden, die alle Hosts im Netzwerk auffordert, Ihnen ARP-Antworten zu senden. Das Protokoll bietet keine Möglichkeit, anstelle der Ziel-IP-Adresse ein Platzhalterzeichen anzugeben.
Antwort3
ARP-Pakete werden vom Betriebssystem auf Anfrage gesendet. Wenn es also mit einer anderen IP-Adresse im selben Subnetz kommunizieren muss und die MAC-Adresse dieses Hosts noch nicht kennt, sendet es eine ARP-Anforderung. Das bedeutet, dass der Neuaufbau der Tabelle kein wirklich gut definierter Prozess ist, da Sie nicht wirklich wissen, welche anderen Hosts es gibt, bis Ihr Computer zum ersten Mal versucht, mit ihnen zu kommunizieren.
Das Aktualisieren der Einträge für die IP-Adressen, die sich derzeit in der Tabelle befinden, ist nicht allzu schwierig. Erstellen Sie einfach eine Liste der aktuellen Einträge, löschen Sie sudo arp -da
alle aktuellen Einträge und verwenden Sie dann etwas wie, ping
um das Betriebssystem zu zwingen, für jeden der gelöschten Einträge erneut ein ARP auszuführen:
ip_addresses=$(arp -an | grep -Ev '\(incomplete\)|ff:ff:ff:ff:ff:ff'| sed -n 's/? (\([0-9.]*\)) at .*$/\1/p')
sudo arp -da
for ip in $ip_addresses; do ping -c1 -t1 $ip & disown; done &>/dev/null
Beachten Sie, dass der letzte Befehl alle ping
s im Hintergrund auslöst, sodass sie praktisch alle gleichzeitig ausgeführt werden und die Tabelle recht schnell neu erstellt werden sollte.
Wenn Sie nur einen einzelnen Eintrag löschen und erneut ARP-vermitteln möchten, gehen Sie stattdessen wie folgt vor:
sudo arp -d 10.0.0.1
ping -c1 -t1 10.0.0.1