Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4627 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Sniffer TCP et HTTP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sniffer TCP et HTTP

n°1720575
kalex
Posté le 20-04-2008 à 17:24:25  profilanswer
 

Bonjour,
Je suis en train de programmer un sniffer (ma question ne porte toutefois pas sur la programmation proprement dite). Avec libpcap, c'est assez facile de récupérer les paquets, de "traduire" les entêtes Ethernet, IP et TCP puis de stocker le résultat. Ca j'y arrive.
 
Là où j'ai une difficulté, c'est que je souhaite analyser le trafic HTTP. Il faut donc réassembler les packets en analysant, au niveau TCP, les numéros de séquence et d'acquiescement. Ca aussi j'y arrive, par exemple j'arrive à obtenir un entête HTTP suivi de la page HTML entière. Où est la difficulté me direz vous.
 
J'y arrive ! Le problème avec mon système, c'est que je ne sais pas quand finit une requête HTTP. Je réassemble les paquets selon les numéros d'acquiescement, mais je ne sais pas si le paquet que j'assemble est le dernier ou si d'autres vont encore venir. Ainsi, je ne sais pas afficher : "fin de chargement de la page x". Certes le dernier paquet est généralement plus petit que les précédents, mais je me dis que j'ai dû rater quelque chose dans le protocole TCP. A moins que cela soit géré au niveau HTTP ?
 
Merci pour vos lumières !
 
PS : Je post ici, car je pense avoir plus de chance que dans Réseau & co...

mood
Publicité
Posté le 20-04-2008 à 17:24:25  profilanswer
 

n°1720590
ory
Posté le 20-04-2008 à 18:11:20  profilanswer
 

Regarde le champ Content-Length dans les entête du message http, ça te donne la taille du document qui suit.

n°1720594
kalex
Posté le 20-04-2008 à 18:19:26  profilanswer
 

Si seulement tous les serveurs fournissaient cette information, ça serait trop beau. ;) En pratique, peu de sites dynamiques fournissent ce champ (sauf ceux qui gzip leurs pages).
Merci quand même !
 
D'autres idées ?

n°1720707
kalex
Posté le 21-04-2008 à 01:12:07  profilanswer
 

En observant les paquets passer, j'ai fait quelques constatations :
 

  • Lorsque Content-Length est présent, le fichier se termine à la taille indiquée (normal).
  • Lorsqu'il n'y a pas de champ Content-Lenght, la fin du fichier contient souvent (en hex) 30 0d 0a 0d 0a (du moins, c'est ce que je constate sur un grand nombre de serveurs).
  • Mais ce n'est pas tout, le fichier peut aussi s'arrêter brusquement par l'envoi d'un flag FIN en TCP (c'est le plus logique, mais après quelques tests, ça ne semble pas être très fréquent...).


Quelqu'un peut confirmer, car je n'ai rien vu de très clair dans les normes...

n°1725306
Emmanuel D​elahaye
C is a sharp tool
Posté le 28-04-2008 à 00:37:00  profilanswer
 

kalex a écrit :

En observant les paquets passer, j'ai fait quelques constatations :
 

  • Lorsque Content-Length est présent, le fichier se termine à la taille indiquée (normal).
  • Lorsqu'il n'y a pas de champ Content-Lenght, la fin du fichier contient souvent (en hex) 30 0d 0a 0d 0a (du moins, c'est ce que je constate sur un grand nombre de serveurs).
  • Mais ce n'est pas tout, le fichier peut aussi s'arrêter brusquement par l'envoi d'un flag FIN en TCP (c'est le plus logique, mais après quelques tests, ça ne semble pas être très fréquent...).


Quelqu'un peut confirmer, car je n'ai rien vu de très clair dans les normes...


http://mathieu-lemoine.developpez. [...] /web/http/
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Sniffer TCP et HTTP

 

Sujets relatifs
[PHP] feed url et proxy http ....[C] Comment obtenir hostname distant (Sniffer)
Authentification HTTP au moyen d'une base de donnéesPHP et Modbus/TCP
TCP Paquets Concatentation[Résolu] Serveur html en soket TCP
tcp httpErreur HTTP 403 (Forbidden) Aléatoire ?
Serveur de fichier en HTTP ?VB.Net et http request : je sèche, besoin serieux coup de main
Plus de sujets relatifs à : Sniffer TCP et HTTP


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)