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

Développement Mobile en Java Discussion :

capturer les trames Wifi


Sujet :

Développement Mobile en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 130
    Par défaut capturer les trames Wifi
    Bonjour,
    Je pose une question pour mon fils qui doit bosser sur un projet de stage et qui galère grave depuis une semaine.
    quelles pistes suivre pour capturer les trames (paquets ?) d'une carte Wifi en Java ?
    Ils sont 3 étudiants sur ce projet et ils n'arrivent pas à décoller.
    Moi je suis plutôt Access VB alors j'ai du mal à lui donner un coup de main.
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    salut,

    les trames wifi sont relativement bas-niveau, en dessous de ce que te propose les API standard de java, voire des sockets 'classiques' en C/C++ (hors RAW socket, mais c'est pas vraiment pour la capture).

    A priori, l'application sera donc vraisemblablement dépendante d'un OS en particulier et donc si elle doit être développée pour être portable (Win, Linux, MacOS, ...), il faudra vraisemblablement du boulot supplémentaire.

    Il faudra donc au minimum une lib externe proposant un bout d'API sur laquelle leur appli java va se connecter (en JNI ?) et qui -elle- ira directement trifouiller dans les couches plus basses (OS, driver des cartes réseau, ...) pour en extraire l'info voulue.

    Je pense qu'une première piste serait de jeter un oeil du côté du projet open source Wireshark (anciennement appelé Ehtereal):

    - soit pour s'interfacer directement avec le programme (s'il est possible de le piloter en ligne de commande par exemple)

    - soit pour en extraire la partie capable de faire la capture proprement dite des trames afin de la réutiliser dans leur projet (après avoir pris en compte les problématiques de licence, bien entendu).

  3. #3
    Membre émérite Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 130
    Par défaut
    Merci bien. Je lui transmet et je te dis quoi

  4. #4
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Hem. Deux remarques:

    J'avais pas vu qu'on était dans le forum J2ME. Pour lever les ambiguités, le projet est-il destiné:

    - à un ordinateur. Dans ce cas, on ne parle pas de Java ME qui est destiné aux matériel embarqué comme les GSM, mais de Java SE et on n'est pas dans le bon forum

    - ou bien d'une application pour téléphone portable dans ce cas, on parle bien de J2ME ?


    => Si c'est une application destinée à un téléphone portable, j'ai bien peur que ce soit extrêmement difficile de développer une telle application en utilisant J2ME. S'ils veulent se donner une chance, il faudra plutôt qu'ils s'orientent vers le langage et l'API du système d'exploitation 'de base' du téléphone (genre Symbian pour les Nokia, ...). Et ça implique bien évidemment que l'appli ne sera pas très portable, et très loin d'être facile à programmer.

    => Si le projet se destine à être exécuté sur un ordi 'classique' (Windows/Linux/MacOS), je vient de retrouver le nom de la librairie que j'avais sur le bout de la langue: la librairie PCAP (ou libpcap) qui est justement celle qui sert aux logiciels de capture réseau (dont wireshark si mes souvenirs sont bons) et qui est pensée pour la portabilité inter-OS dès le départ.
    Au passage, un logiciel (que je ne connaissais pas) de sniffing de paquets WiFi, Kismet se base également dessus, validant les capacités de la librairie à faire ce que tes programmeurs en herbe attendent d'elle.

    L'article de libpcap sur wikipédia, et notamment la question des langages pour s'interfacer avec la lib:
    The implementors of the pcap API wrote it for use in C and C++, so other languages such as Java, .NET languages, and scripting languages generally use a wrapper.

    EDIT: le wrapper en question pour faire le lien entre un programme écrit en java et la librairie pcap : jNetPcap.
    Citation Envoyé par jNetPcap
    The project is made up of a java library, a native shared library (a .dll on win32 systems and .so file on unix based systems.) This library provides the interface (JNI bridge) between java world and native platform software and libpcap library itself. The software also requires a separate installation of the libpcap software on both unix and win32 systems.
    Ils devraient maintenant avoir tous ce qu'il leur faut pour démarrer. Au boulot

  5. #5
    Membre émérite Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 130
    Par défaut
    je crois que c'est pour des appareils portables genre pda mais je ne suis pas sûr. Je lui demanderai plus de précisions ce soir.
    Merci d'avoir pris le temps de répondre.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 3
    Par défaut
    Bonjour, je suis le sujet concerné par le problème

    Pour apporter quelques précisions, le programme doit tourner sur des Smartphones, donc l'utilisation de l'émulateur Google Android (et donc de java) nous a semblé la meilleure. On cherche actuellement des bibliothèques, des fonctions d'assez bas niveau pour manipuler les trames et la carte réseau.

    Du côté de Java cependant, on a rien trouvé qui puisse aller dans ce sens. Alors actuellement, on se tourne sur le langage C (plus proche de la machine) pour ce problème. Evidemment, on utiliserait du JNI pour coupler (là encore on sait pas trop comment ça marche) le langage C avec le Java. Mais toujours est-il que nous n'avons pas encore trouvé des librairies réseaux en C capable de nous permettre une analyse de trames.

    Et voilà qu'un nouveau problème survient, la compatibilité avec chaque Smartphone semble assez difficile à atteindre avec le C...

    Donc voilà, on continue nos recherches et on vous remercie déjà pour ces réponses

  7. #7
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Pour faire simple et rapide:

    - avec J2ME, vous n'avez aucune chance de réussir à toucher la partie assez 'bas niveau' pour pouvoir capturer des trames réseau. L'API réseua ne le permet pas (c'est encore plus vrai pour J2ME que pour J2SE).

    - avec J2ME, le JNI n'est pas possible.

    Conséquence: J2ME n'est pas adapté à votre problématique et vous ne pourrez jamais faire un analyseur (sniffer) réseau avec. Vous devrez donc vous tourner vers une autre solution que J2ME (forcément moins portable).

    Or, chaque plateforme de développement (ie. chaque OS pour portable) a ses spécificités propres. Vous allez alors dépendre de la plateforme choisie pour déterminer quel langage vous devrez utiliser et l'API que proposera les librairies de développement de ladite plateforme.

    Donc en premier lieu, il sera indispensable de définir la plateforme sur laquelle vous allez développer (et qui ne soit pas J2ME): Windows Mobile, Symbian, Android, IPhone, ... ?

    Ensuite, pour une plateforme donnée, vous devez voir si elle vous permettra effectivement d'avoir accès au matériel sous-jacent. Et à priori je serais plus que réservé sur ce point là, à vérifier au cas pas cas.

Discussions similaires

  1. Capturer les trames Hyperfile C/S
    Par WDKyle dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 22/03/2011, 20h59
  2. sniffer libpcap ne capture pas les trames locales
    Par guillaumedu78 dans le forum Linux
    Réponses: 13
    Dernier message: 20/04/2009, 15h30
  3. sniffer libpcap ne capture pas les trames locales
    Par guillaumedu78 dans le forum Réseau
    Réponses: 2
    Dernier message: 20/04/2009, 10h15
  4. [TCP/IP] pour capturer les trames
    Par fatiha dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 09/01/2006, 14h30
  5. Capturer les event de ma souris en dehors de mon appl
    Par bpy1401 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 28/07/2005, 16h59

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