2012-06-05 37 views
6

Używam Scapy, aby odtworzyć niektóre zgrane pakiety, w których zmieniam wartość TTL. Otrzymałem bardzo dziwne wyniki nawet przy TTL = 1.brak pobierania wszystkich komunikatów przekroczenia czasu ICMP: dlaczego?

Po uruchomieniu godzin testowych niezależnie od siebie, mogę uzyskać od około 40% do 95% pakietów, na które odpowiedziano z komunikatem przekroczenia czasu ICMP. Następnie mogę rekurencyjnie odtwarzać nieodebrane pakiety i uzyskiwać za każdym razem mniej więcej taki sam procent odebranych pakietów, jak poprzednio.

Dlaczego tak jest?

Przesyłam pakiety w odstępach 0,1 sekundy między sobą. To powinno być w porządku, prawda? Moja wartość limitu czasu to 10s, co powinno być bardzo zachowawcze.

Co jest nie tak?

Odpowiedz

5

To, co mówisz, to zasadniczo to, że możesz testować tylko tyle nieosiągalnych hostów w danym czasie. Jeden z możliwych powodów: wiele routerów komunikatów ICMP z limitem stawki.

Znacznie lepiej jest przetestować na sukces hosta przed wykonaniem czegoś innego; w ten sposób uzyskasz pozytywne potwierdzenie osiągalności. Minusem jest domyślnie blokowanie pingów MS Windows.

Jeśli nie możesz najpierw uzyskać ping, musisz wydłużyć czas między sondami lub zwiększyć nieosiągalną stawkę ICMP na routerze zwracającym komunikaty ICMP.

EDIT:

oparciu o komentarze, wygląda jakbyś uderzenie ścianę dla scapy „s zdolność do przetwarzania ruchu. Poprawiłem przepustowość w przeszłości, wysyłając z scapy i odradzając tcpdump w tle, aby odbierać ruch.

+0

Ograniczenie stawki ICMP było również moim domysłem, ale dzisiaj próbowałem wysłać wszystko ponownie z interwałem międzywarstwowym nawet na 5 sekund, a wciąż nie otrzymałem odpowiedzi na co najmniej 6-7 pakietów poza moje 50 (mały test). Używam funkcji 'sr' w Scapy. Pomyślałem więc, że przekażę go po jednym pakiecie, a potem zatrzymam na 1 sekundę. Cóż, tym razem * co * pojedynczy pakiet zostanie odebrany. Chyba jest to problem z implementacją 'sr'. –

+1

Widziałem podobne problemy z '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'slow-powolny dla wysyłania/odbierania ruchu '; w jednym projekcie zacząłem używać 'tcpdump' jako procesów w tle, które zapisywałem do pliku' .pcap', a następnie przeanalizowałem plik w 'scapy', aby sprawdzić, czy otrzymałem poprawną odpowiedź. –

+0

Rozumiem. Czy znasz jakieś alternatywy dla funkcji 'sr'? Naprawdę wystarczy wysłać pakiety ze zmodyfikowaną wartością TTL i powiązać je z odpowiednim komunikatem ICMP. Wyglądało to tak/bardzo prosto w Scapy, ale wywołanie 'sr' dla każdego pakietu trwa wieki. –