[C] se placer entre les sockets?

jaky1212 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   -  
jaky1212 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   -
Coucou !
Je programme en C sous windows avec les sockets , et j'aurai voulu savoir s'il été possible de se placer entre une application client et un serveur, faire office de passerelle en quelques sortes? Donc j'ai un programme qui se connecte à un serveur et qui envoie une chaine de caractère. Le problème et que le message contient une faute et je n'ai pas les sources du .exe ... j'aurais voulu faire office de passerelle et modifier le message envoyé :s est-ce possible ? merci

8 réponses

Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
pour connaitre le contenu des trames, pas besoin de faire "passerelle"
utilises wireshark, c'est un analyseur de trames. Attention, chez moi ca marche pas en wifi, seulement en filaire

edit: en revanche, si tu veux en modifier le contenu, il faudra en effet créer un programme, qui se fera passer pour le serveur, il recevra les trames réseau, les modifiera, et se connectera au vrai serveur pour transmettre les trames modifiées
0
jaky1212 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   8
 
avec wireshark on voit juste les paquets (c'est d'ailleur comme sa que j'ai vu l'erreur sur la chaine envoyée :s ) mais maintenant je voudrais modifié le message avant qu'il n'arrive au serveur...
une autre idée ?
merci bien
0
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
as tu vu la modification que j'avais fait plus haut alors que tu éditais ton 2° post ?
0
jaky1212 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   8
 
En effet je n'avais pas vu dsl :s
merci bien pour ta réponse donc c'est possible :) maintenant le serveur doit être configuré de quelle manière pour se faire passé pour le serveur ? car lorsqu'un client se connecte a un serveur il ouvre une socket et celle-ci les relie directement . Le serveur doit avoir la même que le serveur mais en local ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
alors, le plus simple, en effet, c'est de créer en local un serveur, sur le même port que le serveur réel. dans ton programmes, tu devras spécifier l'adresse 127.0.0.1 à la place de l'adresse du serveur. Si ce réglage d'adresse n'est pas possible, ca va compliquer les choses !

donc tu crées ton serveur, on va dire sur le port 5050
tu fais la création de la socket, le mode listen, l'acceptation, quand tu accèptes, tu crées uen nouvelle connexion vers le vrai serveur (meme port), et ensuite, il reste plus qu'à transferer les données, gérer les déconnexions,etc.

n'hésites pas à publier ton code ;)
0
jaky1212 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   8
 
merci beaucoup, je vais coder et paramétré mon serveur ! Après pour renvoyer la réponse au programme, avec le serveur j'envoie le texte reçu a mon adresse ip(locale 192.168....) sur le port spécifié ? Merci encore !
0
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
tu auras 2 sockets: une vers le client, une vers le serveur. Tu n'as cas analyser les buffers de receptions, y faire tes modifs et envoyer à l'autre socket. Je ne vois pas quoi dire de plus ..
0
jaky1212 Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   8
 
Ok je vais tester sa :) je posterai un message quand j'aurai codé tout sa merci bien nabla's
0