OK, her er et tips å peke deg i riktig retning.
Utfordringen var: "Skriv en tcpdump / windump filter som skal fange ICMPv6 Multicast Listener pakker."
Høres enkelt, ikke sant?
Med litt hjelp fra Google vil du finne at den "type" for Multicast lytteren er 130, og den ICMPv6 typen feltet er det første byte i overskriften. Så dette bør være så enkelt som:
tcpdump-nn-p-v-s 0 icmp6 [0] = 130
men hvis du kjører kommandoen du får tilbake:
tcpdump: IPv6 øverste laget protokollen ikke støttes av proto [x]
Med andre ord, kan du bruke "icmp6" for å se alle ICMPv6 pakker, men du kan ikke bruke den til å filtrere på noen av de ICMPv6 topptekstfeltene.
Så vi trenger en "Plan B". Finne ut plan B, og du har løst utfordringen. ![]()
Relaterte innlegg:


Den pragmatiske løsning er selvfølgelig
tcpdump-l-i enhver icmp6 | grep-E '\ B160 \ b'
eller lignende.
Den pcap-basert løsning avhenger av om du ønsker å støtte IPv6 extension overskrifter eller ikke. Hvis ikke, kan du bare bruke en forskyvning fra IP header, hvis du ønsker å støtte det, begynner det å bli mer ondt (se tcpdump-d IP6 protochain 58 for en BPF eksempel for å jage disse overskriftene!), Men da igjen, icmp6 egentlig ikke synes å støtte det heller. Er det en løsning som ikke involverer å skrive din egen BPF, og støtter jage protokollinnstillingene kjedene?
/ * Steinar * /
Avtalt grep er den enkleste gjennomføringen. Bare gjør det vanskeligere å lagre pcap filer.
For å sitere RFC 2710: "Alle MLD meldinger beskrevet i dette dokumentet er sendt med en link-lokal IPv6 Source Address, en IPv6 Hop Limit av en, og en IPv6-ruter Alert alternativet [RTR-ALERT] I et Hop-by-Hop Options header. "
Så du har en forlengelse header å håndtere. Som for å måtte jage overskriftene, så langt jeg har bare sett multicast lytteren pakker med hop-by-hop header. Selv om jeg ikke ser noe i 2710 forbød bruk av ekstra hoder.
Man kunne forestille seg IPsec alternativer, men det høres litt obskurt for MLD ...
Jeg antar at hvis du antar at det er bare RTR-varselet alternativet, er det av fast lengde, og du bare kunne bruke offset. Jeg aner ikke om du faktisk kan gjøre iterasjon eller indirekte i tekstlige pcap filtre.
/ * Steinar * /
Hei, er denne funksjonen ikke støttes for øvre lag.
Jeg er ikke sikker er denne vil fungere dersom neste header vil bli inkludert.
Så hvis du liker å filtrere icmp6 packtes etter er type og du vet at IPv6 header er 20 bytes du ganske enkelt kunne gjøre IP6 [21] & 130! = 0. Betyr første byte etter IPv6 header, og det bør være ICMPv6 header