Creation d'un paquet pour prog windows
Bonjour,
je souhaite developper un programme sous win qui va se connecter a un serveur. Pour cela, les paquets a envoyés doivent etre construits d'une maniere bien précise :
[taille msg sur 4 octets] [code msg sur 4 octets] [taille 'user' sur 4] ['user' texte variable] [taille 'pass' sur 4] ['pass' texte variable]
De plus, les valeur numeriques (tout sauf user et pass) doivent etre ordonnées selon la "norme" little endian.
Donc, une fois envoyé, la partie utile du paquet doit ressembler à ça, avec user="JohnGalt" et pass="secret" :
1e00 0000 : taille msg (25)
0100 0000 : code msg (1)
0800 0000 : taille user (8 )
4a6f 686e 4761 6c74 : user
0600 0000 : taille pass (6)
7365 6372 6574 : pass
Voici ce que j'ai fait (pour l'instant jai laissé le little endian de coté...):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
char *buffer;
long *taille,*code, *szuser, *szpass, *version;
char *user, *pass;
buffer = (char *)malloc(1024);
taille= (long *)buffer;
*taille = 25;
code = (long *)(buffer + 4);
*code = 1;
szuser = (long *)(buffer + 8);
*szuser = 3;
user = buffer + 12;
memcpy(user,"oje",3);
......
//verif, ctmp est un char*
sprintf(ctmp,"%s", sizeof(buffer));
MessageBox(Dlg,ctmp,"TAILLE!!!",MB_OK);
//29 est la taille totale du msg
memcpy(ctmp,buffer,29);
MessageBox(Dlg,ctmp,"MSG!!!",MB_OK); |
Avec ça j'obtient une taille affichée de 4 et le msg affiché (un simple caractere non imprimable) ne contient donc pas les chaines que je lui ai copié.
Je vous remercie pour votre aide
Re: Creation d'un paquet pour prog windows
Citation:
Envoyé par OjBarbare
Code:
1 2 3
|
memcpy(ctmp,buffer,29);
MessageBox(Dlg,ctmp,"MSG!!!",MB_OK); |
buffer contient du binaire (des entiers sur 4 caractères) et donc n'est pas affichable tel quel.