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

Réseau/Web Python Discussion :

Scapy: attendre plusieurs réponses


Sujet :

Réseau/Web Python

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Scapy: attendre plusieurs réponses
    Bonjour,

    Je dois réaliser une connexion HTTP avec un GET en Scapy. Le but étant de pouvoir relever les différents temps de chaque phase (échange, SYN, SYN ACK, ACK, request, response, etc).

    Lorsque j'envoi mon paquet tcp contenant mon GET, 3 paquets doivent revenir:
    - Un packet ACK pour mon GET
    - La réponse du GET (les data quoi) a priori: HTTP/1.0 200 OK
    - Et enfin un FIN ACK disant que la transmission est finie

    Il faut que je puisse récuper ces 3 paquets de façon automatique, pour cela j'ai trouvé 2 façons:

    => 1) la fonction sr() avec l'option multi=1

    => 2) utiliser sniff juste apres mon GET

    1) Pour sr(), le problème est d'arreter la capture, si je met multi=1, il attend plusieurs réponses au stimuli, mais ne sais pas quand s'arreter, il n'y a pas d'option "count" pour lui dire de s'arreter à 3 réponses.
    Une solution serait d'utiliser un timeout, sauf que vu que ce script marchera sur des sites très différents, il est possible qu'un jour une réponse excède mon timeout. Et si le timeout est trop grand, c'est handicapant en terme de perfo.

    2) Si j'utilise sniff, pas de problème vu que je peux utilser "count" et lui dire de s'arreter a 3 paquets, l'ennui est qu'il capte tous les paquets entrant et pas seulement les réponses de mon stimuli. Donc il faut faire un filtre pour preciser quel paquet exact je recherche. Seulement je ne suis pas sûr de pouvoir faire un filtre assez precis pour que jamais un paquet "batar" d'un autre protocole ne s'interpose.
    De plus, un autre problème est qu'il arrive parfois qu'entre la ligne:
    send(GET_PACKET) qui envoie mon paquet TCP GET
    et la ligne juste en dessous:
    answers=sniff(...))
    certains paquets aient deja été envoyé avant l'activation du sniff, du coup quand je lis le 3è paquets reçu, ce n'est pas le FIN ACK.

    L'idée serait de pouvori utiliser sr() de sorte qu'il s'arrete à un nombre de paquets donnés.

    Une meilleure solution serait de seulement attendre le paquet FIN ACK car des fois la réponse au GET est découpée en plusieurs paquets, du coup au total j'ai:
    1 ACK
    "N" GET response
    1 FIN ACK

    il y a peut etre d'autres façon auxquelles je n'ai pas pensé, je ne suis pas expert en scapy,
    mon but est de relever 4 temps:
    DNS resolution (facile)
    Connect resolution (facile: delta entre l'envoi du SYN et la reception du SYN ACK)
    Response (delta entre l'envoi du GET et la réception du ACK)
    Data (delta entre la reception du premier paquet de reponse et la réception du dernier (le FIN ACK)

    Si quelqu'un a une idée ce serait super

    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 23
    Points : 54
    Points
    54
    Par défaut
    Bonjour, tout d'abord :

    http://www.thice.nl/creating-ack-get...ts-with-scapy/

    la fonction sr1() envoie un packet et s'arrete dès la reception du premier packet qui repond au "stimuli" donc pratique pour le tcp handshake, après pour la reception du get........ je cherche je cherche.......

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/04/2007, 11h42
  2. Attendre la réponse d'une boite de dialogue ??
    Par Ben_Le_Cool dans le forum Delphi
    Réponses: 16
    Dernier message: 15/12/2006, 20h41
  3. [JDialog] attendre une réponse
    Par RR instinct dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 28/11/2006, 08h34
  4. Attendre une réponse du périphérique USB
    Par Arnaud Malabeux dans le forum C++
    Réponses: 6
    Dernier message: 17/06/2006, 22h45

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