Mitch está certo. Com a correspondência negativa que você tem, você precisa que ambas as condições sejam verdadeiras para filtrar seu IP, assim e em vez de ou . Você também pode escrever assim:
not (ip.addr == 192.168.5.22)
Pode parecer mais lógico gravá-lo como ip.addr != 192.168.5.22
, mas embora seja uma expressão válida, ele corresponderá ao outro final da conexão como não sendo o ip específico e ainda será verdadeiro. Por exemplo, ao se conectar a 192.168.5.254 de 192.168.5.22, ip.addr != 192.168.5.22
não corresponde a * .22 IP, corresponde a * .254 e, portanto, o pacote corresponde à expressão de filtro. Aqui está um exemplo completo para filtrar http também:
not ip.addr == 192.168.5.22 and not tcp.dstport == 80
tcp.dstport! = 80 sofre de um problema similar; ter tcp.dstport! = 80 significa "corresponder apenas ao tráfego tcp, mas apenas tcp que não é dstport == 80"
Embora não seja estritamente sua pergunta, eu prefiro fazer filtragem no filtro de captura (clique duas vezes no nome da interface na caixa de diálogo capture-options), cuja sintaxe é exatamente como tcpdump. Isso faz com que a captura leve menos memória e disco, evitando a captura de pacotes que você está dizendo para ignorar. A desvantagem é que esses pacotes não são capturados se você desejar inspecioná-los posteriormente e não for possível alterar o filtro selecionado dessa maneira durante uma sessão de captura. Por exemplo, para evitar a captura de tráfego http e ssh de / para qualquer host e qualquer pacote para ou de 192.168.5.22,
not host 192.168.5.22 and not port 80 and not port 22
Se você só quisesse filtrar o tráfego HTTP de e para esse host, poderia fazer isso:
not (host 192.168.5.22 and port 80)