[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