j'ai besoin d'explications sur le calcul du checksum (comment coder l'algorithmme avec le langage c).
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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....
Partager