Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Frammentazione icmp

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] Frammentazione icmp

Messaggioda Foto Utentefilippo125 » 14 giu 2016, 18:35

Buonasera,
nello studio del protocollo icmp, mi sto trovando di fronte ad un problema che non riesco a risolvere (o a capire).
Situazione 1: mando in rete un pacchetto ip con all'interno un pacchetto icmp (classico echo request), senza nessun tipo di frammentazione, tutto funziona e il destinatario risponde con l'echo reply.
Situazione 2: lo stesso pacchetto icmp viene frammentato in due pacchetti ip, il destinatario all'arrivo del primo frammento risponde che il pacchetto ha dei problemi (codice icmp 12) con il puntatore impostato a 0.


Situazione 1:
icmp request
Codice: Seleziona tutto
0000   28 d2 44 56 fb b5 b8 27 eb 66 99 46 08 00 45 00
0010   01 ac ab cd 00 00 05 01 84 34 c0 a8 01 fc c0 a8
0020   01 03 08 00 19 37 12 34 00 01 00 01 02 03 04 05
0030   06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
0040   16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25
0050   26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35
0060   36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45
0070   46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55
0080   56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65
0090   66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75
00a0   76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85
00b0   86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95
00c0   96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5
00d0   a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5
00e0   b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5
00f0   c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5
0100   d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5
0110   e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5
0120   f6 f7 f8 f9 fa fb fc fd fe ff 00 01 02 03 04 05
0130   06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
0140   16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25
0150   26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35
0160   36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45
0170   46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55
0180   56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65
0190   66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75
01a0   76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85
01b0   86 87 88 89 8a 8b 8c 8d 8e 8f


icmp reply
Codice: Seleziona tutto
0000   b8 27 eb 66 99 46 28 d2 44 56 fb b5 08 00 45 00
0010   01 ac 75 52 00 00 80 01 3f af c0 a8 01 03 c0 a8
0020   01 fc 00 00 21 37 12 34 00 01 00 01 02 03 04 05
0030   06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
0040   16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25
0050   26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35
0060   36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45
0070   46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55
0080   56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65
0090   66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75
00a0   76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85
00b0   86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95
00c0   96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5
00d0   a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5
00e0   b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5
00f0   c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5
0100   d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5
0110   e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5
0120   f6 f7 f8 f9 fa fb fc fd fe ff 00 01 02 03 04 05
0130   06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
0140   16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25
0150   26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35
0160   36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45
0170   46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55
0180   56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65
0190   66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75
01a0   76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85
01b0   86 87 88 89 8a 8b 8c 8d 8e 8f


Situazione 2:
icmp request frammento 1
Codice: Seleziona tutto
0000   28 d2 44 56 fb b5 b8 27 eb 66 99 46 08 00 45 00
0010   00 e0 ab cd 20 00 40 01 2a 00 c0 a8 01 fc c0 a8
0020   01 03 08 00 87 7a a3 f1 00 00 00 01 02 03 04 05
0030   06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
0040   16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25
0050   26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35
0060   36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45
0070   46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55
0080   56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65
0090   66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75
00a0   76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85
00b0   86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95
00c0   96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5
00d0   a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5
00e0   b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3


risposta del destinatario
Codice: Seleziona tutto
0000   b8 27 eb 66 99 46 28 d2 44 56 fb b5 08 00 45 00
0010   00 fc 00 63 00 00 80 01 b5 4e c0 a8 01 03 c0 a8
0020   01 fc 0c 00 78 e8 00 00 00 02 45 00 00 e0 ab cd
0030   20 00 40 01 2a 00 c0 a8 01 fc c0 a8 01 03 08 00
0040   87 7a a3 f1 00 00 00 01 02 03 04 05 06 07 08 09
0050   0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19
0060   1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29
0070   2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39
0080   3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49
0090   4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59
00a0   5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69
00b0   6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79
00c0   7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89
00d0   8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99
00e0   9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9
00f0   aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9
0100   ba bb bc bd be bf c0 c1 c2 c3


icmp request frammento 2
Codice: Seleziona tutto
0000   28 d2 44 56 fb b5 b8 27 eb 66 99 46 08 00 45 00
0010   00 e0 ab cd 00 60 40 01 1f a0 c0 a8 01 fc c0 a8
0020   01 03 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1
0030   d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1
0040   e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1
0050   f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff 00 01
0060   02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11
0070   12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21
0080   22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31
0090   32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41
00a0   42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51
00b0   52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61
00c0   62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71
00d0   72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81
00e0   82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f


Che "esperimenti" posso fare per capire il problema? Grazie a tutti
Avatar utente
Foto Utentefilippo125
85 1 2 5
Frequentatore
Frequentatore
 
Messaggi: 139
Iscritto il: 6 ago 2008, 15:59

0
voti

[2] Re: Frammentazione icmp

Messaggioda Foto Utentealev » 14 giu 2016, 18:48

lo stesso pacchetto icmp viene frammentato in due pacchetti ip

In quale modo procedi per frammentare il pacchetto?
Avatar utente
Foto Utentealev
5.993 2 9 12
free expert
 
Messaggi: 6281
Iscritto il: 19 lug 2010, 14:38
Località: Altrove

0
voti

[3] Re: Frammentazione icmp

Messaggioda Foto Utentefilippo125 » 14 giu 2016, 19:15

Prendo il pacchetto icmp lo divido in due parti e ci attacco un header ip ad ognuno correggendo i campi fragment offset, il bit more fragment, la total length e ricalcolando il checksum
Avatar utente
Foto Utentefilippo125
85 1 2 5
Frequentatore
Frequentatore
 
Messaggi: 139
Iscritto il: 6 ago 2008, 15:59

0
voti

[4] Re: Frammentazione icmp

Messaggioda Foto Utentealev » 14 giu 2016, 19:24

Non ho mai manipolato pacchetti TCP fino a quel livello, però penso che il fenomeno dipenda dall'interfaccia che riceve la echo request
Forse, in quell'interfaccia (oppure nella sua configurazione TCP) c'è qualcosa da modificare ma per una cosa così a basso livello non saprei nemmeno dire cosa
Avatar utente
Foto Utentealev
5.993 2 9 12
free expert
 
Messaggi: 6281
Iscritto il: 19 lug 2010, 14:38
Località: Altrove

0
voti

[5] Re: Frammentazione icmp

Messaggioda Foto Utenteluxinterior » 14 giu 2016, 19:33

Senza sapere ne leggere ne scrivere hai letto qualche passo dalla bibbia
http://www.tcpipguide.com/
nell'header del pacchetto echo ICMP ci sono due campi
identifier e Sequence number
non mi sono messo a guardare gli offset nei tuoi dati se usi wireshark te lo mostra in automatico
potrebbe essere che (ri)usi lo stesso sequence number ? ma lo dico senza convinizione e senza aver studiato ...
Avatar utente
Foto Utenteluxinterior
4.311 3 4 9
Master EY
Master EY
 
Messaggi: 2690
Iscritto il: 6 gen 2016, 17:48

0
voti

[6] Re: Frammentazione icmp

Messaggioda Foto Utentefilippo125 » 15 giu 2016, 8:14

Intanto grazie a tutti e due delle risposte.

Il problema del sequence number e identifier non ci dovrebbe essere, perché la richiesta è una sola; sembra che quando il primo frammento arriva viene subito consumato senza attendere il secondo frammento, se è così il destinatario ha ragione a rispondere picche, perché il checksum dell'echo request sarebbe sbagliato.

Mi sorgono, quindi, due dubbi:
-i pacchetti icmp possono essere frammentati? (Nella RFC792 non trovo niente che lo vieti)
-Nell'esempio sulla procedura di frammentazione di un pacchetto https://tools.ietf.org/html/rfc791#page-26
Correct the header:
IHL <- (((OIHL*4)-(length of options not copied))+3)/4;


Non riesco a capire quel +3 cosa centri, e forse è li che sbaglio
Avatar utente
Foto Utentefilippo125
85 1 2 5
Frequentatore
Frequentatore
 
Messaggi: 139
Iscritto il: 6 ago 2008, 15:59

0
voti

[7] Re: Frammentazione icmp

Messaggioda Foto Utentealev » 15 giu 2016, 8:53

Non riesco a capire quel +3 cosa centri, e forse è li che sbaglio

Ma tu hai provato a metterlo (il +3) ed in quel modo come funziona?
Avatar utente
Foto Utentealev
5.993 2 9 12
free expert
 
Messaggi: 6281
Iscritto il: 19 lug 2010, 14:38
Località: Altrove

0
voti

[8] Re: Frammentazione icmp

Messaggioda Foto Utentefilippo125 » 15 giu 2016, 9:18

No, perché (20-0+3)/4, non è un intero...
Avatar utente
Foto Utentefilippo125
85 1 2 5
Frequentatore
Frequentatore
 
Messaggi: 139
Iscritto il: 6 ago 2008, 15:59

0
voti

[9] Re: Frammentazione icmp

Messaggioda Foto Utentealev » 15 giu 2016, 9:28

Secondo me, per risolvere, devi studiare questa definizione
length of options not copied


E' comunque fuori discussione (seppure banale dirlo) che, modificando il protocollo del "mittente" devi comunque rimanere nei limiti del protocollo, altrimenti il "ricevente" non capisce la richiesta
Avatar utente
Foto Utentealev
5.993 2 9 12
free expert
 
Messaggi: 6281
Iscritto il: 19 lug 2010, 14:38
Località: Altrove

0
voti

[10] Re: Frammentazione icmp

Messaggioda Foto Utentefilippo125 » 15 giu 2016, 9:35

Non ci sono opzioni, la cosa che più mi turba è il fatto che risponda ancora prima che arrivi il secondo frammento e quindi l'errore dovrebbe essere già nel primo e quella formula riguarda il secondo.. Più tardi provo a vedere wireshark cosa mi mostra.
Avatar utente
Foto Utentefilippo125
85 1 2 5
Frequentatore
Frequentatore
 
Messaggi: 139
Iscritto il: 6 ago 2008, 15:59

Prossimo

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti