erro de sintaxe tcpdump ao especificar portrange conforme documentado

erro de sintaxe tcpdump ao especificar portrange conforme documentado

Estou usando o tcpdump no OpenBSD e tentando aprender com umprimer sobre isso.

Quero capturar uma série de portas, mas parece que a forma como isso é feito mudou. Não consigo nem encontrar porrange como palavra-chave na página de manual, o que também sugere isso.

# tcpdump portrange 100-65535 
tcpdump: syntax error

Não é uma coisa:

# man tcpdump | grep portrange
# 

Presumo que isso tenha mudado ou seja diferente no OpenBSD. Se alguém pudesse me dizer o que fazer para isso, desde minhas primeiras aulas estaremos com algo prático seria ótimo. Seria ainda melhor se alguém me contasse sobre uma cartilha atualizada sobre o tcpdump.

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

Responder1

portrangenão existe 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á-los. O primeiro número é deslocado no pacote (começando em zero) e o segundo número é quantos bytes usar. 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 com a porta de origem seria tcp[0:2]. Na verdade, o UDP seria o mesmo, já que as portas têm os mesmos deslocamentos.

Responder2

Os filtros de exibição são gerenciados pelo libpcap, e o OpenBSD tem seu próprio libpcap e tcpdump, que não necessariamente captam alterações do libpcap e tcpdump do tcpdump.org.

Se portrangenão funcionar, o suporte para isso é provavelmente uma das coisas que o OpenBSD não pegou.

Responder3

você man pcap-filternão deve usarman 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.

informação relacionada