tcpdump-Syntaxfehler beim Angeben des Portbereichs wie dokumentiert

tcpdump-Syntaxfehler beim Angeben des Portbereichs wie dokumentiert

Ich verwende tcpdump unter OpenBSD und versuche, es von einemGrundierung drauf.

Ich möchte einen Portbereich erfassen, aber die Vorgehensweise scheint sich geändert zu haben. Ich kann portrange nicht einmal als Schlüsselwort auf der Manualpage finden, die dies ebenfalls nahelegt.

# tcpdump portrange 100-65535 
tcpdump: syntax error

Kein Ding:

# man tcpdump | grep portrange
# 

Ich nehme an, dass sich das geändert hat oder es unter OpenBSD anders ist. Wenn mir jemand sagen könnte, was ich dafür tun soll, da meine ersten Lektionen etwas Praktisches sein werden, wäre das großartig. Noch besser wäre es, wenn mir jemand von einer aktualisierten Einführung zu tcpdump erzählen würde.

OpenBSD wird mit seinem eigenen TCPdump ausgeliefert, bei dem es sich möglicherweise um einen Fork handelt, ich bin mir nicht ganz sicher.

Antwort1

portrangeist im PCAP-Filter von OpenBSD nicht vorhanden, aber Sie können es vortäuschen.

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

Sie können Teile der Pakete adressieren und mit ihnen vergleichen. Die erste Zahl ist der Offset im Paket (beginnend bei Null) und die zweite Zahl gibt an, wie viele Bytes verwendet werden sollen. Das obige Beispiel passt also zu jedem TCP-Paket mit einem Zielport von 80 bis 84. Sie können auch <= und >= verwenden, um die Dinge intuitiver zu gestalten.

Der Abgleich mit dem Quellport wäre tcp[0:2]. Bei UDP wäre es eigentlich dasselbe, da die Ports die gleichen Offsets haben.

Antwort2

Die Anzeigefilter werden von libpcap verwaltet, und OpenBSD hat sein eigenes libpcap und tcpdump, die nicht unbedingt Änderungen von libpcap und tcpdump von tcpdump.org übernehmen.

Wenn portrangees nicht funktioniert, ist die Unterstützung dafür wahrscheinlich eines der Dinge, die OpenBSD nicht verstanden hat.

Antwort3

Sie sollten man pcap-filternicht verwendenman tcpdump

Entsprechend 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.

verwandte Informationen