Erfassen Sie nur UDP-Verkehr, der nicht als anderes Protokoll identifiziert werden kann

1

Ich habe den udpFilter angewendet , um nur den UDP-Verkehr zu erfassen, wie im Wireshark Wiki beschrieben :

Nur den UDP-basierten Verkehr anzeigen: udp

Dies zeigt jedoch nicht nur UDP-Verkehr. Es zeigt den UDP-Verkehr und alles, was auf UDP aufbaut.

Da ich nur unseren eigenen UDP-Verkehr analysieren möchte und noch keinen Dissektor implementiert habe, suche ich nach einer Möglichkeit, nur UDP-Verkehr anzuzeigen, der nicht als ein anderes Protokoll identifiziert werden kann.

Ich möchte vermeiden, eine Liste von auszuschließenden Protokollen hinzuzufügen, z. B. die lange Liste anderer Protokolle in meinem Filter zu vermeiden:

udp && !http && !dhcpv6 && !bootp && !smb && !cldap && !mdns && !llmnr

Wie kann ich nur UDP-Verkehr erfassen, der nicht als anderes Protokoll identifiziert werden kann?

Thomas Weller
quelle
Warum filtern Sie nicht den spezifischen UDP-Port, den Sie verwenden?
Grawity
@grawity: Jedes unserer Geräte verwendet einen anderen Port. Es ist möglich, die Ports herauszufinden, sobald ich ein Paket unserer Geräte gefunden habe, aber ich möchte den zusätzlichen Schritt vermeiden
Thomas Weller,

Antworten:

1

Beachten Sie zunächst, dass Sie mit den Anzeigefiltern von Wireshark arbeiten, die sich von den Erfassungsfiltern von libpcap unterscheiden. (libpcap selbst hat einen udpFilter, versteht aber nur sehr wenige Protokolle. Sie erfassen also alles, filtern aber die angezeigte Liste.)

In Wireshark enthält der Abschnitt "Frame" verschiedene Metadaten zum zerlegten Paket, zum Beispiel:

Protocols in frame: eth:ethertype:ip:udp:dns

Dies entspricht dem frame.protocolsFeld. Wenden Sie jetzt eine Regex- Übereinstimmung mit ~oder an matches:

udp && frame.protocols ~ ":udp$"

Dies stimmt mit allen Paketen überein, bei denen das letzte erkannte Protokoll UDP war (dh frame.protocolsmit dem Text endet :udp). Seien Sie vorsichtig - ein Teil des Datenverkehrs wird möglicherweise als obskures Protokoll falsch erkannt, obwohl dies nicht der Fall ist.

(Das udp &&Präfix ist eine Optimierung. Eine Protokollübereinstimmung ist möglicherweise effizienter, um Nicht-UDP-Datenverkehr zu verwerfen, als eine String-Regex-Übereinstimmung.)

Grawity
quelle
1
Es scheint, ich brauche frame.protocols ~ ":udp:data$"- vielleicht ist das neu in Wireshark 2.0
Thomas Weller