[MOD : Cette discussion d�vie rapidement sur le C++, d'o� le d�placement]
Bonjour.
Voil�, j'ai un gros probl�me avec l'interpr�tation du \0 en C.
Alors je vous explique :
Tout d'abord je fais un client en C/C++ avec winsock2 et socket.h sous linux (pour que le client soit portable. Le protocol du serveur est aussi �crit en C, mais je ne peux pas le modifier. Alors, le protocol a pour format @auth.pseudo.pass pour la connexion. Donc, la chaine a envoyer � la connexion est @auth\0pseudo\0pass, parce que le serveur se sert de nullchars comme s�parateur entre les diff�rentes choses � envoyer.
Le probl�me est que, quand j'envoie la chaine en C, le \0 est interpr�t� et la chaine que je r�cup�re au sniff c'est @authpseudopass et non pas @auth.pseudo.pass comme je devrais. La standard de nullchars en C emp�che l'envoie de la chaine en tronquant les s�parateurs![]()
1. A partir de l�, j'aimerais savoir si il y a une fa�on de faire que les \0 ne soient pas interpr�t�s et soient envoy�s directement au serveur � partir du client.
2. Si non, j'aimerais savoir comment je peux convertir la chaine en hexadecimal et l'envoyer par la socket.
3. Si quelqu'un a une id�e, je suis prenneur ^^
En gros, le client doit envoyer @auth.pseudo.pass (@auth\0pseudo\0pass), mais en C le \0 est interpr�t� comme nullchar. Il faut que en sniffant le client, je puisse r�cup�rer @auth.pseudo.pass et les "." ou "\0" en hexa me donne "00" comme valeur.
J'esp�re avoir �t� assez clair et que vous pourrez m'aider parce que je s�che vraiment ^^''
Partager