マニュアルに従ってポート範囲を指定すると、tcpdump 構文エラーが発生します。

マニュアルに従ってポート範囲を指定すると、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から始まり)、2番目の数字は使用するバイト数です。したがって、上記の例では、宛先ポートが80〜84のすべてのTCPパケットと一致します。 <=と> =を使用してより直感的にすることもできます。

ソースポートと一致するtcp[0:2]UDPは、ポートのオフセットが等しいため、実際には同じです。

答え2

表示フィルタはlibpcapによって処理され、OpenBSDには独自のlibpcapとtcpdumpがあります。これは tcpdump.org の libpcap と tcpdump から変更を必ず行う必要はありません。

それがうまくいかない場合portrange、それをサポートすることはおそらくOpenBSDが選択しなかったことの1つです。

答え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.

関連情報