Ошибка синтаксиса tcpdump при указании portrange, как описано в документации

Ошибка синтаксиса tcpdump при указании portrange, как описано в документации

Я использую tcpdump на OpenBSD и пытаюсь изучить его сгрунтовка на нем.

Я хочу захватить диапазон портов, но, похоже, способ этого изменился. Я даже не могу найти portrange как ключевое слово на странице руководства, которая также предполагает это.

# tcpdump portrange 100-65535 
tcpdump: syntax error

Ничего:

# man tcpdump | grep portrange
# 

Я предполагаю, что это изменилось, или это по-другому в OpenBSD. Если бы кто-нибудь мог сказать мне, что делать для этого, поскольку мои первые уроки будут с чем-то практическим, это было бы здорово. Было бы еще лучше, если бы кто-нибудь рассказал мне об обновленном учебнике по tcpdump.

OpenBSD поставляется со своим собственным tcpdump, который может быть форком, я не совсем уверен.

решение1

portrangeего нет в pcap-filter OpenBSD, но его можно подделать.

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

Вы можете адресовать части пакетов и сравнивать с ними. Первое число — это смещение в пакете (начиная с нуля), а второе число — сколько байтов использовать. Таким образом, приведенный выше пример соответствует любому пакету tcp с портом назначения от 80 до 84. Вы также можете использовать <= и >=, чтобы сделать все более интуитивно понятным.

Сопоставление с исходным портом будет tcp[0:2]. UDP на самом деле будет таким же, поскольку порты находятся на тех же смещениях.

решение2

Фильтры отображения обрабатываются libpcap, а OpenBSD имеет собственные libpcap и tcpdump, которые не обязательно учитывают изменения из libpcap и tcpdump с сайта tcpdump.org.

Если portrangeэто не работает, то, вероятно, OpenBSD не поддерживает эту функцию.

решение3

вы должны использовать man pcap-filternot 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.

Связанный контент