tcpdump ao especificar portrange conforme documentado

3

Estou usando o tcpdump no OpenBSD e tentando aprendê-lo a partir de um primer sobre ele .

Eu quero capturar um intervalo de portas, mas parece que isso é feito mudou. Eu não consigo nem encontrar portrange como uma palavra-chave na página de manual que também sugere isso.

# tcpdump portrange 100-65535 
tcpdump: syntax error

Não é uma coisa:

# man tcpdump | grep portrange
# 

Eu suponho que isso mudou, ou é diferente no OpenBSD. Se alguém pudesse me dizer o que fazer para isso, já que as minhas primeiras aulas serão com algo prático, seria ótimo. Seria ainda melhor se alguém me dissesse sobre uma cartilha atualizada no tcpdump.

O OpenBSD vem com seu próprio tcpdump que pode ser um fork, eu não tenho certeza.

    
por John Tate 06.10.2013 / 17:39

3 respostas

4

portrange não está no filtro pcap do OpenBSD, mas você pode fingir.

tcpdump -i em0 tcp[2:2] > 79 and tcp[2:2] < 85

Você pode endereçar partes dos pacotes e compará-las. O primeiro número é deslocado no pacote (começando em zero) e o segundo número é quantos bytes devem ser usados. Portanto, o exemplo acima corresponde a qualquer pacote tcp com uma porta de destino de 80 a 84. Você também pode usar < = e > = para tornar as coisas mais intuitivas.

A correspondência na porta de origem seria tcp[0:2] . O UDP, na verdade, seria o mesmo, já que as portas estão com os mesmos deslocamentos.

    
por 06.10.2013 / 20:30
2

Os filtros de exibição são manipulados pela libpcap, e o OpenBSD tem sua própria libpcap e tcpdump, que não necessariamente selecionam mudanças da libpcap e tcpdump do tcpdump.org.

Se portrange não funcionar, o suporte provavelmente é uma das coisas que o OpenBSD não detectou.

    
por 06.10.2013 / 20:11
1

você deve usar man pcap-filter não man tcpdump

De acordo com man pcap-filter :

dst portrange port1-port2
              True  if  the packet is ip/tcp, ip/udp, ip6/tcp or ip6/udp and has a destination port value between port1 and port2.  port1 and port2 are interpreted
              in the same fashion as the port parameter for port.


   src portrange port1-port2
          True if the packet has a source port value between port1 and port2.

   portrange port1-port2
          True if either the source or destination port of the packet is between port1 and port2.

          Any of the above port or port range expressions can be prepended with the keywords, tcp or udp, as in:
               tcp src port port
          which matches only tcp packets whose source port is port.
    
por 06.10.2013 / 18:31