Bonjour,
Voici un petit programme pour système Linux et compatibles. Il permet de voir ce qui transite depuis et vers le navigateur et même d'altérer ces données.
Pour l'installer, il faut installer le package contenant g++ (gcc normalement). Télécharger Relais_Linux.zip et le copier dans un dossier, ensuite :
Pour commencer, taper "./relais -e 2100" dans le terminal. Puis, dans le navigateur, aller dans la section proxy et mettre 127.0.0.1 comme ip et 2100 comme port TCP. Cela affiche ce qu'envoie le navigateur aux serveurs. Un bon moyen de se former au protocole HTTP. Attention, ce programme ne fonctionne que pour HTTP, pas HTTPS.
Une fois qu'on a une idée un peu plus claire de la pratique de HTTP, on peut s'amuser à altérer les données envoyées afin de rajouter ou supprimer des entêtes (voir regles.txt). A titre d'anecdote, il y a eu certains logiciels web (en php notamment) qui se faisaient abuser en notant l'adresse ip indiquée par l'entête "X-Forwarded-For:" au lieu de la véritable ip se connectant au serveur. "X-Forwarded-For:" est utilisée par un proxy non-anonyme pour cafarder l'ip de celui qui l'utilise. De sorte que maquiller son adresse ip était un jeu d'enfant selon le logiciel. Mais cela est a priori du passé.
Ce programme est très imparfait dans la mesure où j'ai dû le rafistoler à la dernière minute pour qu'il supporte le standard C++11. De plus, l'un des bugs les plus gênants que je pensais avoir traité semble avoir réapparu (le port d'écoute du programme est souvent occupé lorsqu'on le relance, il faut fermer le navigateur et attendre avant de le relancer ou bien changer de port). J'essaierai de m'y pencher (je subodore une évolution du comportement de certains appels systèmes).
Enfin, il s'agit d'un exemple relativement simple d'utilisation de "sockets multithreaded" sous linux en C++ qui pourrait intéresser quelques programmeurs en herbe.
Voici un petit programme pour système Linux et compatibles. Il permet de voir ce qui transite depuis et vers le navigateur et même d'altérer ces données.
Pour l'installer, il faut installer le package contenant g++ (gcc normalement). Télécharger Relais_Linux.zip et le copier dans un dossier, ensuite :
Code:
tar -xf Relais_Linux.zip cd Relais_Linux make install clean
Une fois qu'on a une idée un peu plus claire de la pratique de HTTP, on peut s'amuser à altérer les données envoyées afin de rajouter ou supprimer des entêtes (voir regles.txt). A titre d'anecdote, il y a eu certains logiciels web (en php notamment) qui se faisaient abuser en notant l'adresse ip indiquée par l'entête "X-Forwarded-For:" au lieu de la véritable ip se connectant au serveur. "X-Forwarded-For:" est utilisée par un proxy non-anonyme pour cafarder l'ip de celui qui l'utilise. De sorte que maquiller son adresse ip était un jeu d'enfant selon le logiciel. Mais cela est a priori du passé.
Ce programme est très imparfait dans la mesure où j'ai dû le rafistoler à la dernière minute pour qu'il supporte le standard C++11. De plus, l'un des bugs les plus gênants que je pensais avoir traité semble avoir réapparu (le port d'écoute du programme est souvent occupé lorsqu'on le relance, il faut fermer le navigateur et attendre avant de le relancer ou bien changer de port). J'essaierai de m'y pencher (je subodore une évolution du comportement de certains appels systèmes).
Enfin, il s'agit d'un exemple relativement simple d'utilisation de "sockets multithreaded" sous linux en C++ qui pourrait intéresser quelques programmeurs en herbe.
Commentaire