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 :

capturer des paquets udp


Sujet :

Réseau/Web Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut capturer des paquets udp
    Bonjour,

    je cherche une solution au problème suivant.
    J'ai un équipement (une combinaison de motion capture) dont le logiciel de traitement renvoie sur le réseau chacune des poses (coordonnées et angles pour toutes les articulations du squelette) sous la forme d'un datagrame (protocole udp) propriétaire. La composition du datagramme semble relativement bien expliqué mais je bute sur le moyen de récupérer le datagramme avec Python.
    Je m'explique :
    j'ai une machine A qui envoie à une fréquence donnée les datagrammes.
    j'ai une machine B qui doit "écouter" ces datagrammes. Seulement je ne trouve aucune méthode de socket qui permette ça. J'imagine que c'est tout à fait possible.
    une idée ?
    taprik

    nb : j'ai fais un test avec Wireshark et je vois bien le datagramme.

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'ai 2 tutos qui peuvent être une source d'inspiration pour ton pb:

    Avoir l'heure exacte par consultation d'un serveur ntp (protocole UDP):
    http://python.jpvweb.com/mesrecettes...temps_par_sntp

    Voir en particulier l'utilisation du module struct pour extraire les infos du paquet UDP reçu.

    Construire un ensemble minimum client-serveur UDP:
    http://python.jpvweb.com/mesrecettes...rveur_udp_mini

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Merci tyrtamos,

    En fait j'ai utilisé les modules scapy et impacket pour récupérer les infos envoyés par ma première machine car dans mon cas on est pas dans une vrai config client/serveur car la première machine stream en permanence les infos à une fréquence déterminée, sans qu'aucune requète ne lui soit adréssé.
    Donc avec les modules sus cités, je suis parvenu à récupérer ça


    Ether: 0:12:3f:50:5b:4 -> 0:8:2:1d:de:3
    IP 192.168.1.100 -> 192.168.1.12
    UDP 1031 -> 963

    4d58 5450 3031 0001 36f2 8017 0000 0000 MXTP01..6.......
    0000 0000 0000 0000 0100 0000 c3a4 fdd3 ................
    42a6 68ce c214 eace c319 e3f5 c281 484e B.h...........HN
    431f ff6b 0200 0000 c3a5 51a7 42b9 b1b7 C..k......Q.B...
    c21c 5639 c31a 3872 c280 2b61 432d 1159 ..V9..8r..+aC-.Y
    0300 0000 c3a6 b1e2 42cc 3780 c223 d19d ........B.7..#..
    c31a 3da2 c280 0685 432e b223 0400 0000 ..=.....C..#....
    c3a8 3162 42de 805c c22b 489a c31a 41a3 ..1bB..\.+H...A.
    c27f c2f0 4330 51d7 0500 0000 c3a9 d0df ....C0Q.........
    42f0 978d c232 c16f c31a 377a c27d 76fa B....2.o..7z.}v.
    c32a f188 0600 0000 c3ad b00d 4304 7e22 .*..........C.~"
    c23e 3e91 c311 dcd1 c26e 3db3 4332 90a3 .>>......n=.C2..
    0700 0000 c3af d261 430c 3ba6 c248 baad .......aC.;..H..
    c32c 25a4 c258 1b3c 431f de52 0800 0000 .,%..X.<C..R....
    c3ab b9a3 4300 9d2f c245 1e35 c30d 473f ....C../.E.5..G?
    c272 21d4 c331 809d 0900 0000 c3a8 0a0c .r!..1..........
    4300 ef83 c279 5b3d c294 f65b c10a 707f C....y[=...[..p.
    4301 c2a9 0a00 0000 c39e 555d 42d3 3567 C.........U]B.5g
    c285 ea4b c289 5efd 4079 84f2 42da 42ce ...K..^.@y..B.B.
    0b00 0000 c39a 4632 42a4 663f c282 89ef ......F2B.f?....
    c295 3b94 c14b ee0c 42cf 4cad 0c00 0000 ..;..K..B.L.....
    c3ad 0da2 4300 30cb c22f aa30 c327 4223 ....C.0../.0.'B#
    c287 5b89 c31a 1096 0d00 0000 c3af 9d6a ..[............j
    42fb 65e3 c1f0 5220 4318 847c c200 36d0 B.e...R C..|..6.
    c2a7 d678 0e00 0000 c3ae 3c95 42c7 a6b5 ...x......<.B...
    c15b f4f1 431e d860 4225 e599 c30d f2ab .[..C..`B%......
    0f00 0000 c3b5 8fc2 42b0 b780 c1f1 8903 ........B.......
    4323 32ef 41d1 dadb c31c 0f79 1000 0000 C#2.A......y....
    c3a3 90be 42a3 b525 c233 e681 4325 d645 ....B..%.3..C%.E
    c24f 2e5a 432f 562b 1100 0000 c3a9 3591 .O.ZC/V+......5.
    4228 b2ca c24d 29ad c2d3 5b47 c274 d8e9 B(...M)...[G.t..
    c31d 20a8 1200 0000 c397 48df 4234 68c1 .. .......H.B4h.
    c201 f838 c2b7 50c8 c28a 5627 c328 9e02 ...8..P...V'.(..
    1300 0000 c393 09e5 41fd 758e c1f2 a8f6 ........A.u.....
    c2a5 e30e c285 4afb c330 1945 1400 0000 ......J..0.E....
    c3a6 5fe9 42a9 71b7 c1ed a0c5 430c ec52 .._.B.q.....C..R
    c299 38a4 c314 673f 1500 0000 c3a8 c965 ..8...g?.......e
    422e deed c20f 2e63 c320 ff1a c296 93f2 B......c. ......
    c325 e05b 1600 0000 c39d f7ab 411f 42c4 .%.[........A.B.
    c202 bdf4 c32e 2958 c297 2e9f c32f 4cf4 ......)X...../L.
    1700 0000 c3a4 5b40 3f6b 851f c210 9724 ......[@?k.....$
    c32f ad36 c296 fe53 c330 1ccb ./.6...S.0..
    Mon problème est maintenant de récupérer les infos seuls (le header compris). J'ai vu ton utilisation de struct, ça me semble tout à fait adapté, mais je ne vois pas dans un premier temps comment séparer les données hexa des infos ip, ... je pense que impackect doit savoir faire ça mais je ne trouve pas de doc concernat ce module. En plus ce sont vraiment mes débuts en python, donc rien n'est simple.

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Pour trouver de la doc:

    - le site de référence d'impacket est ici: http://oss.coresecurity.com/projects/impacket.html

    - scapy est ici aussi: http://oss.coresecurity.com/projects/pcapy.html
    et ici:
    https://www.secdev.org/projects/scapy/

    - pour wireshark:
    http://www.wireshark.org/

    Mais sur ces produits, je n'ai pas de connaissances suffisantes pour t'aider.

    Quand au module struc, il fait partie du Python de base et la doc se trouve dans la doc Python (http://www.python.org/doc/).

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut résolu
    bonjour,

    j'ai dit scapy mais c'est en fait pcapy que j'ai utilisé pour "sniffer" le réseau (scapy et pcapy n'étant pas le même module).
    c'est bien sur le site donné par tyrtamos qu'il n'y a pas de doc pour impacket (du coup il faut essayer les instructions qu'on identifie dans les exemples; pour extraire c'est une méthode de la sous classe decode qui s'appelle get_packet()). Par contre il y a une référence pour pcapy.
    A citer aussi un tutoriel en français sur ces modules à
    http://pleonasm.weblogs.dg-sc.org/in...acket-et-Pcapy
    Enfin pour la conversion c'est l'utilisation du module struct.

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

Discussions similaires

  1. Problème avec un module de capture des paquets
    Par yesser_taboubi dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 10/12/2012, 16h22
  2. API de capture des paquets sortant
    Par Nieli dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 05/06/2011, 22h26
  3. Remettre dans l'ordre des paquets UDP
    Par Snooker9 dans le forum C
    Réponses: 3
    Dernier message: 28/04/2009, 10h27
  4. capturer des paquets ARP
    Par .:dev:. dans le forum Développement
    Réponses: 2
    Dernier message: 27/06/2005, 12h59

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