Bene la sua ora Giovedi così ho pensato che il suo tempo per postare le risposte alla sfida dello scorso fine settimana. ![]()
In primo luogo, perché si dovrebbe anche preoccuparsi IPv6 se non hanno cominciato a utilizzare questo? Mi sentivo più o meno allo stesso modo finché non ho trovato IPv6 utilizzati come canale di comunicazione nascosto all'interno della rete di un cliente. I dati sono stati poi essere spinto fuori a Internet tramite Teredo. Se non si ha familiarità con la tecnica, Scott Hogg ha alcuni posti eccellenti sul tema.
Quindi, anche se non si sta utilizzando IPv6, vale la pena di iniziare a tagliare la cura sulla tecnologia così come guardare per esso sulla vostra rete locale.
Quindi, per esame, la sfida era:
Scrivi un filtro tcpdump o windump che cattura tutto il traffico con un indirizzo di origine IPv6 del 2001: DB8 :: 10 fino al 2001: DB8 :: 20.
Ci sono un paio di avvertimenti per scrivere questo filtro. I pochi prima ho ricoperto nell'ultimo post. La finale, che io sapevo ma mai veramente pensato che era un problema finché non ho iniziato a lavorare con IPv6 piuttosto pesantemente, è che tcpdump / windump solo consente di utilizzare 1, 2 o 4 byte maschere. Così, mentre ci piacerebbe risolvere questo problema con una dichiarazione iniziale filtro di "ip6 [08:14] =", non possiamo perché siamo limitati a 4 byte. Vi è infatti un modo per aggirare il problema, ma tornerò ad esso.
Quindi, ecco il filtro che ho lavorato con:
(IP6 [08:04] = 0x20010db8 e ip6 [00:04] = 0 e ip6 [16:04] = 0 e (IP6 [20:04]> = 0 × 0010 e ip6 [20:04] <= 0050 ))
Po 'lungo, ma funziona. Elisabetta si avvicinò con una soluzione che è molto più elegante della mia:
src net 2001: DB8 :: / 122 e ip6 [23]> = 0 && ip6 × 10 [23] <= 0 × 20
Quindi, partendo con il formato libpcap, lei è in grado di combinare le mie prime tre affermazioni in uno solo. Non essere uno queen size, ma che rende la sua soluzione è molto più breve del mio. In questo caso, che è una buona cosa. ![]()
Questo è tutto. Vi posto un altro tipo di sfida IPv6 domani.
Related posts:


Chris,
rintocchi alla fine, ma seguendo con timtowtdi
Che ne dici di ...
'Src net 2001: DB8 :: / 122 e ((IP6 [23] e 0xE0 == 0) o (ip6 [23] == 0 × 20))'
Aggiornare la mia risposta a causa della mancanza di caffeina:
src net 2001: DB8 :: / 122
Stiamo mascherando il 122 bit. Questo specifica che 33 bit - 122 sono uguali a 0.
ip6 [23] e 0xE0 == 0
Questo filtro bits dice 121 - 123 deve essere 0.
ip6 [23] == 0 × 20
Questo filtro dice 123 bit deve essere 1.
Quindi, per concentrarsi solo sulla ultimo byte, la sua dichiarazione dice: "121 bit e 122 deve essere spento e (123 bit deve essere spento o 123 bit deve essere acceso)". Questo ci si avvicina, ma cosa succede se 124 bit è spento? Questo potrebbe corrispondere al filtro, ma ancora ci ha messo al di fuori del range specificato di indirizzi.
ok in modo da raggiungere il nibble prima dell'ultimo byte. (Voglio solo in modo che corrisponda 1 (che produce 16-31) si
ip6 [23] == 1 & F0
fare il trucco?
Il filtro:
ip [23] == 1 & F0
esaminerà i quattro bit di ordine superiore e abbinare con la più bassa * bit di ordine * in corso di. In altre parole, il valore specificato (1) venga percepito come decimale ed è al di fuori della gamma maschera. Se si esegue il filtro vedrete che tcpdump ti dà un errore di sintassi.
Diamo un'occhiata a questo ultimo byte in formato binario per vedere se questo rende il problema più facile.
Stiamo cercando di adattarsi a qualsiasi valore binario a partire da:
00010000-00100000
Il "src netto" porzione del filtro si occupa di garantire i due bit di ordine superiore (64 e 128) sono impostati a 0, quindi non c'è bisogno di preoccuparsi di loro.
Il resto dei nostri filtri ha bisogno di verificare:
1) è a 32 bit acceso, con tutti i bit di ordine inferiore spento (esattamente 00.100.000).
o ...
2) a 32 bit è spento, a 16 bit acceso, ignorando i bit di ordine inferiore (intervallo di valori è 00010000-00011111).
Quindi, il modo più semplice per filtrare questo è includere la maggiore e minore di primitive. Quello che vogliamo dire è:
00010000 <= VALUE <= 00100000
Ora, convertire questo torna Hex e si ottiene:
0x10 <= VALUE <= 0x20
In tcpdump parlare, di scrivere questa espressione come:
ip6 [23]> = 0 && ip6 × 10 [23] <= 0 × 20
oppure:
IP6 [23]> = 0 × 10 e IP6 [23] <= 0 × 20
Dare un senso un po 'di più?
Ha senso Voglio solo essere difficile
Sto cercando di vedere se c'è un modo di realizzare questo mascheramento bit usando. Appena capito che la mia precedente risposta ha cercato di corrispondere a un nibble del byte così non va qui ultimo tentativo
src net 2001: DB8 :: / 122 e ((IP6 [23] & 0xF0 = 0 × 10) o (ip6 [23] = 0 × 20)) '
Così
ip6 [23] & 0xF0 = 0 × 10 (dovrebbe corrispondere decimale 16 - 31) e poi ip6 [23] = 0 × 20 dovrebbe corrispondere 32. O è il momento di gettare la spugna?