Bonjour !
Je me demande comment faire en java pour sniffer le réseau; je suis débutant en la matière. Existe t il un lib spécifique pour cela ?
Merci de votre aide
Bonjour !
Je me demande comment faire en java pour sniffer le réseau; je suis débutant en la matière. Existe t il un lib spécifique pour cela ?
Merci de votre aide
Je relance cette question levée par Alec6 pour savoir s'il est possible de faire un petit sniffer simple en JAVA...
Je suis en train d'étudier un cours de réseau, et j'aimerais faire le lien entre ce cours et le langage Java, en essayant de mettre au point un petit programme le plus simple possible qui attrape toutes les trames.
Mais est-ce que la possibilité de capturer toutes les trames qui arrivent à la carte réseau d'un PC est accessible à Java ?
Ou faut-il plutôt utiliser un langage proche de la machine (comme le langage C) pour ça ?
Merci d'avance pour ceux qui ont des infos sérieuses à partager sur ce sujet...
J'ai trouvé ça, mais je n'ai pas le temps de regarder ce qu'il fait exactement, comment et quel est le champ d'action:
http://jpcap.sourceforge.net/
Sinon, il y a la JSocket Wrench library qui se trouve ici
Un sniffer est fourni.
La librairie est assez bien faite.
Il existe aussi jpcap, cf article ici : http://www.progx.org/article/Java/13
Flagrant délit de non lecture totale de thread !Envoyé par Gfx
Merci pour vos suggestions... Je vais étudier ces projets...
Et commencer à travailler sur mon petit utilitaire réseau, en parallèle avec mon cours !! ;-)
Merci à tous en tous cas...
(Quand j'aurai un truc présentable, je le mettrais dans la partie source...)
Pour la culture, Java utilise les couches les plus hautes du réseau : TCP et UDP. A partir de la, il y a des librairies qui manipulent tout ce qui est au-dessus (FTP, SSL, HTTP, RTP...) en utilisant TCP et UDP.
Java délègue tout ce qui est inférieur (IP, couche réseau local) à l'OS et ses propres librairies. Pour utiliser ces librairies OS, il faut donc une librairie Java couplée à du C/C++, dépendante de l'OS et donc non fournie avec la librairie standard.
Je m'en doutais !!! Dois-je donc conclure qu'un programme JAVA "pur" ne peut pas tout attraper sur l'interface réseau du PC ?Java délègue tout ce qui est inférieur (IP, couche réseau local) à l'OS et ses propres librairies. Pour utiliser ces librairies OS, il faut donc une librairie Java couplée à du C/C++, dépendante de l'OS et donc non fournie avec la librairie standard.
C'est pas grave, je vais me contenter d'abord de faire un petit utilitaire simple pour utiliser le réseau, avec les outils fournis dans le package java.net.
Merci pour ces précisions...
;-)
Je pense que se serais plus éducatif de partir de la couche physique. C'est à dire en utilisant un InputStream relié à un port physique par exemple le port série (il faut une librairie externe pour y accèder). Et faire mettre en place les différentes couches du modèle OSI par les élèves.
Sinon il y a la classe DatagramSocket dans le package java.net qui permet de récupérer les paquets IP, mettre en place un protocole comme TCP serait un excellent TP.
Attention, j'ai un mauvais souvenir d'un TP programation de réseau où on nous avait livré une application non documentée et on devait la modifier. Je pense qu'il est important si du code est fournit aux élèves qu'une javadoc complète sois livrée avec.
Bonne chance !
DatagramSocket permet d'utiliser UDP, pas IP ! Java ne permet pas de manipuler la couche IP, et je pense qu'elle est déléguée à l'OS.
Par exemple, il est impossible de configurer une interface réseau, les tables de routage, de lancer une requete ARP, de mettre en place un NAT, ... par des appels de méthodes Java.
Par contre, il est possible d'écouter un port en mode datagramme ou connecté, de résoudre un nom d'hote, d'établir une connexion TCP, ... par des appels Java, car cela fait partie de la couche Transport.
[edit]Concernant le codage des couches OSI en TP, j'ai peur que tu ne t'attaques à trop gros. TCP, en version très simplifiée, demanderait quand meme quelques milliers de lignes de code, et une expérience béton en programmation.
[edit2]Concernant la documentation, je renchéris cent fois ! Hélas le langage des manuels C n'est qu'un dialecte barbare que la javadoc a réussi à enrichir un petit peu. Toujours est il que lire une doc de programmation est un art.
Biensur je conseillais à calogerogigante, de refaire un modèle ultra simplifié du modèle OSI ou de TCP.
Sinon désolé pour l'erreur d'inculte, je pensais que l'udp ne contenait pas de réel protocole et permettait d'avoir accès à la couche juste au dessus d'IP. Ce qui fait qu'il aurait pu refaire pas trop difficilement une version simplifiés de TCP à partir de java.
Disons que mon objectif premier n'est pas de ré-inventer la roue, mais d'apprendre d'abord à utiliser les outils existant déjà dans JAVA.net... (Sans utiliser, si possible, de libraires externes...) Cela dit, je pense que je ferais mieux de d'abord éplucher tous les tutoriels qu'on peut trouver sur le net, avant d'attaquer l'implémentation d'un sniffer qui me semble être un peu difficile encore pour l'instant...
Mais est-ce que je me trompe ? : mais il me semble que je n'ai vu aucun didacticiel sur JAVA et les réseaux, dans le site de Developpez.com ?
:-(
Tu peux te référer au chapitre 15 du livre "think in Java" disponible dans la rubrique tutorial du site.
[HS]
Vi, pendant mes 6 ans de fac j'ai toujours fortement apprecie ce sentiment bizarre de me faire exploiter gratuitement pour la plus grande gloire d'autrui.Et faire mettre en place les différentes couches du modèle OSI par les élèves.
Passe encore pour les TP et TD qui sont necessaires a la comprehension des cours, mais quand les enseignants proposent des stages et autres projets dans la ligne droite directe de leurs projets de recherche......
Et encore c'etait bien pire du cote des DEA dont la salle des machines, se trouvait directement dans le labo d'info (= esclaves serviables a domicile ).
[/HS]
[HS]
Bien que cette impression est peut être vraie (même généralement vérifiée), c'est ces projets qui m'ont le plus intéressés pendant mes études :
- Sujet motivant : "recherche"
- Intéret : le projet risque d'être réutilisé plus tard et non mis dans un placard
- Moyen : généralement, on peut utiliser les ressources du labo (pour des projet plutot matériel)
Je ne comprend pas où tu vois des problèmes, si c'est le coté exploiteur, de toute façon une formation universitaire généralement c'est non rénuméré. Donc quitte à faire des choses, je préfère faire des choses plutôt utile.[/HS]
Etant chercheur, je peux t'assurer que j'apprécie fortement la présence des esclaves serviables à domicileEnvoyé par bouye
Je n'en doute pas : c'etait aussi le cas de mes profs
Partager