begin process at 2012 05 29 10:08:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

ip et udp checksum dans packet UDP


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

ip et udp checksum dans packet UDP

lundi 1 novembre 2004 à 14:59:14 | ip et udp checksum dans packet UDP

themaste

Bonjour à tous!
Je suis en train d'esssayer de faire une application permettant de modifier un packet UDP destiné à un broadcast sur une ip en particulier.
Je suis pas loin du but, mais j'ai un problème avec les checksum, ip et udp.
Je capture avec ethereal les trames, mais a chaque fois que la mienne est envoyé, il me marque que les checksum sont incorrect.

J'ai essayer plusieurs fonctions pour calculer le CRC de l'ip header, mais a chaque fois, ca marche pas. Je ne comprds pas non plus exactement comment c'est calculer.

Est-ce que qqu'un pourrait m'aider? je ne sais plus quoi faire!

Merci
lundi 1 novembre 2004 à 16:19:46 | Re : ip et udp checksum dans packet UDP

aardman

Membre Club
Salut,
voici la fonction utilisée pour calculer la checksum d'un header ip, le champ checksum doit etre a 0 avant le calcul (et je précise que cette fonction n'est pas de moi):

// Description:
// This function calculates the 16-bit one's complement sum
// for the supplied buffer.
//
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);
}

Pour la checksum udp, je crois (à verifier) que tu peux mettre 0 dans le champ checksum sans que ca pose probleme.
lundi 1 novembre 2004 à 20:44:10 | Re : ip et udp checksum dans packet UDP

themaste

je craque!!!
merci pour ta fonction, mais malheureusement, comme toutes les otres, ca ne marche pas. Voici mes lignes de codes pour cette partie, car du coup, je pense vraiment que je passe à coté d'un truc, c pas possible. Et ainsi, vous aurez une meilleur idée..j'espere!! (PS: j'utilise winpcap)
--------------------------------------------------------

/* IPv4 header */
typedef struct ip_header{
u_char ver_ihl; // Version (4 bits) + Internet header length (4 bits)
u_char tos; // Type of service
u_short tlen; // Total length
u_short identification; // Identification
u_short flags_fo; // Flags (3 bits) + Fragment offset (13 bits)
u_char ttl; // Time to live
u_char proto; // Protocol
u_short crc; // Header checksum
ip_address saddr; // Source address
ip_address daddr; // Destination address
u_int op_pad; // Option + Padding
}ip_header;

//Packet message
unsigned char * sPacketMessage;
//////////////////////////

/*---------------------------------------------------------------------------------------
getPacket: Récupère les packets
---------------------------------------------------------------------------------------*/
int getPacket(unsigned char ** packet)
{
int ret;
struct pcap_pkthdr *header;

ret = pcap_next_ex(adhandle, &header, packet);

if(ret == -1)
{ printf("Packet capture error!\n"); return -1; }

if((ret == 1) && (header->caplen == header->len))
return header->caplen;

return 0;
}

fonction main()
{
int packet;
...
//Récupération du packet
packet_size = getPacket((unsigned char **)&sPacketMessage);
modifPacket();
}

fonction modifPacket()
{
//Struct ip_header
ip_header *ih;

/* retrieve the position of the ip header */
ih = (ip_header *) (sPacketMessage +
14); //length of ethernet header

...

//Défini le checksum (crc) a null avt calcul
ih->crc = 0x0000;

//Calcul du checksum
ih->crc = checksum((unsigned short *)&ih, sizeof(struct ip_header)); //Fonction cité dans post précédent

}



Voila, je pense avoir mis les éléments qu'il faut. Franchement, je ne vois pas ce qui cloche, le pourquoi c toujours incorrect. Ca doit être con, surement de ma faute, mais je vois pas.

Merci pour votre aide!
PS: Le but est de faire un programme sur le mme style que lancraft. Si qqu'un connais les sources de lancraft, ou je peux les recup, ca m'aiderait bcp aussi je pense!
mercredi 3 novembre 2004 à 20:20:13 | Re : ip et udp checksum dans packet UDP

themaste

personne n'a d'idée?


Cette discussion est classée dans : ip, checksum, calculer, udp, packet


Répondre à ce message

Sujets en rapport avec ce message

RAW SOCKET - IP - Sendto() - Erreur 'WSAEADDRNOTAVAIL' [ par dark1933 ] Salut à tous,J'essaye désespérément d'envoyer un Ping en forgeant le datagramme IP adéquat.J'obtiens l'erreur "WSAEADDRNOTAVAIL" au moment de l'appel UDP [ par ToToL ] Bonjoursavant j'utilisait le tcp mais j'ai voulu essayer l'UDP.pour envoyer un packet sa marche nikel mais pour les recevoire je doit utiliser une fon ip packet [ par bendvd ] Salut tous le monde.je suis un train de développer un pont sur C++ 6.0cad la reception et emetion des packet sans socketalors c l'utilisation de proto intercepter message UDP sur le réseau [ par themaste ] Bonjour à tous!Voila, je suis en train de travailler une petite application en C++, pour pouvoir rediriger tous les messages UDP à destination d'un se recherche exemple [ par doberman7578 ] Dans le cadre d'un projet en bts informatique(en C sous linux), je dois effectué un sereur client transfert d'image ( ce que j'aieffectué) mais je doi Type de CheckSum CRC 32, CRC8 , CRC 64 dans un fichier binaire [ par seas ] Bonsoir a tous , Je vais faire trés simple pour permettre aux membres de cérner le probléme sur mon projet . Je dois calculer le Checksum d'un fichier Envoi , reception et "analyse" d'un packet TCP [ par firemax ] Bonjour Avec un pote nous avons commencer un scanner de port pour en apprendre un peu plus sur la prog reseau en C . Mais une fois que nous avons eu Traduction C [ par etudtelec ] Salut tous le monde, Je ne développe pas avec le langage C, je fais comme étude Réseaux Mais je viens devant une situation de réseaux et veux comprend Sniffing - raw socket [ par krum ] J'ai essayé de coder un programme capable de me donner la description de l'en tete IP et TCP des packets que je reçois d'une certaine IP,mais lorsque Calcul de parité et de checksum [ par julienbj ] Pour un programme embarqué, je dois calculer la parité des 7 bits de poids faibles d'un octet. Je viens ici demander des conseils. Je ne vois qu'une s


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales