O tshark está usando sintaxe diferente com o wireshark?

4

O filtro !ssh funciona no wireshark, mas não no tshark!

Quando eu faço tshark '!ssh' , ele reclama do filtro, então o que há de errado aqui?

    
por daisy 30.12.2012 / 13:51

2 respostas

5

Existe uma diferença entre os mais simples filtros de captura e os mais poderosos display filters .

!ssh é um filtro de exibição. Você pode usá-lo com tshark like

tshark -R '!ssh'

Efeito semelhante com filtros de captura:

tshark 'not tcp port 22'

Por favor, note que tshark tem filtros de captura padrão se você executá-lo em ssh.

    
por 30.12.2012 / 14:03
0

Como @jofel disse em sua resposta e como eu explico em detalhes no meu tutorial wireshark para iniciantes - há uma diferença entre os filtros de exibição e os filtros de captura.

Filtros de captura

Em uma rede muito lotada, a captura de cada pacote pode gerar gigabytes de dados em apenas alguns segundos e, provavelmente, muito disso não é interessante para você.

É aqui que os filtros de captura são úteis. Definindo o filtro de captura, você pode dizer ao Wireshark para capturar apenas alguns subconjuntos de tráfego de rede. Você pode filtrar por endereços IP, faixa de endereços IP, números de porta, protocolo e assim por diante.

Por favor, tome nota que quando você usa um filtro de captura, os pacotes que não são correspondentes não serão salvos no arquivo de captura. Você nunca poderá recuperá-los. Se sua rede não estiver muito cheia, geralmente é melhor capturar e salvar tudo e usar filtros de exibição para analisar apenas o subconjunto que é interessante.

Esta é a documentação da sintaxe do filtro de captura

Exibir filtros ** é outra história

Os filtros de exibição são diferentes dos filtros de captura. Eles limitam apenas o que você vê no momento na interface wireshark (ou saída tshark para o console) - são muito mais avançados e usam uma sintaxe diferente. Você pode usar a maioria dos campos de pacotes reconhecidos pelos dissecadores com vários operadores - comparando strings, verificando valores e assim por diante.

O que você digita na barra de ferramentas da GUI do Wireshark é o filtro de exibição. Eu recomendo brincar com a janela "expressões" ao lado dela. É um dos recursos mais importantes e mais usados do wireshark.

O motivo pelo qual você não pode usar o filtro "não ssh" captura é que os filtros de captura funcionam em um nível inferior aos filtros de exibição. O Wireshark não "sabe" ainda qual protocolo é para cada pacote quando realiza a filtragem de captura. É uma análise de alto nível realizada por dissecadores.

Para filtrar tudo, exceto o tráfego SSH no nível de captura, você precisa filtrar o tráfego da porta 22, ou seja, com o filtro de captura "not port 22" .

Se for tshark

Você pode usar filtros de captura e exibir filtros com tshark, mas eles são opções de opção de linha de comando diferentes:

exemplo de filtro de captura: tshark -f "not port 22"

exemplo de filtro de exibição: tshark -R "not ssh"

Outra coisa é que você usou !ssh enquanto o ponto de exclamação em alguns shells populares unix (como o bash) tem significado especial e é interpretado pelo shell antes ser passado para o aplicativo que você está prestes a executar. Você deve escapar dessa forma como \!ssh ou simplesmente usar o operador not logical que é suportado pelos filtros de captura e exibição.

Espero que seja uma resposta exaustiva e justifique o meu plug sem vergonha no começo:)

    
por 13.01.2015 / 21:52

Tags