What is a match operator in Wireshark?

Wireshark Filtre: En Komplet Guide

08/11/2009

Rating: 4.66 (8022 votes)

At navigere i den komplekse verden af netværksanalyse kan være en udfordring, men med de rigtige værktøjer bliver det markant lettere. Wireshark er et af de mest kraftfulde værktøjer til analyse af netværksprotokoller, og kernen i dets effektivitet ligger i dets displayfiltersprog. Dette sprog giver dig mulighed for præcist at kontrollere, hvilke pakker der vises, hvilket gør det muligt at isolere specifik trafik og hurtigt diagnosticere problemer. Uanset om du vil tjekke for tilstedeværelsen af en protokol, værdien af et specifikt felt eller endda sammenligne to felter, giver Wiresharks filtre dig magten til at skære igennem støjen. Denne artikel vil guide dig gennem alt, hvad du behøver at vide for at bygge effektive filterudtryk, fra de mest basale sammenligninger til komplekse kombinationer med logiske operatorer.

What is a filter string in Wireshark?
Every field in the packet information pane can be used as a filter string to display only the packets that have that field. The filter string: tcp, for instance, will display all packets that contain the tcp protocol. Right above the column display part of Wireshark is a bar that filters the display.

Grundlæggende om Displayfiltre

Det simpleste displayfilter er et, der viser en enkelt protokol. For kun at vise pakker, der indeholder en bestemt protokol, skal du blot skrive protokollens navn i Wiresharks displayfilter-værktøjslinje. Hvis du for eksempel kun vil se TCP-pakker, skriver du tcp. På samme måde kan du filtrere efter et specifikt felt. For eksempel, for kun at vise HTTP-anmodninger, kan du skrive http.request. Du kan filtrere på enhver protokol, som Wireshark understøtter, og på ethvert felt, som en dissektor har tilføjet til trævisningen, forudsat at feltet har en forkortelse. En komplet liste over tilgængelige protokoller og felter kan findes via menupunktet View → Internals → Supported Protocols.

Sammenligning af Værdier

En af de mest grundlæggende funktioner i Wiresharks filtersprog er evnen til at sammenligne værdier. Dette gøres ved hjælp af forskellige sammenligningsoperatorer. For eksempel, for kun at vise pakker, der sendes til eller fra IP-adressen 192.168.0.1, kan du bruge filteret ip.addr == 192.168.0.1. Der findes en række operatorer, som kan bruges til at skabe meget specifikke forespørgsler.

What is a match operator in Wireshark?

Tabel over Sammenligningsoperatorer

Nedenstående tabel viser en komplet liste over de tilgængelige sammenligningsoperatorer. Bemærk, at engelske og C-lignende operatorer kan bruges i flæng.

EngelskC-lignendeBeskrivelseEksempel
eq==Lig medip.src == 10.0.0.5
ne!=Ikke lig medip.src != 10.0.0.5
gt>Større endframe.len > 10
lt<Mindre endframe.len < 128
ge>=Større end eller lig medframe.len >= 0x100
le<=Mindre end eller lig medframe.len <= 0x20
containsProtokol, felt eller udsnit indeholder en værdisip.To contains "a1762"
matches~Protokol- eller tekstfelt matcher et regulært udtryk (PCRE)http.host matches "acme\.(org|com|net)"
bitwise_and&Bitvis AND er forskellig fra nultcp.flags & 0x02

Kombinering af Udtryk

For at skabe mere avancerede og specifikke filtre kan du kombinere flere udtryk ved hjælp af logiske operatorer. De mest almindelige er and, or og not. Dette giver dig mulighed for at bygge komplekse betingelser for at indsnævre din søgning.

For eksempel, hvis du vil finde pakker, der kommer fra IP-adressen 10.0.0.5 OG har FIN-flaget sat i TCP-headeren, kan du bruge følgende udtryk: ip.src == 10.0.0.5 and tcp.flags.fin. Hvis du i stedet vil se pakker, der kommer fra enten 10.0.0.5 ELLER 192.1.1.1, ville udtrykket være: ip.src == 10.0.0.5 or ip.src == 192.1.1.1.

What is a match operator in Wireshark?
The matches, or ~, operator makes it possible to search for text in string fields and byte sequences using a regular expression, using Perl regular expression syntax. Note: Wireshark needs to be built with libpcre in order to be able to use the matches operator. Match HTTP requests where the last characters in the uri are the characters "gl=se":

Tabel over Logiske Operatorer

EngelskC-lignendeBeskrivelseEksempel
and&&Logisk ANDip.src==10.0.0.5 and tcp.flags.fin
or||Logisk ORip.src==10.0.0.5 or ip.src==192.1.1.1
xor^^Logisk XORtr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29
not!Logisk NOTnot llc
inMedlemskab i et sæthttp.request.method in {"HEAD" "GET"}

Avancerede Operatorer og Funktioner

Udover de grundlæggende sammenligninger og logiske kombinationer tilbyder Wireshark mere avancerede måder at filtrere data på, herunder slice-operatøren, medlemskabsoperatøren og en række indbyggede funktioner.

Slice Operatøren ([])

Slice-operatøren giver dig mulighed for at vælge en delsekvens af et felt. Dette er især nyttigt, når du arbejder med felter som MAC-adresser eller andre byte-sekvenser. Du kan specificere et område ved hjælp af forskellige formater:

  • n:m - Vælger m bytes startende fra offset n. Eksempel: eth.src[0:3] == 00:00:83
  • n-m - Vælger bytes fra offset n til og med offset m. Eksempel: eth.src[1-2] == 00:83
  • :m - Vælger alt fra begyndelsen op til offset m. Eksempel: eth.src[:4] == 00:00:83:00
  • n: - Vælger alt fra offset n til slutningen af sekvensen. Eksempel: eth.src[4:] == 20:20

Medlemskabsoperatøren (in)

Med medlemskabsoperatøren kan du teste, om et felt er en del af et specificeret sæt af værdier. Dette er en mere elegant måde at skrive lange or-kæder på. For eksempel, for at vise pakker med en TCP kilde- eller destinationsport på 80, 443 eller 8080, kan du bruge: tcp.port in {80 443 8080}. Dette er ækvivalent med tcp.port == 80 || tcp.port == 443 || tcp.port == 8080, men er ofte lettere at læse og skrive.

How to combine filter expressions in Wireshark?
You can combine filter expressions in Wireshark using the logical operators shown in Table 6.6, “Display Filter Logical Operations” Table 6.6. Display Filter Logical Operations [… See “Slice Operator” below. http.request.method in {"HEAD" "GET"}. See “Membership Operator” below.

Funktioner

Wireshark har indbyggede funktioner, der kan manipulere feltværdier, før de sammenlignes. Dette åbner op for endnu mere sofistikerede filtreringsmuligheder.

  • upper() / lower(): Konverterer en streng til store eller små bogstaver. Nyttigt for case-insensitive matches. Eksempel: lower(http.server) contains "apache"
  • len(): Returnerer længden af et streng- eller bytefelt i bytes. Eksempel: len(http.request.uri) > 100
  • count(): Tæller antallet af forekomster af et felt i en ramme. Eksempel: count(ip.addr) > 2 for at finde pakker med tunneling eller ICMP-fejl.
  • string(): Konverterer et ikke-strengfelt til en streng. Eksempel: string(frame.number) matches "[13579]$" for at finde rammer med ulige numre.

En Almindelig Fejl: Brug af `!=`

En hyppig faldgrube for nye Wireshark-brugere er den forkerte brug af 'ikke lig med'-operatøren (!=). Mange forventer, at ip.addr != 1.2.3.4 vil udelukke alle pakker, der involverer denne IP-adresse. Dette er dog ikke tilfældet. Udtrykket læses som "pakken indeholder et felt ved navn ip.addr med en værdi, der er forskellig fra 1.2.3.4". Da en IP-pakke har både en kilde- og en destinationsadresse, vil udtrykket være sandt, så længe blot én af adresserne er forskellig fra 1.2.3.4. Den korrekte måde at udelukke al trafik til og fra en bestemt IP-adresse er ved at bruge den logiske NOT-operator på et positivt match: !(ip.addr == 1.2.3.4). Dette udtryk betyder "vis mig alle pakker, for hvilke det IKKE er sandt, at der findes et ip.addr-felt med værdien 1.2.3.4", hvilket er det ønskede resultat.

Ofte Stillede Spørgsmål (FAQ)

Hvad er forskellen på et 'display filter' og et 'capture filter'?
Et 'capture filter' anvendes, FØR dataindsamlingen starter, og bestemmer, hvilke pakker der overhovedet gemmes i filen. Et displayfilter anvendes, EFTER data er indsamlet, og bestemmer blot, hvilke af de indsamlede pakker der vises i brugergrænsefladen. Displayfiltre er meget mere fleksible og kraftfulde.
Hvad betyder det, når min filterlinje bliver grøn, gul eller rød?
Grøn betyder, at syntaksen er korrekt, og filteret er anvendt. Gul betyder, at syntaksen er gyldig, men filteret vil sandsynligvis ikke fungere som forventet (f.eks. ved brug af `!=` på `ip.addr`). Rød betyder, at der er en syntaksfejl i dit filterudtryk.
Hvad er 'matches' operatøren?
Operatøren matches (eller ~) giver dig mulighed for at søge i tekststrenge ved hjælp af et Perl-kompatibelt regulært udtryk (PCRE). Det er et ekstremt kraftfuldt værktøj til at finde mønstre i data, f.eks. specifikke URL-strukturer eller brugernavne.
Kan jeg gemme mine filtre til senere brug?
Ja, Wireshark giver dig mulighed for at gemme dine mest brugte displayfiltre. Ved siden af filterinputfeltet er der en knap til at bogmærke filtre, så du nemt kan genbruge dem i fremtidige sessioner uden at skulle skrive dem igen.

Hvis du vil læse andre artikler, der ligner Wireshark Filtre: En Komplet Guide, kan du besøge kategorien Teknologi.

Go up