2010-12-13 20 views
7

Kiedy piszesz program do Wiresharka, jak go testujesz? Szukanie wizualnych danych wyjściowych w interfejsie użytkownika nie jest wystarczające dla niezbyt trywialnego protokołu.Jak testujesz narzędzie Wireshark?

Czy istnieje dobry sposób na testowanie jednostkowe urządzenia do cięcia?

Edycja:

struktura ramek protokołu jest dynamiczny. Disektor musi jakoś zinterpretować treść.

Na przykład, jeśli piąte pole jest jedną tablicą bajtów, następuje jako szóste pole. Jeśli masz dwa, masz podwójną tablicę, a jeśli masz trzy, musisz dodać zero zakończony łańcuchem.

Zwykle nie dzieje się to podczas codziennego przechwytywania. Dlatego potrzebujesz syntetycznych danych przechwytywania nawet z "niemożliwymi" treściami.

Odpowiedz

6

Aby przetestować Wireshark paraszyta znalazłem to przydatne:

  • definiują zestaw pakietów że paraszyta powinna przeanalizować w tym zniekształcone pakiety
  • Wdrożenie pakiety jak szesnastkowej
  • Definiowanie spodziewanych rezultatów
  • Dla każdego pakietu zrzucić
    • Generowanie plików pcap z text2pcap
    • Uruchom paraszyta z tshark
    • Extract ładunek z wyjścia PDML z tshark
    • Porównaj wyjście XML z oczekiwanym wyjściem XML

ten można poprawić poprzez filtrowanie wyjścia XML, ponieważ PDML zawiera także bajty pakietów, co może być denerwujące, jeśli ładunek jest duży i/lub złożony.

Sugerowana argumentów wykonywalnych Wireshark są

text2pcap -T 1024,9876 foo.txt foo.pcap 
tshark -T pdml -r "foo.pcap" 

Aby wyodrębnić wyjście paraszyta warto jest użyć wyrażenia XPath z XmlNode .NET CLR klasy. Można to zrobić, to jest w ten sposób:

XmlNode output = tsharkOutput.SelectSingleNode("packet/proto[@name='foo']"); 
XmlNodeList refList = referenceDocument.SelectNodes("proto[@name='foo']"); 
-1

Chyba jestem staroświecki. Podstawowym zadaniem rozpraszacza jest transformacja danych do postaci czytelnej dla człowieka, więc przetestowałem ją, czytając ją przez ludzi.

Przypuszczam, że można wykonać bardziej zautomatyzowane testowanie, eksportując do txt lub pdml z file->export lub wdrażając jakieś opakowanie testowe wokół biblioteki DLL wtyczki.

+0

Można sprawdzić tylko wyjście danych rzeczywistych. Ale powinieneś także przetestować zachowanie programatora, jeśli uzyska dane, które nie pasują do aktualnej specyfikacji protokołu, tj. Następnej wersji. – harper

+0

Pytasz, jak wygenerować dane testowe? Format pliku libpcap jest dobrze udokumentowany na http://wiki.wireshark.org/Development/LibpcapFileFormat –

+0

Nie. Generacja to tylko jeden punkt w testowaniu. Bardziej interesujący jest wynik pracy dysektora. – harper

0

Można przeanalizować dane wyjściowe z tshark.

+0

Brzmi rozsądnie. Ale mam wiele typów ramek, wariantów ramek i chcę sprawdzić zachowanie z ramkami zawierającymi nieprawidłowe dane. Potrzebuję więc urządzenia do dostarczenia zestawu danych i odgadnięcia, w jaki sposób programista znajdzie dane i prawdopodobnie ponownie zsynchronizuje je, jeśli nie będą one zsynchronizowane. Jednym z sformalizowanych podejść będzie tsharks, aby dane wyjściowe pdml były porównywane ze wzorcem XML. Ale w jaki sposób pomijać części, które nie są konieczne? – harper

Powiązane problemy