Como se testa um dissector Wireshark?

Quando se escreve um dissector para a Wireshark, como se testa? Procurar a saída visual na interface não é suficiente para um protocolo nada trivial.

Há uma boa maneira de testar a unidade do dissector?

editar:

A estrutura dos quadros de protocolo é dinâmica. O dissector deve de alguma forma interpretar o conteúdo.

por exemplo, se o quinto campo for um byte, segue-se como sexto campo. Se forem dois, tens uma matriz dupla e se for três você tem que adicionar um string zero terminado.

Isto normalmente nunca acontece numa captura diária de trabalho. É por isso que você precisa de dados sintéticos de captura mesmo com conteúdo "impossível".

Author: harper, 2010-12-13

4 answers

Para testar um dissector Wireshark achei isto útil:

  • Defina um conjunto de pacotes que o dissector deve analisar, incluindo pacotes malformados
  • implemente os pacotes como uma lixeira hex
  • Define o resultado esperado
  • para cada descarga de pacotes
    • gerar ficheiros pcap com text2pcap
    • execute o dissector com tshark
    • extrair a carga útil da saída PDML de tshark
    • Compare a saída de XML com o XML esperado saída

Isto pode ser melhorado filtrando a saída de XML, uma vez que o PDML também inclui os bytes de pacotes, o que pode ser irritante se a carga é grande ou/e complexa.

Os argumentos sugeridos para os executáveis do wireshark são

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

Para extrair o resultado do dissector, é útil usar uma expressão XPATH com a classe.net CLR XmlNode. Isto pode ser feito assim:

XmlNode output = tsharkOutput.SelectSingleNode("packet/proto[@name='foo']");
XmlNodeList refList = referenceDocument.SelectNodes("proto[@name='foo']");
 7
Author: harper, 2010-12-27 09:14:34

Podes analisar a saída de tshark .

 0
Author: Gerald Combs, 2010-12-20 05:01:08
Só para actualizar o post.

O Tshark usa os mesmos plugins que o Wireshark, e carrega-os no mesmo forma. tshark também é usado desta forma na Wireshark CI build testes, veja o diretório de testes das fontes de Wireshark para algum teste exemplos de Programas.
https://code.wireshark.org/review/gitweb?p=wireshark.git;a=árvore; f = ensaio
- grahamb.

Fonte: https://ask.wireshark.org/questions/36721/tshark-for-plugin-testing

 0
Author: Thomas Venries, 2016-08-27 13:02:52
Acho que sou antiquado. A principal finalidade de um dissector é transformar dados em uma forma legível humana, então eu testei os meus fazendo com que os humanos lessem.

Suponho que você poderia fazer mais testes automáticos exportando para txt ou pdml de {[[0]}, ou implementando algum tipo de invólucro de teste em torno do seu 'plugin' DLL.

 -1
Author: Karl Bielefeldt, 2010-12-13 20:30:07