[ Home | Liste | F.A.Q. | Risorse | Cerca... ]


[ Data: precedente | successivo | indice ] [ Argomento: precedente | successivo | indice ]


Archivio: devel@sikurezza.org
Soggetto: [devel] Checksum ICMP
Mittente: Davide Denicolo
Data: Tue, 28 Dec 2004 17:09:15 +0100 (CET)
Ciao a tutti,

da qualche giorno sto provando a costruire un pacchetto icmp di tipo Echo
request in modo tale che inviato ad una determinata macchina ( provo in
locale ), la stessa risponda con un echo reply; ho riscontrato solo un
problema:
come riempire il campo checksum del pacchetto icmp!
In giro ho trovato alcuni esempi e tra i tanti ho notato questa curiosa
istruzione:  icmp.checksum = htons(~(ICMP_ECHO << 8))
...cosa che io ho trovato errata, come anche ethereal mi comunica;
questo tipo di checksum mi andrebbe bene infatti, solo se inviassi il
pacchetto con
sorgente 127.0.0.1 e destinazione 127.0.0.1!
La rfc relativa dice che il campo checksum dev'essere il complemento
unario della somma di un qualcosa....ma non ho capito cosa :D

Vedendo altri esempi ho notato questa funzione:

unsigned short in_chksum (u_short *addr, int len)
{
   register int nleft = len;
   register int sum = 0;
   u_short answer = 0;

   while (nleft > 1) {
      sum += *addr++;
      nleft -= 2;
   }

   if (nleft == 1) {
      *(u_char *)(&answer) = *(u_char *)addr;
      sum += answer;
   }

   sum = (sum >> 16) + (sum + 0xffff);
   sum += (sum >> 16);
   answer = ~sum;
   return(answer);
}

secondo voi è utile?
Le mie domande per concludere sono:

1) qual'è il procedimento per determinare il checksum?
2) avendo definito 127.0.0.1 sia come destinatario che come sorgente, ho
notato che se inviassi un icmp request avente checksum errato, il pacchetto
di reply mi verrebbe inviato lo stesso, mentre invece se inserissi come
sorgente un indirizzo ip diverso da quello di loopback, il pacchetto di
reply mi verrebbe inviato solo nel caso in cui il checksum del icmp request
fosse corretto! Cosa determina l'ultima condizione?
Spero di essere stato chiaro


Davide









[ Home | Liste | F.A.Q. | Risorse | Cerca... ]

www.sikurezza.org - Italian Security Mailing List
(c) 1999-2005