2012-09-06 15 views
5

Tło:Packet zachowanie dopasowywania w scapy

Używam scapy przetestować urządzenie sieciowe, które mogą selektywnie pakiety pętli zwrotnej poprzez zamianę MAC źródłowy/docelowy, adresy IP i numery portów w warstwie 4. Zamiana może być wybrana dla layer_2_only, layers_2_and_3, layers_2_3_and_4. Używam scapy na serwerze, przesyłając pakiety do urządzenia i sprawdzam, czy pakiety odesłane mają odpowiednie zmienne źródłowe/docelowe w zależności od ustawienia.

Problem:

Sposób scapy srploop(), który wysyła i odbiera pakiety mecze działa dobrze dla typów komunikatów, takich jak ping ARP. Zauważyłem, że jeśli przesyłam pakiet UDP, a porty źródłowe/dest nie są odwracane przez urządzenie z pętlą zwrotną, wówczas scapy nie traktuje pakietu z zapętlonymi połączeniami jak dopasowania. Gdy numery portów są odwracane przez urządzenie z pętlą zwrotną, pakiety są wykrywane jako dopasowania.

Pytania:

  1. Czy istnieje sposób, aby zastąpić lub w inny sposób wpływać na dopasowanie pakietów logiki scapy'S? Na przykład przydatne byłoby wyłączenie dopasowywania w warstwie 4. Przyjrzałem się dokumentacji i nie natknąłem się na nic, co sugeruje, że jest to możliwe.

  2. Czy istnieje inny sposób, aby osiągnąć to w scapy. Eksperymentowałem z użyciem send(), a następnie sniff(), ale nie udało mi się przechwycić odpowiedzi przy użyciu tej metody.

Odpowiedz

1

W drugiej części pytania możesz wypróbować podejście wspomniane w artykule Scapy fails to sniff packets when using multiple threads.

Zasadniczo uruchom sniffer na oddzielnym wątku i odfiltruj ruch powrotny do kolejki, do której można uzyskać dostęp z głównego wątku wykonującego numer send(). Tak więc wysyłanie i odbieranie odbywa się w tym samym czasie (na dwóch wątkach).

Jedyny problem polega na tym, że na mojej konkretnej instalacji natknąłem się na dziwne zachowanie w snifferze, w którym nie można zastosować filtru po uruchomieniu w osobnym wątku. Mam nadzieję, że będziesz miał więcej szczęścia.

UPDATE: Ten problem z snifferem został rozwiązany (odsyłaj moje pytanie powyżej).

Mam nadzieję, że to pomoże!

Powiązane problemy