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] Ecrire dans un fichiers pcap et buffer.


Sujet :

Réseau/Web Python

  1. #1
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut [scapy] Ecrire dans un fichiers pcap et buffer.
    Salut les Webpythons,
    après mes déboirs de débutant en la matière avec le module scapy j'arrive enfin a quelque: j'obtiens le résultat visée mais j'ai un petit soucis de persistance des données avec la fonction wrpcap de scapy:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    def traceroute_tcp(ip,port=80) :
      ans,unans=sr(IP(dst=adr,ttl=(1,15))/TCP(dport=port,flags="S"))
      for v in ans :
        wrpcap('fichier.pcap', v)
     
    def read_pcap(fichier) :
      a=rdpcap(fichier)
      print a
    Le problème étant quand j'exécute le traceroute, les réponses que je reçoit devrai être écrit dans un fichier pcap...
    Hors à l'affichage avec le directive print de la fonction read_pcap() je me retrouve avec 1 seul paquet que j'ai identifier comme étant la réponses final au SYN/ACK traceroute: les paquets ICMP 'time-exceeded' ne sont pas écrits dans le fichier pourtant le traceroute fonctionne bien et si je fait un summary() on voit bien que je reçoit tous les paquets...
    Serai ce un problème de buffer comme j'écrit dans le fichier pcap en boucle ca risque fort d'être le cas: je ne peut résoudre le problème car: restez bien assis, je n'arrive pas a avoir le buffer d'un fichier avec python, sinon je pourrait donner celui-ci a la méthode wrpcap et le problème serai peut-être régler.

    Merci pour vos réponses éclairées et bon python a vous.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 813
    Points : 7 102
    Points
    7 102
    Par défaut
    wrpcap n'accepte pas une liste?

    Il me semble que tu pourrais faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wrpcap('fichier.pcap', ans)
    Bien sûr tu vires ta boucle for...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Oui certes wrpcap() accepte une liste mais ce ne fonctionne pas comme indiquer: une liste de paquet est insuffisant car si on exécute wrpcap('fichier.pcap',ans) on obtient le traceback suivant indiquant qu'il manque le timestamp je crois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Traceback (most recent call last):
      File "tcp_syn_traceroute.py", line 29, in <module>
        tcp_syn_traceroute(adr)
      File "tcp_syn_traceroute.py", line 19, in tcp_syn_traceroute
        wrpcap('test.pcap_03',ans) #,options=[('Timestamp',(0,0))]
      File "/usr/lib/python2.7/dist-packages/scapy/utils.py", line 470, in wrpcap
        PcapWriter(filename, *args, **kargs).write(pkt)
      File "/usr/lib/python2.7/dist-packages/scapy/utils.py", line 653, in write
        self._write_packet(p)
      File "/usr/lib/python2.7/dist-packages/scapy/utils.py", line 692, in _write_packet
        sec = int(packet.time)
    AttributeError: 'tuple' object has no attribute 'time'
    Et dans la doc il est mentionner qu'on peut mettre l'option timestamp a la valeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    options=[('Timestamp',(0,0))]
    mais j'ai toujours le même traceback.
    Je pense qu'il est possible, d'après un traceback que j'ai lu d'indiquer a la fonction wrpcap dans quel mode on désire écrire dans le fichier: 'wb'|'ab' mais il faut donner un objet de type buffer ce que je n'arrive pas a obtenir avec les méthodes d'une instance de <type 'file'>. Si quelqu'un sait comment obtenir l'objet buffer d'un objet de <type 'file'> il serai vraiment sympa de poster.
    Merci pour vos réponses
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 813
    Points : 7 102
    Points
    7 102
    Par défaut
    Je pense qu'il est possible, d'après un traceback que j'ai lu d'indiquer a la fonction wrpcap dans quel mode on désire écrire dans le fichier: 'wb'|'ab' mais il faut donner un objet de type buffer
    Ah, que cela ne tienne,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    buffer(open('fichier.pcap', 'wb'))
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Je ne sais pas d'ou tu sort cette primitive buffer() mais elle n'était pas consigner dans mon manuel d'apprentissage de pythonnerie que je pensai complet peut-être une nouveautée de python 2.7 mais la commande ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    buffer(open('fichier.pcap', 'wb'))
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
    TypeError: buffer object expected
    ...???
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Luke spywoker Voir le message
    Je ne sais pas d'ou tu sort cette primitive buffer() mais elle n'était pas consigner dans mon manuel d'apprentissage de pythonnerie que je pensai complet peut-être une nouveautée de python 2.7 mais la commande ne marche pas:
    buffer est une fonction introduite en 2.7 et remplacée par memoryview en 3.x.
    Impossible de l'appliquer à l'objet "file" retourné par open.
    Vous pourriez l'appliquer au contenu du fichier lu (buffer(open(...).read()) mais je ne vois pas trop comment cela résoudra la question que vous posiez initialement.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Ecrire \" dans un fichier
    Par photorelief dans le forum Langage
    Réponses: 2
    Dernier message: 14/09/2005, 15h56
  2. [JAR] Lire et Ecrire dans un fichier contenu dans un jar
    Par lipao17 dans le forum Général Java
    Réponses: 5
    Dernier message: 02/05/2005, 12h01
  3. Ecrire dans un fichier
    Par gibet_b dans le forum Linux
    Réponses: 5
    Dernier message: 25/04/2005, 20h11
  4. Ecrire dans un fichier grace à un trigger ?
    Par zigoo dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 29/10/2004, 20h03
  5. Ecrire dans un fichier sans supprimer le reste
    Par koan_sabian dans le forum Linux
    Réponses: 4
    Dernier message: 20/02/2003, 15h44

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