문서화된 대로 portrange를 지정할 때 tcpdump 구문 오류가 발생합니다.

문서화된 대로 portrange를 지정할 때 tcpdump 구문 오류가 발생합니다.

OpenBSD에서 tcpdump를 사용하고 있으며그것에 대한 입문서.

다양한 포트를 캡처하고 싶지만 이 작업이 수행되는 방식이 변경된 것 같습니다. 나는 이것을 제안하는 매뉴얼 페이지에서 키워드로 portrange를 찾을 수도 없습니다.

# tcpdump portrange 100-65535 
tcpdump: syntax error

별거 아니다:

# man tcpdump | grep portrange
# 

나는 이것이 변경되었거나 OpenBSD에서는 다르다고 가정합니다. 누구든지 이를 위해 무엇을 해야 하는지 말해 줄 수 있다면 첫 번째 수업부터 실용적인 내용을 다루게 된다면 좋을 것입니다. 누군가가 나에게 tcpdump의 업데이트된 입문서에 대해 말해 준다면 더 좋을 것입니다.

OpenBSD에는 포크일 수도 있는 자체 tcpdump가 포함되어 있지만 잘 모르겠습니다.

답변1

portrangeOpenBSD의 pcap-filter에는 없지만 가짜로 만들 수 있습니다.

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

패킷의 일부를 지정하고 비교할 수 있습니다. 첫 번째 숫자는 패킷의 오프셋(0부터 시작)이고 두 번째 숫자는 사용할 바이트 수입니다. 따라서 위의 예는 대상 포트가 80~84인 모든 TCP 패킷과 일치합니다. <= 및 >=를 사용하여 보다 직관적으로 만들 수도 있습니다.

소스 포트와의 일치는 입니다 tcp[0:2]. 포트가 동일한 오프셋에 있으므로 UDP는 실제로 동일합니다.

답변2

디스플레이 필터는 libpcap에 의해 처리되며 OpenBSD에는 자체 libpcap 및 tcpdump가 있지만 tcpdump.org의 libpcap 및 tcpdump에서 변경 사항을 반드시 가져올 필요는 없습니다.

작동 하지 portrange않는다면 이에 대한 지원은 아마도 OpenBSD가 선택하지 못한 것 중 하나일 것입니다.

답변3

당신은 사용하지 man pcap-filter않아야 man tcpdump

에 따르면 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.

관련 정보