Bonjour à tous,

Je recherche à modifier un programme existant qui transfère des donnés via le réseau
Mon but est de modifier un champ des datas qui transitent par ce logiciel en ajoutant l'adresse IP source du client

client -> logiciel -> serveur

Je récupère bien l'adresse source du client, ça c'est parfait

Code : Sélectionner tout - Visualiser dans une fenêtre à part
printf("IP address: is %s %x %x \n", adrIPp, s->sin_addr.s_addr, inet_addr("adrIPp"));
Les datas quand à elle sont stockées dans un unsigned char

Code : Sélectionner tout - Visualiser dans une fenêtre à part
unsigned char fpdu[ctx->pdulen];
Le datas qui me concernent sont précisément à l'emplacement mémoire 15

J'ai maintenant récupéré pas mal d'infos et je pense avoir les pièces de mon puzzle, reste maintenant à assembler tout ça ....

Ce que j'ai réussi à faire:

Grâce à memcpy j'arrive à injecter à la volé (sans perturber le fonctionnement, ni segfault) des donnés dans le bon champs

Pour le moment je fais un tableau de char dans lequel je copie l'IP en hexa que j'injecte ensuite via memcopy.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
    int sizearray = sizeof s->sin_addr.s_addr;
    sprintf(buffer, "%x", s->sin_addr.s_addr);
    memcpy(fpdu+15, src, sizearray);
Bon c'est une première approche qui me permet de bien cibler le problème, cependant j'aimerais envoyer une IP et pas juste une suite de caractère (basé sur l'IP), du côté serveur j'ai le champ ip_client qui est bien remplit par une suite de chiffres fixent mais qui est bien différente pour chaque client.

Je vois une solution, convertir l'IP en unsigned char et injecter les données avec un strcpy, mais je n'arrive pas à obtenir quelque chose qui tourne je pense sincèrement ne pas bien saisir ce que je fais (honte à moi je le reconnais, mais je ne suis pas dev )

Si vous avez une idée je suis plus que preneur

Merci d'avance