j'ai besoin d'explications sur le calcul du checksum (comment coder l'algorithmme avec le langage c).
Version imprimable
j'ai besoin d'explications sur le calcul du checksum (comment coder l'algorithmme avec le langage c).
Ci-dessous le code pour le checksum d'une trame ICMP (ping) :
J'ai moi-même repomper cette fonction, donc pour les explications, heu, bah, ...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 USHORT checksum(USHORT *buffer, int size) { unsigned long cksum=0; while(size >1) { cksum+=*buffer++; size -=sizeof(USHORT); } if(size ) { cksum += *(UCHAR*)buffer; } cksum = (cksum >> 16) + (cksum & 0xffff); cksum += (cksum >> 16); return (USHORT)(~cksum); }
bein merci beaucoup pour ton aide, mais moi j'ai dja des fonctions qui calculent le checksum ip, icmp, tcp et udp. je sais comment les utiliser mais je ne les comprends pas surtout avec les decalages binaires....