Weekend Challenge - Antworten

3. Dezember 2009 von Chris Leave a reply »

Nun, es ist jetzt Donnerstag so dass ich dachte seine Zeit, um die Antworten auf letzte Wochenende der Herausforderung Beitrag. ;)

Erstens, warum sollte man auch über IPv6 egal, ob du nicht angefangen haben, setzt es? Ich fühlte mich viel die gleiche Weise, bis ich IPv6 als eine verdeckte Kommunikationskanal innerhalb eines Client-Netzwerk verwendet gefunden. Die Daten wurden dann durchgeführt, um die Internet via Teredo geschoben. Wenn Sie nicht vertraut mit der Technik sind, hat Scott Hogg einige hervorragende Beiträge zum Thema.

Also selbst wenn Sie derzeit nicht über IPv6, lohnt es sich, fang an zu schneiden die Heilung auf die Technologie als auch gerade für sie in Ihrem lokalen Netzwerk.

So zu überprüfen, war die Herausforderung:

Schreiben Sie eine tcpdump oder WinDump Filter, der den gesamten Datenverkehr mit einer IPv6-Quelladresse des Jahres 2001 wird zu erfassen: db8:: 10 bis 2001: db8:: 20.

Es gibt ein paar Einschränkungen mit dem Schreiben dieses Filters. Die ersten paar deckte ich in den letzten Beitrag. Die letzte, die ich kannte, aber nie wirklich gedacht, war ein Problem, bis ich die Arbeit mit IPv6 ziemlich stark begonnen, ist, dass tcpdump / WinDump nur lassen Sie 1, 2 oder 4 Byte Masken. Während wir also lieben würde, dies mit einer ersten Filter Aussage "ip6 [08.14] =" zu lösen, können wir nicht, weil wir zu 4 Byte begrenzt. Es gibt in der Tat eine Möglichkeit, dies zu umgehen, aber ich werde darauf zurückkommen.

Also hier ist der Filter, mit denen ich gearbeitet habe:

(Ip6 [08.04] = 0x20010db8 und ip6 [12.04] = 0 und ip6 [16.04] = 0 und (ip6 [20.04]> = 0 × 0010 und ip6 [20.04] <= 0050 ))

Bit lang, aber es funktioniert. Elizabeth kam mit einer Lösung, die viel eleganter als meine eigene ist:

src net 2001: db8:: / 122 und ip6 [23]> = 0 × 10 & & ip6 [23] <= 0 × 20

So, indem Sie mit der Libpcap Format, sie ist in der Lage, meine ersten drei Aussagen miteinander zu kombinieren. Nicht zu einer Größe Königin sein, aber das macht ihre Lösung ist viel kürzer als die meinige. In diesem Fall ist das eine gute Sache. :)

Das ist alles. Ich werde nach einem anderen IPv6-Typ Herausforderung von morgen.

Related posts:

  1. Weekend Herausforderung
  2. Weekend Challenge - Tipps
  3. ICMPv6 Challenge - Antworten
  4. ICMPv6 Herausforderung
  5. ICMPv6 Challenge - Hinweise

Anzeige

5 Kommentare

  1. jc sagt:

    Chris,
    Läuten in spät, aber nach zusammen mit timtowtdi
    wie wäre es mit ...
    'Src net 2001: db8:: / 122 und ((ip6 [23] & 0xE0 == 0) oder (ip6 [23] == 0 × 20))'

  2. Chris sagt:

    Aktualisierung meiner Antwort wegen des Mangels an Koffein:
    src net 2001: db8:: / 122
    Wir sind auf 122 Bit-Maskierung. Dieser gibt an, dass Bits 33 bis 122 gleich 0 sind.
    ip6 [23] & 0xE0 == 0
    Dieser Filter sagt Bits 121 bis 123 müssen 0 sein.
    ip6 [23] == 0 × 20
    Dieser Filter sagt bit 123 1 sein muss.

    So, um nur auf das letzte Byte zu konzentrieren, sagt Ihre Aussage "Bits 121 und 122 muss ausgeschaltet werden, und (Bit 123 muss ausgeschaltet werden, oder Bit 123 muss eingeschaltet sein)." Dies bringt uns zu schließen, aber was, wenn etwas 124 ist off? Dies könnte den Filterkriterien, aber immer noch legen wir außerhalb des angegebenen Bereichs von Adressen.

    • jc sagt:

      ok so passend die erste Nibble des letzten Byte. (Ich will nur auf 1 Spiel (das ergibt 16 bis 31) wird
      ip6 [23] & F0 == 1
      do the trick?

      • Chris sagt:

        Der Filter:
        ip [23] & F0 == 1
        wird an den vier höherwertigen Bits schauen und Spiel auf dem niedrigsten * * Um Bit gesetzt. In anderen Worten würde der angegebene Wert (1) als Dezimalzahl wahrgenommen werden und außerhalb der Maske liegen. Wenn Sie den Filter laufen Sie werden sehen, dass tcpdump Ihnen einen Syntaxfehler. : (

        Lassen Sie uns dieses letzte Byte in binärer schauen, ob das macht das Problem nicht leichter.
        Wir versuchen, alle binäre Wert von match:
        00010000 bis 00100000
        Die "src net" Teil des Filters sorgt für die Gewährleistung der beiden höherwertigen Bits (64 & 128) werden auf 0 gesetzt, so haben wir nicht darum kümmern.
        Der Rest unserer Filter braucht, um zu sehen:
        1) Ist Bit 32 aktiviert, wobei alle Bits niedrigerer Ordnung ausgeschaltet (genau 00,1 Millionen).

        oder ...

        2) Ist Bit 32 ausgeschaltet, Bit 16 aktiviert ist, ignoriert alle Bits niedrigerer Ordnung (Wertebereich von 00010000 bis 00011111).

        So die einfachste Möglichkeit, an diesem Filter ist es, die größer und kleiner als Primitive umfassen. Was wir sagen wollen ist:
        00010000 <= VALUE <= 00100000

        Nun wandeln Sie diese zurück zu Hex und Sie erhalten:
        0x10 <= VALUE <= 0x20

        In tcpdump sprechen, schreiben Sie diesen Ausdruck als:
        ip6 [23]> = 0 × 10 & & ip6 [23] <= 0 × 20

        oder:
        ip6 [23]> = 0 × 10 und ip6 [23] <= 0 × 20

        Machen Sie ein bisschen mehr Sinn?

        • jc sagt:

          Macht Sinn Ich will einfach nur schwierig ;-)
          Ich versuche zu sehen, ob es einen Weg gibt, dies zu erreichen mit Bitmaskierung. Nur realisierte meiner vorangegangenen Antwort versucht, eine knabbern Spiel nicht die Byte so hier ein letztes Mal geht
          src net 2001: db8:: / 122 und ((ip6 [23] & 0xF0 = 0 × 10) oder (ip6 [23] = 0 × 20)) '

          So
          ip6 [23] & 0xF0 = 0 × 10 (sollte dezimal 16 match - 31) und dann ip6 [23] = 0 × 20 sollte 32 entsprechen. Oder ist es Zeit, das Handtuch zu werfen?

Hinterlasse eine Antwort