IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Surveiller son propre port 80


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 214
    Par défaut Surveiller son propre port 80
    Bonjour,
    Est-il possible de surveiller ce qui passe dans les deux sens sur mon port 80 ?
    Bien que je ne sois pas un serveur mais un simple utilisateur (client) lambda.
    Je voudrais par exemple savoir exactement ce que mon navigateur envoie et ce qu'il reçoit en récupérant le tout dans 2 buffers.
    Puis-je par exemple utiliser des commandes du style bind ou listen ou d'autres pour y arriver ? Ou y a-t-il d'autres moyens ?
    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 214
    Par défaut Suite
    A priori bind et listen n'ont rien à voir avec ça. J'ai regardé la console de Firefox, ça permet de voir en partie ce qui se passe, mais ça reste manuel. Je dis en partie car quand on clique sur une commande GET par exemple, pour voir le détail, le détail s'affiche dans une fenêtre qui n'est pas assez large pour voir le bout des lignes longues et on ne peut pas l'élargir.
    Bon, j'ai quand même réussi à récupérer par exemple dans le buffer de mon programme en C la page d'accueil de web.developpez.com en simulant Firefox par un Send de la séquence suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	const CHAR *get="GET http://web.developpez.com/\r\n";
    	const CHAR *accept="Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
    	const CHAR *charset="Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n";
    	const CHAR *encoding="Accept-Encoding: qzip, deflate\r\n";
    	const CHAR *language="Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
    	const CHAR *connection="Connection: keep-alive\r\n";
    	const CHAR *host="Host: web.developpez.com\r\n";
    	const CHAR *agent="User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2\r\n";
    	const CHAR *requete1[8]={get, accept, charset, encoding, language, connection, host, agent};
    mais par contre pour récupérer les messages que Firefox envoie au serveur, je n'ai pour l'instant que la solution manuelle et incomplète par la console. Je suis toujours preneur si quelqu'un a une idée.
    Tant que j'y suis j'aurais une question complémentaire: maintenant que je sais récupérer dans mon buffer la page d'accueil du serveur, je ne voudrais pas avoir, pour l'instant, à réécrire un navigateur pour l'afficher. Y a-t-il un moyen de piloter Firefox par exemple à partir de mon programme en C pour qu'il affiche la page que j'ai dans mon buffer ?
    Merci

  3. #3
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    Regarde du coté de wireshark

    Normalement ton navigateur ne devrait pas envoyer grand chose sur le port 80. LE port 80 est utilisé au niveau du serveur. Du coté client (toi), c'est normalement un port aléatoire (habituellement supérieur à 1024) qui est utilisé

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 214
    Par défaut Suite
    Re-bonjour,
    Ok je pensais que le port 80 c'était lié à Internet. Toutefois avec mon programme en C je me connecte avec un htons(80) et ça marche quand même (je suppose que d'après ce que tu dis, ça aurait marché aussi si j'avais choisi un port>1024), je reçois une réponse, par contre pour simuler ce que fait Firefox ça devient compliqué, car avec Firefox, avant que la page que je souhaite ne s'affiche il y a un grand nombre d'échanges entre Firefox et le site (par exemple developper.com).
    De plus je pressens qu'il me faut utiliser les cookies qui me sont envoyés dans la réponse mais je ne sais pas trop comment.
    Les cookies sont envoyés par le site sous la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set-Cookie: PHPSESSID=a91a9975be8a53e4f7a74330b11096be; path=/
    Par contre je ne suis pas sûr de la forme sous laquelle moi je dois les envoyer, selon les exemples que j'ai trouvés, j'ai trouvé deux formes différentes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1.- "Cookie: PHPSESSID; a91a9975be8a53e4f7a74330b11096be\r\n"
    ou 2.- "Cookie: PHPSESSID=a91a9975be8a53e4f7a74330b11096be; autre nom=valeur; etc \r\n"
    Saurais-tu quelle est la bonne ?
    Enfin, connaîtrais-tu un tutorial qui explique ce qu'on doit faire des cookies reçus ou plus complètement les échanges?
    Merci

  5. #5
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    Je vais pas beaucoup t'aider pour ce qui est des échanges, car je n'y connais pas grand chose.

    Pour ce qui est du port, si c'est le port de destination que tu indique, alors, oui, le 80 est important. Le port 80 (et son grand frère le 8080) est habituellement réservé pour les connexions web de type http. C'est le serveur web qui écoute sur ce port, c'est à dire la machine de destination.

    Si, toi, tu ouvre le port 80 en local, pour pouvoir te connecter à un serveur web distant, donc sur le port 80 aussi, tu aurais pu effectivement choisir n'importe quel autre port local ne encore utilisé, à partir du moment ou le port distant reste le 80.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 214
    Par défaut Suite
    Re-bonjour,
    Merci quand même.
    En fait, je choisis le port 80 dans la structure SOCKADDR_IN de l'API Windows après y avoir rapatrié la structure externe "hostent" dont l'adresse est donnée par la fonction gethostbyname(). Et ensuite je me connecte au site par connect() en lui passant en paramètre la structure SOCKADDR_IN qui contient le port 80, ainsi que la socket. Je pensais que le port que je donnais était le mien, mais en fait, je viens de faire l'essai de remplacer le port 80 par le port 1025 et ça ne marche plus, j'ai systématiquement: "Erreur à la connexion", par contre ça n'empêche pas le gethostbyname() de continuer à fonctionner et de récupérer l'adresse IP. J'en conclus donc que le port que je donne est celui du site distant. Par contre comme je ne donne nulle part ailleurs d'autre numéro de port, j'ignore quel est le port utilisé sur mon micro.
    Concernant les échanges de cookies, j'ai trouvé quelques infos intéressantes sur Wikipedia: http://fr.wikipedia.org/wiki/Cookie_%28informatique%29 et sur: http://www.scriptsdb.org/tutar.php?id=635.
    Je suis toujours preneur d'infos supplémentaires si d'autres personnes en ont ?
    En particulier, j'avais demandé si quelqu'un connaissait le moyen de piloter un navigateur avec un programme en C tout en gardant la main sur le navigateur?
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 04/01/2007, 12h15
  2. Créer son propre LayoutManager
    Par tomburn dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 17/03/2005, 17h15
  3. créer son propre protocole
    Par matthew_a_peri dans le forum Développement
    Réponses: 11
    Dernier message: 04/03/2005, 15h16
  4. Création de son propre message dans un formulaire
    Par androme dans le forum C++Builder
    Réponses: 17
    Dernier message: 07/02/2005, 00h13
  5. [C#] Ajouter son propre composant dans Design de VS.Net
    Par yannick_sch dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/08/2004, 12h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo