Est-il possible de faire un traceroute dans le navigateur?
Je suis à la recherche d'un moyen de faire un traceroute côté client, c'est à dire dans un navigateur.
Autant que je sache, il n'est pas possible d'envoyer ICMP, UDP ou TCP des paquets arbitraires TTL valeurs via Javascript ou Flash. Je sais que Flash permet les connexions TCP via la Prise de la classe dans Actionscript, mais il ne semble pas utile pour un traceroute de mise en œuvre.
Est la seule solution pour développer un plug-in de navigateur ?
MODIFIER: je viens de découvrir qu'il a été fait avec une applet Java: http://www.codefromthe70s.org/traceroute.aspx
La mauvaise nouvelle est que cette application doit être signé le code parce qu'il traite la sortie de la table de ping exécutable du client sous-jacent du système. De ce fait, l'utilisateur est invité à autoriser l'application Java à exécuter, ce qui est contraignant.
Plus d'infos ici: http://www.codefromthe70s.org/traceroute_explained.aspx
Je suis toujours à la recherche d'une solution plus simple si quelqu'un peut aider.
EDIT 2: Merci pour vos réponses. Je crois que je vais aller avec Java, alors.
Je me demande si le NaCl ( http://code.google.com/p/nativeclient/ ) serait favorable à une sorte de traceroute app.
Je peux le signer de cours. Juste vérifier si il y a d'autres façons de le faire.
OriginalL'auteur Franck | 2010-02-01
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire tout cela à partir d'un navigateur. Javascript peut, au mieux, d'ouvrir une connexion de retour à son serveur d'origine pour les requêtes AJAX, mais ne peut le faire via HTTP. Flash pouvez parler à l'arbitraire hôtes, mais seulement si elles sont répertoriées dans un crossdomain.xml fichier sur le serveur d'origine, et encore, uniquement via TCP. UDP prise en charge dans Flash est apparemment en attente.
Traceroute et ping sont à la fois basée sur ICMP protocoles et ne peut pas être créé ou contrôlé à partir de Flash ou Javascript. Ils ont également tous deux nécessitent des "brutes" de l'accès à créer des paquets, et cela ne peut absolument pas être fait côté navigateur. C'est pourquoi le "ping" est une "SUID" programme sur les systèmes Unix, comme des paquets bruts accès nécessite les privilèges de root.
Au mieux, vous pouvez faire un serveur-côté de la mise en œuvre et le résultat est envoyé au navigateur. Et même alors, vous avez très probablement ne pouvait pas le faire à partir d'un serveur de processus sur une machine Unix, le serveur web est rare d'être exécuté en tant que root. Vous devez exécuter le système de ping et/ou traceroute et de rediriger la sortie vers le navigateur.
OriginalL'auteur Marc B
Pourquoi ne pas vous juste signer l'applet? N'est pas le problème, en fait, plus vous ne savez pas comment signer l'applet? Si oui, alors commencez ici: jarsigner. Ici est plus clair tutoriel.
Il est en fait pas plus simple/la meilleure solution que fait exécution d'un morceau de code et/ou des commandes à l'ordinateur client. Le traceroute vraiment ont pour origine l'ordinateur client.
Javascript et Actionscript ne peut pas le faire en raison de restrictions de sécurité. Ils ont des vies dans le contexte de la page web. Silverlight pourrait être en mesure de le faire, mais ne pas les broches moi. Je ne fais pas NET trucs.
J'attendais qu'une applet java signée seraient en mesure d'envoyer des paquets ICMP, mais après quelques recherches sur google, il ressemble en fait à java uniquement nativement en charge le protocole TCP/UDP? Je suppose que c'est encore possible via JNI.
OriginalL'auteur BalusC
Il est CoNetServ (Réseau Complexe de Services) extension de navigateur. Il est capable de faire des traceroute depuis votre ordinateur directement dans votre navigateur.
http://wiki.github.com/VojtechVitek/CoNetServ/
Extension Chrome: https://chrome.google.com/extensions/detail/mmkpilpdijdbifpgkpdndpjlkpjkihee
Firefox add-on: https://addons.mozilla.org/en-US/firefox/addon/181909/
EDIT: Chrome et Firefox révoqué le regroupement NPAPI bibliothèques dans les extensions/modules complémentaires. Malheureusement, le ci-dessus ne fonctionne plus.
OriginalL'auteur Vojtech Vitek
Hmm... non, parce que le modèle de sécurité.
Vous pourrait être en mesure de le faire dans un navigateur en particulier avec un plug-in, mais pas de l'arbitraire d'un navigateur à l'aide de quelque chose de largement disponibles.
J'aimerais avoir tort ici.
OriginalL'auteur Rich
Comment au sujet de l'exécution de la commande traceroute sur le serveur et renvoie le résultat avec somekind de l'appel ajax
la route est symétrique, de sorte que cela pourrait fonctionner la plupart du temps.
OriginalL'auteur Ilian Iliev
Peut-être un peu tard, mais peut être intéressante pour de futures lectures (comme le mien :-D).
Java 1.5 a un InetAdress Classe avec un isReachable méthode, que vous pouvez essayer. Vérifiez ceci:
http://download.oracle.com/javase/1.5.0/docs/api/java/net/InetAddress.html#isReachable(int)
OriginalL'auteur mTorres
Vous n'avez pas besoin de créer une applet, et de le signer! Il est possible d'utiliser java à partir de javascript.
J'ai fait un script pour faire un traceroute avec ActiveX ou Java.
Je ne vois pas tous les avertissements de sécurité sur OS X. l'Essayer sur Windows et Linux et dites-moi ce qui se passe 🙂
UPD: semble que cela ne fonctionne dans Firefox
OriginalL'auteur myfreeweb