Défi Week-End - Réponses

3 décembre 2009 par Chris Laisser une réponse »

Eh bien aujourd'hui jeudi son alors j'ai pensé de son temps de poster les réponses à contester week-end dernier. ;)

D'abord, pourquoi devriez-vous même les soins au sujet d'IPv6 si vous n'avez pas commencé à le déployer? J'ai senti la même manière jusqu'à ce que je trouve IPv6 étant utilisé comme un canal de communication secrète au sein du réseau d'un client. Les données ont ensuite été poussés hors de l'Internet via Teredo. Si vous n'êtes pas familier avec la technique, Scott Hogg a certains postes excellents sur le sujet.

Donc même si vous n'utilisez pas actuellement IPv6, il paye pour commencer à couper le remède à la technologie ainsi que de regarder pour cela sur votre réseau local.

Donc, pour examen, le défi était:

Ecrire un filtre tcpdump ou WinDump qui va capturer tout le trafic avec une adresse IPv6 source de l'année 2001: db8:: 10 à 2001: db8:: 20.

Il ya un couple de mises en garde avec l'écriture de ce filtre. L'J'ai quelques premiers couverts dans le dernier post. Le dernier, que je connaissais, mais jamais vraiment pensé a un problème jusqu'à ce que je commence à travailler avec IPv6 assez fortement, c'est que tcpdump / WinDump ne vous laisser utiliser 1, 2 ou 4 masques d'octets. Ainsi, alors que nous serions ravis de résoudre ce avec une déclaration initiale filtre "ip6 [8:14] =", nous ne pouvons pas parce que nous sommes limités à 4 octets. Il est en fait un moyen de contourner ce problème, mais je vais y revenir.

Alors, voici le filtre, j'ai travaillé avec:

(Ip6 [08:04] = 0x20010db8 et ip6 [12:04] = 0 et ip6 [16:04] = 0 et (ip6 [20:04]> = 0 × 0010 et ip6 [20:04] <= 0050 ))

Peu long, mais ça fonctionne. Elisabeth a trouvé une solution qui est beaucoup plus élégante que le mien:

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

Ainsi, en commençant par le format libpcap, elle est capable de combiner mes trois premiers relevés en un seul. Pour ne pas être une reine de taille, mais qui rend sa solution est beaucoup plus courte que la mienne. Dans ce cas c'est une bonne chose. :)

C'est à ce sujet. Je vais poster un autre défi de type IPv6 demain.

Related posts:

  1. Défi Week-end
  2. Défi Week-End - Suggestion
  3. ICMPv6 défi -
  4. ICMPv6 Défi
  5. ICMPv6 Challenge - Astuces

Publicité

5 commentaires

  1. JC dit:

    Chris,
    carillon à la fin, mais suivant avec timtowtdi
    Que diriez-vous ...
    'Src net 2001: db8:: / 122 et ((ip6 [23] & 0xE0 == 0) ou (ip6 [23] == 0 × 20)) »

  2. Chris dit:

    Mise à jour de ma réponse à cause du manque de caféine:
    src net 2001: db8:: / 122
    Nous sommes de masquage sur 122 bits. Ceci spécifie que les bits de 33 à 122 sont égales à 0.
    ip6 [23] == 0 & 0xE0
    Ce filtre dit bits de 121 à 123 doit être 0.
    ip6 [23] == 0 × 20
    Ce filtre dit 123 bits doit être 1.

    Donc, pour se concentrer uniquement sur le dernier octet, votre déclaration dit «bits 121 et 122 doit être éteint et (123 bits doit être désactivé ou 123 bits doit être activé)". Cela nous se rapproche, mais ce que si le bit 124 est éteint? Cela pourrait correspondre au filtre mais toujours nous mettre en dehors de la plage d'adresses spécifiée.

    • JC dit:

      Ok, donc pour correspondre le premier quartet du dernier octet. (Je veux seulement pour qu'il corresponde à 1 (qui produisent 16 - 31) sera
      ip6 [23] == 1 & F0
      faire l'affaire?

      • Chris dit:

        Le filtre:
        ip [23] == 1 & F0
        se penchera sur les quatre bits d'ordre élevé et match sur l'ordre le plus bas * bits * étant fixé. En d'autres termes, la valeur spécifiée (1) serait perçu comme décimal et est en dehors de la gamme de masque. Si vous exécutez le filtre, vous verrez que tcpdump vous donne une erreur de syntaxe. : (

        Regardons ce dernier octet en binaire pour voir si cela rend le problème plus facile.
        Nous essayons de faire correspondre une valeur binaire à partir de:
        00010000 à 00100000
        Le "src net« part du filtre prend soin d'assurer les deux bits d'ordre élevé (64 & 128) sont mis à 0, donc nous n'avons pas à vous en soucier.
        Le reste de nos filtres a besoin de vérifier pour voir:
        1) Est 32 bits sous tension, avec tous les bits d'ordre inférieur éteint (exactement 00,1 millions).

        ou ...

        2) Est 32 bits éteint, allumé 16 bits, en ignorant les bits d'ordre inférieur (plage de valeur est de 00010000 à 00011111).

        Ainsi, le moyen le plus facile à filtrer sur ce point est d'inclure le supérieur et inférieur primitives. Ce que nous voulons dire, c'est:
        00010000 <= VALEUR <= 00100000

        Maintenant, convertir ce retour à Hex et vous obtenez:
        0x10 <= VALEUR <= 0x20

        Dans tcpdump parler, vous écrivez cette expression comme:
        ip6 [23]> = 0 × 10 & & ip6 [23] <= 0 × 20

        ou:
        ip6 [23]> = 0 x 10 et ip6 [23] <= 0 × 20

        Donner un sens un peu plus?

        • JC dit:

          Fait sens, je veux juste être difficile ;-)
          J'essaie de voir s'il ya un moyen d'accomplir ce masquage de bits à l'aide. Juste réalisé ma réponse précédente essayé de faire correspondre un quartet pas l'octet donc voilà un dernier essai
          src net 2001: db8:: / 122 et ((ip6 [23] & 0xF0 = 0 × 10) ou (ip6 [23] = 0 × 20)) »

          Alors
          ip6 [23] & 0xF0 = 0 × 10 (doit correspondre décimale 16 - 31) et ensuite ip6 [23] = 0 × 20 doit correspondre à 32. Ou est-ce le temps de jeter l'éponge?

Laisser un commentaire