Perl: POST formulaire, attention je vous pose une colle !

Fermé
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 - 25 mars 2014 à 11:36
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 - 26 mars 2014 à 11:09
Bonjour !!

voila je suis confronté à un petit problème en perl, j'aimerais faire un petit robot qui me permet de récupérer des sauvegardes sur une application web (c'est pour ma boite, pour un peu plus d'info, j'ai une interface web sur un ipbx qui permet de faire des backup mais la mains uniquement, pas de scheduler... du coup sur 80 machines tout les jours, c'est pas la joie) <= petite explication pour justifier que mon robot n'est pas à des fins de "piratage" afin d'éviter les posts bidon du genre "ici on aide pas les mechant pipi pirate"

Maintenant le problème à moitier posé, je continue.

mon problème est que dès le début je suis embêté avec le fait que le formulaire de connexion ne contient pas la balise <form>, du coup je suis embêté pour remplir les input.

Quelqu'un à déjà eu à faire à cette situation ?

l'interface de mes ipbx est dev en java je pense, ca tourne sur du tomcat (mais je ne suis pas un pro dans ce genre de technologie)

Pour info je n'ai pas accès en ssh a la machine, le constructeur ne le permet pas.

Merci d'avance :)

A voir également:

1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
25 mars 2014 à 14:30
Salut LezardMoo,

Tu pourrais inspecter le trafic http généré par l'usage de l'applet Java (en espérant que ce n'est pas du https), et répliquer son fonctionnement pour faire la même chose depuis Perl avec WWW::Mechanize.

Si son fonctionnement est trop opaque, je ne crois pas que Perl puisse intéragir avec la machine virtuelle Java pour piloter le fonctionnement de l'applet (et je ne crois pas que cela soit faisable non plus dans d'autres langages d'ailleurs, y compris Java, mais tu pourrais poser la question à des développeurs Java).

Une autre solution serait de créer un script automatisant l'envoi de touches du clavier à la fenêtre du navigateur. Tu n'auras pas trop de contrôle, car les éléments d'interface ne seront certainement pas identifiables, mais au moins tu pourras envoyer des touches "à l'aveugle" (naviguer avec tabulations, etc.).

Tu peux faire cela avec Perl, avec Win32-GuiTest pour Windows ou X11::GUITest pour Linux.

Ou tu peux utiliser des outils dédiés à ce type de choses.

Par exemple :

- sous Windows Autoit peut faire cela
- sous Linux, Autokey-gtk.

Ou alors, tu te plains à l'éditeur du logiciel, ou au constructeur de l'ipbx, qui fait des interfaces à la noix, et qui a peut-être un outil pour faire ce genre de choses, ou une solution maison à te proposer pour un usage "sérieux" de leur produit.


Dal
0
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 14
25 mars 2014 à 18:32
Tu gères toujours Dal,

Alors en fait ma boite a déjà acheté un outil (fait meme par le constructeur des ipbx en question, mais sous un autre nom) or il apparait que les backups fait avec cette appli ne sont pas valides... soit pas backupé tout court soit backup mais lors de la restauration, echec.
Je suis sur un autre piste, il y aurait un port attaquable en RAW or je crois n'avoir jamais utilisé ce type de connexion, a part dans putty que je n'utilise pas.
Je vais donc chercher dans cette direction, mais je vais aussi explorer les tiennes qui m'interessent.

Merci :)
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
25 mars 2014 à 18:36
ok, pas de pb.

bon courage :-)
0
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 14
25 mars 2014 à 23:53
C'est marrant X11::GUITest je vais essayer de pousser la chose mais c'est pas courant un script comme ca en prod ^^
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 26/03/2014 à 10:56
L'ennui c'est qu'il faut que X soit en cours d'exécution, ce qui rend difficile l'automatisation.

Sinon, en production, je n'ai pas non plus de tels bricolages.

Par contre, j'ai eu un pb similaire au tien avec un routeur, qui ne proposait qu'une interface Web avec du javascript, et des requêtes Ajax. J'ai testé des scripts expect qui se loguent sur des routeurs pour intéragir avec l'interface Web. C'est du html et javascript, exécuté avec le navigateur texte elinks qui peut exécuter des scripts ECMA (avec le moteur SpiderMonkey de Gecko).

Cela marche, mais ce n'est cependant pas très robuste.

J'ai fini par utiliser Firebug pour inspecter les cookies, les requêtes http générées, et reproduire le fonctionnement avec un script bash utilisant curl. Et comme cela, cela tourne comme une horloge :-)

Dans ton cas, il faudrait peut-être un sniffeur pour voir passer les requêtes générées par l'applet Java, voire utiliser un outil Java dédié à l'inspection de ce type d'applications. Peut-être quelque chose comme http://www.swingexplorer.com/ (mais je ne suis pas expert en Java) pourrait aussi t'aider, ou un décompilateur Java. Tu devrais poser la question à un spécialiste Java.


Dal
0
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 14
26 mars 2014 à 11:09
Je partais avec expect avant de voir que je n'avais pas de ssh, je ne savais pas que expect pouvait servir pour de l'interface web.

Pour décompiler le Java c'est déjà testé avec eclipse mais je n'ai quasiment que des .class
bien compilé donc je n'ai pas réussi à voir grand chose...

Pour le sniffer je pensais me faire un petit poste de TP et prendre le temps de tester tout ca mais... on doit bosser comme des chinois donc pas le temps de me poser dessus :/
0