Titre: [HTML/Javascript] Lancer une application locale Posté par: The-Snake le 21 Août 2009 à 08:41:35 Bonjour !
Je suis en train de développer un Intranet et il m'a été demandé de placer des lanceurs pour les applications utilisés en interne. J'ai donc fait quelques recherche sur Google et j'ai trouvé une solution qui ne marche que sous Windows avec IE. Fort heureusement (enfin c'est vite dit ça aussi) c'est ce couple là qui est utilisé ici. C'était un petit Javascript avec de l'ActiveX... Seulement, la solution n'a pas fonctionné... Aussi je me demande, n'y a-t-il pas un moyen plus standard de lancer des application sans avoir à demander l'ouverture d'un fichier ? (parce que Google Earth doit être disponible par exemple, seulement Google Earth ça n'ouvre pas des fichiers). Titre: Re : [HTML/Javascript] Lancer une application locale Posté par: Iansus le 21 Août 2009 à 09:12:30 Oui, je vois ce que tu veux dire, par exemple tu fais un lien vers un .exe, et au lieu de dire "télécharger le fichier ihezi.exe", tu veux qu'il te lance l'appli associé au fichier .exe ?
Voici ce que j'ai trouvé sur le net : Code: function lancerexe(exe) Après, ce n'est pas sûr que ça marche, mais c'est le seul moyen que j'ai trouvé ^^ Titre: Re : [HTML/Javascript] Lancer une application locale Posté par: The-Snake le 21 Août 2009 à 10:34:40 J'ai testé avec cette page là :
Citation <html> Une fois l'activité ActiveX autorisé, rien ne se passe... pas même de message d'erreur !<head> <title>Test</title> <script type="Text/Javascript"> function lancerexe(exe) { var w = new ActiveXObject("WScript.Shell"); try { w.run(exe, 1, true); } catch(erreur) {} } </script> </head> <body> <a href="#" onclick="lancerexe('C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE')" >Machin</a> </body> </html> Décidemment ça me dépasse ! On peut pas faire confiance à du ActiveX :( ! EDIT: Voilà, j'ai repéré ce qui bloque. Ce code marche. Mais voici les cas ou il ne fonctionne pas (et manque de bol, les deux cas bloquants représentent exactement la situation que je dois résoudre). Ce code n'execute que des chemins relatifs et ne supporte pas les chemins absolus : on tape notepad.exe pour executer C:/Windows/notepad.exe. Ce code n'execute pas l'application concernée si le lien ne se trouve pas sur une page ouverte directement depuis le PC sans passer par un serveur (pour la même page, le script marche si j'ouvre C:/www/index.htm mais ne marche pas si je l'ouvre en faisant http://127.0.0.1/index.htm). N'y a-t-il donc aucun moyen de passer outre ? Titre: Re : [HTML/Javascript] Lancer une application locale Posté par: Iansus le 21 Août 2009 à 11:21:16 Normalement, en tout cas, c'est mon cas, quand je suis sur localhost (ou 127.0.0.1) et que j'exécute ce script (pas sécurisé du tout, mais c'est juste à titre informatif) :
Code: <?php En passant par http://localhost/page.php?dir=/, j'obtiens la liste des fichiers et dossiers à la racine du lecteur. Si ton répertoire www/ est sur le lecteur C:, en passant par /, tu peux accéder à tous les fichiers de manière relative, et donc faire : http://localhost/page.php?dir=/Windows/notepad.exe , à moins que le script ActiveX ne parcoure pas l'arborescence des fichiers à la manière de PHP. Titre: Re : [HTML/Javascript] Lancer une application locale Posté par: akway le 21 Août 2009 à 11:29:08 Salut !
Au risque de dire des conneries je vais essayer de te filer un p'tit coup de patte puisque ces derniers temps je passe le plus clair de mon temps à jouer à SF4 au taf . *bored* en vrac : je me doute que ce n'est pas la solution la plus class mais t'es il possible de modifier le path sur les pc de ton domaine ? ce qui resoudrait le probleme N°1 qui concerne les chemins relatifs/absolus. voir gruger en lancant un bat qui lui lancerai ton appli située ailleurs? (okok c'est archi crado) as tu essayé avec les variables d'environnement ? genre %APPDATA% pour cibler le program files. je ne sais pas s'il sera considéré comme relatif ou absolu dans le cas de ton script. pour le deuxieme souci, a voir avec les variables d'environnement, je cherche de mon coté. Titre: Re : [HTML/Javascript] Lancer une application locale Posté par: Iansus le 21 Août 2009 à 13:29:07 Dans ce cas là, reste à savoir si ActiveX reconnaît les variables d'environnement...
Sinon, si tu veux une manière hyper crade, tu te mets un sous-répertoire avec l'éxécutable de php (php.exe) et quelques dll. De la, tu lances un script php via le php.exe de la manière suivante : Code: <html> Et ton script PHP, de son côté lancera le fichier EXE trasmis urlencodé (pour éviter les espaces) comme ceci : Code: <?php En gros pour résumer : ta page lance php.exe qui appelle le script PHP avec pour argument le chemin vers l'exe final à lancer et le script PHP le lance. Script très sale, mais qui a des chances de marcher ^^ Titre: Re : [HTML/Javascript] Lancer une application locale Posté par: NiklosKoda le 21 Août 2009 à 17:45:02 Code: <?php Sapristi ! Avec un script comme ça ce serait peut être une bonne idée de faire une whitelist des exécutables autorisés...parce que là on peut faire une nouvelle épreuve dans la catégorie hacking :P (et même si ce n'est qu'une idée de départ, autant poser de bonnes bases dès le début ;) ) Titre: Re : [HTML/Javascript] Lancer une application locale Posté par: Iansus le 21 Août 2009 à 18:09:46 Bien entendu Niklos, mais c'était effectivement pour poser les bases.
Je laisse votre imagination vagabonder sur les multiples attaques via un tel script ^^ Titre: Re : Re : [HTML/Javascript] Lancer une application locale Posté par: The-Snake le 25 Août 2009 à 10:57:40 Normalement, en tout cas, c'est mon cas, quand je suis sur localhost (ou 127.0.0.1) et que j'exécute ce script (pas sécurisé du tout, mais c'est juste à titre informatif) : Mais dans ce cas, est-ce que je ne parcours pas l'arborescence du serveur et non celui du client ?Code: <?php En passant par http://localhost/page.php?dir=/, j'obtiens la liste des fichiers et dossiers à la racine du lecteur. Si ton répertoire www/ est sur le lecteur C:, en passant par /, tu peux accéder à tous les fichiers de manière relative, et donc faire : http://localhost/page.php?dir=/Windows/notepad.exe , à moins que le script ActiveX ne parcoure pas l'arborescence des fichiers à la manière de PHP. Sachant que du point de vue des utilisateurs de ce futur intranet, le serveur sera distant, ça poserait problème. Je me pose la question ? Quelles failles ce script poserait-il vraiment ? Après tout, le but est d'executer un programme sur un poste client depuis un poste client : le serveur n'est-il donc pas intouchable (rien ne se passe sur le serveur) ? Une faille ne pourrait venir que d'un webmaster malveillant uploadant un executable malveillant sur le PC client et le faisant ensuite s'executer, non ? Bref à bien y réfléchir, l'idée du bat me convient mieux. On pourrait même alors se passer de Javascript, un simple lien vers le bat, on demande de l'executer plutôt que de le télécharger et tout irait bien ? Titre: Re : [HTML/Javascript] Lancer une application locale Posté par: akway le 25 Août 2009 à 11:13:37 crado quand même ,
Cela implique une maintenance sur tous les postes du domaine dés qu'il faut rajouter une application sur ta plateforme de lancement. Sans parler de la répartition des droits au sein de l'entreprise(le gestionnaire de l' intranet qui à les droits d'admin des postes pour déployer son script)... mais cela ne doit pas être ton probleme majeur si tu travailles dans une petite/moyenne structure ou les taches sont centralisées. A voir donc. sujet 'achtment intéressant sinon. Titre: Re : [HTML/Javascript] Lancer une application locale Posté par: The-Snake le 01 Septembre 2009 à 14:07:50 La solution du bat devient peu envisageable finalement.
Le bat exexcuté ouvre une console et apparamment il est impossible de faire en sorte que le script s'execute sans que la console soit visible. Ce n'est pas génant pour moi mais ça troublera les utilisateurs de voir cette fenêtre toute noire apparaître, ils vont croire qu'ils ont fait une bétise. Cherchant sur google j'ai vu que le problème avait déjà perturbé pas mal de monde, mais la seule solution qui avait été envisagé est de non pas lancer l'executable en l'appelant directement mais en l'appelant par l'intérmediaire de la commande Start. Commande qui malheureusement n'a aucun autre effet qeu de lancer un nouveau terminal sans executer le binaire spécifié en argument. :( C'est quelque chose qui a l'air très simple vu de loin, mais c'est quand même vachement compliqué. Regretté execve... |