Reto de fin de semana - Pista

01 de diciembre 2009 por Chris Dejar una respuesta »

Wow, el sonido de los grillos es ensordecedor. Seguro que alguien tiene la habilidad de llevarnos a través de este dilema? ;)

Bien, algunos consejos para ayudarte a superar el reto. Vamos a empezar por la solución de este como una dirección IPv4 y luego vamos a trabajar en nuestro camino hacia IPv6. Supongamos que el rango de direcciones que queremos capturar es 192.168.1.10 - 192.168.1.20. El gran problema es la IP que no están en un límite incluso de bytes. Podríamos hacer algo como:

src net 192.168.1.0/27

pero que nos dan las direcciones .0 a 0,31, más IPs de lo que realmente quería ver. Para resolver este problema, tendrá que utilizar algunos operadores y primitivas. Una posibilidad es la siguiente:

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

A partir de los soportes más interna, la declaración anterior se lee "15 bytes debe ser mayor que o igual a 10, pero también debe ser menor o igual a 20. Si esta afirmación es cierta, asegúrese de byte 12 es igual a 192, el byte 13 es igual a 168 bytes y 14 es igual a 1. "

¿Se puede acortar esta expresión? ¡Por supuesto! En primer lugar tenemos que convertir a hexadecimal sin embargo. ¿Por qué hexagonal? Si escribo una frase como "ip [12:02] =" tcpdump se asume que el resultado será un número de 16 bits, no dos números de 8 bits. Esta es la razón por la que se puede escribir algo como "tcp [2:2] = 12345" y hacer que funcione. tcpdump convierte los dos bytes en un valor de 16-bit y lo compara con el valor especificado. Al convertir a hexadecimal se evita este problema. Por lo tanto:

192.168.1.10 = 0xC0A8010A

192.168.1.20 = 0xC0A80120

Ahora simplemente escribimos nuestra expresión:

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

Eso es todo lo que hay que hacer.

Mientras que IPv4 utiliza direcciones de 4 bytes, IPv6 utiliza 16 bytes. Debido a que las direcciones son tan largas, los escribimos en hexadecimal para ahorrar algo de espacio. Por lo tanto las direcciones que te di en el desafío fueron los siguientes:

2001:0 db8: 0000:0000:0000:0000:0000:0010

2001:0 db8: 0000:0000:0000:0000:0000:0020

Fíjate que no tenía, inicialmente, a escribir de esa manera. Hay una serie de convenciones que puede utilizar para ahorrar espacio al escribir una dirección IPv6. En primer lugar, se puede truncar ceros a la izquierda. Por lo tanto:

2001:0 db8: 0000:0000:0000:0000:0000:0010

se convierte en:

2001: db8: 0000:0000:0000:0000:0000:10

Ahora, ver a todos esos ceros en el medio? Podemos cortarlas demasiado. Cuando vea "::" eso significa que para llenar ese espacio con ceros suficientes para ampliar la dirección de vuelta a 16 bytes. Por lo que añadir en este truco, así y conseguir que:

2001: db8:: 10

Mucho más fácil escribir. La única salvedad es que sólo se puede quitar un grupo de ceros con el truco de puntos dobles. Considere la siguiente dirección:

2001:: 1234:: 10

No tenemos idea de dónde colocar la secuencia de bytes "1234" en la dirección. Que empezar en cualquier lugar del byte 6 a 12 bytes.

Cuando se trabaja con IPv4, tcpdump y Windump utilizar la palabra clave del protocolo "IP", como se muestra en los ejemplos anteriores. El complemento a IPv6 que es "IP6". ¿Dónde está el campo de dirección de origen en la cabecera IPv6? Bueno, no puedo darle todo lo que hay respuestas, o ya no es un "desafío" :)

Puestos relacionados con:

  1. Fin de semana Desafío
  2. Reto de fin de semana - Respuestas
  3. ICMPv6 Challenge - Sugerencias
  4. ICMPv6 Desafío
  5. ICMPv6 Challenge - Respuestas

Anuncio

1 comentario

  1. Elizabeth Greene ha dicho:

    El IPv6 RFC http://www.faqs.org/rfcs/rfc2460.html tiene la dirección de origen en la cabecera de bytes entre 8 y 23 *.

    * (Decimal)

Deja un comentario