Weekend Challenge - Hint

1 desember 2009 av Chris igjen et svar »

Wow, er lyden av sirisser øredøvende. Sikkert noen som har kompetanse til å komme oss gjennom dette dilemmaet? ;)

OK, noen hint komme deg gjennom utfordringen. La oss starte med å løse dette som en IPv4-adresse, og så får vi jobber oss inn i IPv6. Anta at adressen serien vi ønsker å fange er 192.168.1.10 - 192.168.1.20. Det store problemet er at IP ikke er på en enda byte grense. Vi kunne gjøre noe sånt som:

src net 192.168.1.0/27

men det ville gi oss adressene 0,0 til 0.31, mer IP enn vi egentlig ønsket å se. For å løse dette problemet vi må bruke noen operatører og primitive. En mulighet er:

(Ip [12] = 192 og ip [13] = 168 og ip [14] = 1 og (ip [15]> = 10 og ip [15] <= 20))

Fra og med den indre mest brakettene, leser ovennevnte uttalelse "byte 15 må være større enn eller lik 10, men det må også være mindre enn eller lik 20. Hvis dette utsagnet er sant, sørg byte 12 er lik 192, er byte 13 lik 168 og byte 14 er lik 1 ".

Kan vi forkorte dette uttrykket? Absolutt! Først må vi konvertere den til Hex likevel. Hvorfor Hex? Hvis jeg skriver en uttalelse som "ip [12:02] =" tcpdump vil anta at resultatet vil bli en 16-biters tall, ikke to 8-bit tall. Dette er grunnen til at du kan skrive noe sånt som "tcp [02:02] = 12345", og arbeid det har. tcpdump konverterer to bytes i en 16-bits verdi og matcher den mot den verdien du har angitt. Ved å konvertere til Hex unngår vi dette problemet. Slik:

192.168.1.10 = 0xC0A8010A

192.168.1.20 = 0xC0A80120

Nå har vi rett og slett skrive uttrykk:

ip [12:04]> = 0xC0A8010A og ip [12:04] <= 0xC0A80120

Det er alt som skal til.

Mens IPv4 bruker 4 byte-adresser, bruker IPv6 16 byte. Fordi adresser er så lenge, skriver vi dem i Hex å spare litt plass. Så adressene jeg ga deg i utfordringen var:

2001:0 DB8: 0000:0000:0000:0000:0000:0010

2001:0 DB8: 0000:0000:0000:0000:0000:0020

Merker jeg ikke i utgangspunktet skrive dem på den måten. Det finnes noen konvensjoner du kan bruke for å spare plass når du skriver en IPv6-adresse. Først kan vi avkorte ledende nuller. Slik:

2001:0 DB8: 0000:0000:0000:0000:0000:0010

blir:

2001: DB8: 0000:0000:0000:0000:0000:10

Nå, se alle de som nuller i midten? Vi kan hogge dem ut også. Når du ser ":" som betyr å fylle i det rommet med nok nuller til å utvide den adressen ut igjen til 16 bytes. Så legg i dette trikset så godt og vi får:

2001: DB8:: 10

Langt enklere å skrive. Det forbeholdet er at du kan bare fjerne en gruppe av nuller med den doble kolon trick. Tenk på følgende adresse:

2001:: 1234:: 10

Vi har ingen anelse hvor du vil plassere byte-sekvens "1234" i adressen. Det begynner alt fra byte 6 til byte 12.

Når du arbeider med IPv4, tcpdump og Windump bruke protokollen søkeordet "ip", som vist i eksemplene ovenfor. IPv6 kompliment til som er "ip6". Hvor er kilden adresse feltet i IPv6 header? Vel jeg kan ikke gi dere alle der svarene eller det er ikke lenger en "utfordring" :)

Relaterte innlegg:

  1. Weekend Challenge
  2. Weekend Challenge - Answers
  3. ICMPv6 Challenge - Hint
  4. ICMPv6 Challenge
  5. ICMPv6 Challenge - Answers

Annonse
  1. Elizabeth Greene sier:

    IPv6 RFC http://www.faqs.org/rfcs/rfc2460.html har kilden adressen i toppteksten mellom kl 8 og 23 *.

    * (Desimal)

Legg igjen en kommentar