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 :

lib Scapy : Crash de l'application sur un PC mais pas sur les autres


Sujet :

Réseau/Web Python

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2011
    Messages : 75
    Points : 88
    Points
    88
    Par défaut lib Scapy : Crash de l'application sur un PC mais pas sur les autres
    Bonjour à tous.

    Dans le cadre de mon projet, on utilise la lib Scapy afin de sniffer les paquets qui transitent sur le réseau local (192.168.2.3). On a des OPC Server qui tournent sur la même machine et branchés à cette adresse, et on veut sniffer les paquets qui y rentrent.
    Globalement, ça marche nickel depuis plus d'un an, sur nos PC (il y a du winXP et du win7).
    Voici l'extrait de code qui s'en charge, dans un thread séparé du reste évidemment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while Trigger:
        scapy.all.conf.iface = self.ethernet  # ID de la carte ethernet a sniffer 
        # Launches self.customAction on the packets received
        print filter_name  # "udp and host 192.168.2.3"
        print scapy.all.conf.iface  # p.ex "eth1" ou "eth12" selon le PC
        scapy.all.sniff(filter=filter_name,
                        prn=self.customAction,   # fonction a executer sur chaque paquet qui redirige celui-ci vers le bon analyseur selon sa signature
                        count=10)
    Tout ça est OK d'habitude.

    Cependant, lorsque je lance ce même code sur le server sous Windows Server 2003, tout freeze au niveau de scapy.all.sniff. Les deux print qui le précèdent sont affichés (parfois il en manque un), mais c'est tout. J'ai mis un print à l'entrée de self.customAction, rien. Et même un print à l'entrée de la fonction sniff (C:/Python27/Lib/site_packages/scapy/sendrecv.py + supprimé le .pyc pour forcer la recompil), rien non plus.
    Et lorsque je dis freeze, c'est toute l'IHM qui est bloquée, alors que le sniff se fait dans un thread séparé.

    Je n'arrive pas à comprendre ce qui bloque. Est-ce une incompatibilité avec win server 2003 ? Est-ce un conflit avec un autre logiciel/composant qui pose souci sous win server 2003 et pas sous >XP ?

  2. #2
    Membre éclairé
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Points : 751
    Points
    751
    Par défaut
    Salut,

    scapy utilise indirectement la libpcap au travers de pypcap. Il faut que tu t'assures que libpcap fonctionne bien sur ton Windows 2003.
    Essaie de faire une capture wireshark, voir si ca fonctionne.

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2011
    Messages : 75
    Points : 88
    Points
    88
    Par défaut
    Qu'est-ce que tu entends par "faire une capture" ? J'ai bien lancé Wireshark sur la machine et je reçois bien des paquets sur 192.168.2.3. Il y a quelque chose en plus à faire ?
    J'avais préalablement installé les dépendances de scapy, entre autres winpcap 4.1.3, et pcap 1.1 (+ dnet, pyreadline et pywin32)

    Par ailleurs, j'ai tenté d'arrêter les serveurs OPC pour voir s'il n'y a pas un conflit, mais ça ne change rien malheureusement.

  4. #4
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2011
    Messages : 75
    Points : 88
    Points
    88
    Par défaut
    J'ai du nouveau :

    En faisant tourner via le debugger ligne par ligne, j'ai une idée plus précise de la ligne où ça crash.

    Tout crash au niveau du fichier C:\Python27\Lib\site-packages\scapy\arch\pcapdnet.py :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            if hasattr(pcap,"pcap"): # python-pypcap
                class _PcapWrapper_pypcap:
                    def __init__(self, device, snaplen, promisc, to_ms):
                        try:
                            self.pcap = pcap.pcap(device, snaplen, promisc, immediate=1, timeout_ms=to_ms)
                        except TypeError:
                            # Older pypcap versions do not support the timeout_ms argument
                            self.pcap = pcap.pcap(device, snaplen, promisc, immediate=1)
    Précisément, ça bloque dans "self.pcap = pcap.pcap(device, snaplen, promisc, immediate=1, timeout_ms=to_ms)", donc le try (il ne va pas dans l'except). Et là, le debugger perd sa trace, puisque ça va dans pcap.pyd, qui est un binaire.

    Ça parle à quelqu'un ?
    Est-ce que ça pourrait être une incompatibilité hardware ?

Discussions similaires

  1. [XL-2007] Macro fonctionne sur mon poste mais pas chez les autres
    Par Rosees dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/10/2013, 17h01
  2. application marche sous XP mais pas sur 7
    Par laracroft87 dans le forum C#
    Réponses: 6
    Dernier message: 03/01/2011, 09h48
  3. Mon application tourne sur mon PC mais pas sur un autre
    Par phildev28 dans le forum Débuter
    Réponses: 5
    Dernier message: 22/06/2010, 10h11
  4. Code ok sur mon PC mais pas chez les autres ?
    Par catherineFR27 dans le forum Général VBA
    Réponses: 6
    Dernier message: 04/06/2007, 20h29
  5. Réponses: 2
    Dernier message: 11/07/2006, 13h01

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