2012-06-05 11 views
6

Ich verwende Scapy, um einige gedumpte Pakete wiederzugeben, in denen ich den TTL-Wert ändere. Ich habe sogar mit TTL = 1 sehr merkwürdige Ergebnisse bekommen.nicht alle ICMP-Zeitüberschreitungsnachrichten erhalten: Warum?

Wenn ich meine Teststunden voneinander getrennt habe, kann ich von ungefähr 40% bis 95% der beantworteten Pakete mit einer ICMP-Zeitüberschreitungsnachricht erhalten. Dann kann ich nicht beantwortete Pakete rekursiv wiederholen und jedes Mal mehr oder weniger den gleichen Prozentsatz an beantworteten Paketen erhalten wie zuvor.

Warum ist das?

Ich habe Pakete mit einem Intervall von 0,1 Sekunden zwischen einander gesendet. Das sollte in Ordnung sein, oder? Mein Timeout-Wert ist 10s, was sehr konservativ sein sollte.

Was ist hier falsch?

Antwort

5

Was Sie sagen, ist im Wesentlichen können Sie nur für so viele unerreichbare Hosts in einem bestimmten Zeitraum testen. Ein möglicher Grund: Viele Router limitieren ICMP-Nachrichten.

Es ist viel besser, einen Erfolg auf einem Host für einen ping zu testen, bevor Sie etwas anderes tun; Auf diese Weise haben Sie eine positive Bestätigung der Erreichbarkeit. Der Nachteil ist MS Windows blockiert Pings standardmäßig.

Wenn Sie nicht ping zuerst, dann müssen Sie die Zeit zwischen Ihren Sonden erhöhen, oder erhöhen Sie die ICMP unerreichbar Rate auf dem Router, der die ICMP-Nachrichten zurückgibt.

EDIT:

auf die Kommentare Basierend sieht es aus wie Sie eine Wand für scapy ‚s Fähigkeit schlagen Verkehr zu verarbeiten. Ich habe den Durchsatz in der Vergangenheit verbessert, indem ich mit scapy und dem Laichen tcpdump im Hintergrund gesendet habe, um Verkehr zu empfangen.

+0

ICMP Rate-Limiting war auch meine Vermutung, aber dann habe ich heute versucht, alles wieder mit einem Inter-Paketintervall von nur 5 Sekunden zu senden, und ich habe immer noch keine Antwort für mindestens 6-7 Pakete aus erhalten meine 50 (kleiner Test). Ich benutze die 'sr' Funktion in Scapy. Also dachte ich, ich würde es packen und dann für eine Sekunde pausieren. Nun, diesmal wird jedes * einzelne Paket beantwortet. Ich denke, es ist ein Problem mit der Implementierung von 'sr'. –

+1

Ich habe ähnliche Probleme mit "scapy" gesehen, es ist langsam zum Senden/Empfangen von Verkehr; Bei einem Projekt habe ich tatsächlich 'tcpdump' als Hintergrundprozess verwendet, der in eine '.pcap'-Datei geschrieben hat, und dann die Datei in' scapy' geparst, um zu sehen, ob ich die richtige Antwort bekommen habe. –

+0

Ich verstehe. Kennen Sie Alternativen zu Scapys 'sr'-Funktion? Ich muss nur Pakete mit einem modifizierten TTL-Wert senden und sie mit der entsprechenden ICMP-Nachricht paaren. Es sah in Scapy so einfach aus, aber der Aufruf von 'sr' für jedes Paket dauert Ewigkeiten. –

Verwandte Themen