[R] NeufBox v. 4 Reboot Script - IExplorer

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
Mastersey
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 30 nov. 2008 12:24
Localisation : PACA
Status : Hors ligne

[R] NeufBox v. 4 Reboot Script - IExplorer

#1

Message par Mastersey »

Bonjour,

Mon premier script ne paie pas de mine... Depuis que j'ai découvert AutoIt (ce matin 02h00), j'essaie de faire quelque chose de tout bête: Redémarrer automatiquement ma neufbox v4.

Code : Tout sélectionner

Run("C:\Progra~1\Mozilla Firefox\firefox.exe", "", @SW_MAXIMIZE)
WinWaitActive("Google - Mozilla Firefox")
sleep(500)
MouseClick("left", 1600, 70, 1)
sleep(200)
Send("http://192.168.1.1/0_1")
Sleep(300)
Send("{Enter}")
Sleep(800)
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{ENTER}") 
Sleep(1800)
Send("!{F4}")
 
Il est 100% fonctionnel pour moi, mais j'aimerai le rendre utilisable par d'autre personnes...
Or là, mozilla firefox est indispensable, ainsi que la page d'accueil google, et encore plus improbable: le deuxième écran sur lequel s'ouvre mozilla (chez moi).

Comment faire pour rendre toute la manipulation universelle ?

*Lancer Mozilla firefox, ou IE si non installé
*Entrer l'adresse http://192.168.1.1/0_1 (sous mozilla OU ie, suivant celui qui a été lancé)
*Cliquer ou presser entrer sur le bouton Redémarrer de la page qui s'affiche
*Fermer

En fait c'est la fonction MouseClick qui me gène car elle ne marchera que chez moi, et le fait que Firefox soit indispensable.

Quelqu'un peut m'aider svp ? Cest surement quelque chose de très basique, mais plus j'essaie, plus je m'enfonce :/

Merci !
Modifié en dernier par Mastersey le dim. 07 déc. 2008 12:47, modifié 2 fois.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Aide script reboot neufbox4 - Mozilla Firefox et/ou IE

#2

Message par timmalos »

Salut Mastersey

Pour ton problème, tu va avoir besoin de l'udf IE.au3

Voici le script qui resoud ton problème (j'ai eu envie de le faire :))

Code : Tout sélectionner

#include <IE.au3>

$oIE = _IECreate ("http://192.168.1.1/0_1",0,1)
_IELoadWait($oIE);Permet d'attendre que la page soit lancée
Send("{Enter}")
_IELoadWait($oIE);Permet d'attendre que la page soit lancée
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{ENTER}")
_IELoadWait($oIE);Permet d'attendre que la page soit lancée
Send("!{F4}")

 
Maintenant, je n'ai pas de 9Box, donc je peux pas t'aider, mais ya suremeent moyen de faire ca caché, c'est à dire en mode invisible, ca pourrait etre interessant.
Mais pour ca, il faudrait que j'ai accès aux codes sources des pages. Pour le faire toi meme, tourne toi du coté des exemples de l'udf _IE, en appuyant sur F1 dans scite,
et des fonctions:

Code : Tout sélectionner

$oForm = _IEFormGetCollection ($oIE,0)
_IEFormElementGetObjByName ($oForm, "")
_IEFormSubmit($oForm)
Par exemple, la ou tu appuie sur Entrer, je pense qu'un simple :

Code : Tout sélectionner

$oForm = _IEFormGetCollection ($oIE,0)
_IEFormSubmit($oForm)
Marcherait

Si tu arrive a supprimer toutes les fonctions send(TAB) et Send(Enter) en les remplacant par des fonctions de _Ie, tu pourra alors remplacer le :

Code : Tout sélectionner

$oIE = _IECreate ("http://192.168.1.1/0_1",0,1)
Par

Code : Tout sélectionner

$oIE = _IECreate ("http://192.168.1.1/0_1",0,0)
pour lancer en mode invisible, sans qu'aucune fenetre ne s'ouvre ...
Avatar du membre
Mastersey
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 30 nov. 2008 12:24
Localisation : PACA
Status : Hors ligne

Re: [..] Aide script reboot neufbox4 - Mozilla Firefox et/ou IE

#3

Message par Mastersey »

Merci d'avoir répondu si vite timmalos,
je vais essayer de comprendre et faire tout ce que tu m'a dit, je posterai ensuite le résultat avec toutes les améliorations auxquelles tu a pensé !

:)
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [..] Aide script reboot neufbox4 - Mozilla Firefox et/ou IE

#4

Message par SagePourpre »

Juste une astuce ...

Tu peux remplacer

Code : Tout sélectionner

Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Par

Code : Tout sélectionner

Send("{TAB 9}")
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
Mastersey
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 30 nov. 2008 12:24
Localisation : PACA
Status : Hors ligne

Re: [..] Aide script reboot neufbox4 - Mozilla Firefox et/ou IE

#5

Message par Mastersey »

Merci ^^

Ça fera déjà moins moche :p

Edit: En regardant dans l'aide, je me perds un peu... le code de la page, enfin du bouton "redémarrer" de la page est:

Code : Tout sélectionner

<form method="post" action="/0_1">
<div class="button_submit"><button type="submit" name="submit">Red&eacute;marrer</button></div>
</form>
Si je ne me suis pas trompé ...

C'est possible de faire une action directement dessus ? Sans utiliser de TAB ?
Avatar du membre
Mastersey
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 30 nov. 2008 12:24
Localisation : PACA
Status : Hors ligne

Re: [..] Aide script reboot neufbox4 - Mozilla Firefox et/ou IE

#6

Message par Mastersey »

J'ai réussi à le faire ! ^^

Code : Tout sélectionner

#include <IE.au3>

$oIE = _IECreate ("http://192.168.1.1/0_1",0,0)
_IELoadWait($oIE)

$oSubmit = _IEGetObjByName ($oIE, "submit")
_IEAction ($oSubmit, "click")

[i][color=#FF0000]_IELoadWait($oIE)
Fermeture ?[/color][/i]

 
Il s'exécute bien en caché, en plus d'agir directement sur la fonction submit de la page.

Une question subsiste malgré tout (code coloré):

La fenêtre ouverte, même si elle est cachée, ne doit-elle pas être refermée une fois l'action terminée ?

Sinon ma prochaine étape, bien qu'optionnelle pour un script comme celui-là, est de prévenir la demande du login et du mot de passe d'accès à la configuration de la Box (par défaut: admin:admin)...

Merci! :)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Aide script reboot neufbox4 - Mozilla Firefox et/ou IE

#7

Message par Tlem »

Pour la fermeture de la fenêtre, vous pouvez utiliser ceci :

Code : Tout sélectionner

_IEQuit ($oIE)
En ce qui concerne la demande de login et de mot de passe, regardez simplement si l'objet Login ou mot de passe et présent dans la page (tout comme vous l'avez fait pour submit), ensuite vous devez savoir. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Mastersey
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 30 nov. 2008 12:24
Localisation : PACA
Status : Hors ligne

Re: [..] Aide script reboot neufbox4 - Mozilla Firefox et/ou IE

#8

Message par Mastersey »

Merci Tlem.

Voici donc où j'en suis:

Code : Tout sélectionner

#include <IE.au3>

$oIE = _IECreate ("http://192.168.1.1/0_1",0,0)
_IELoadWait($oIE)

;Authentification

$oForm = _IEFormGetObjByName ($oIE, "form_web_login")
$oText = _IEFormElementGetObjByName ($oForm, "web_login")
_IEFormElementSetValue ($oText, "admin")
$oForm = _IEFormGetObjByName ($oIE, "form_web_login")
$oText = _IEFormElementGetObjByName ($oForm, "web_password")
_IEFormElementSetValue ($oText, "admin")

_IEFormSubmit ($oForm, 0)
_IELoadWait($oIE)

;Redémarrage

$oSubmit = _IEGetObjByName ($oIE, "submit")
IEAction ($oSubmit, "click")
_IELoadWait($oIE)

_IEQuit ($oIE)
 
Dernière étape:

Faire en sorte que la partie "Authentification" ne s'exécute QUE lorsque la page qui s'ouvre avec $oIE = _IECreate ("http://192.168.1.1/0_1",0,1) s'appelle "neufbox - Authentification", sinon exécuter directement le "Redémarrage".

:-)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Aide script reboot neufbox4 - Mozilla Firefox et/ou IE

#9

Message par Tlem »

Regardez simplement après avoir chargé la page les objets disponibles.

Si _IEFormGetObjByName ($oIE, "form_web_login") ne vous retourne pas d'erreur, c'est que vous êtes dans la page login.
Donc vous faite le reste du code pour l'authentification, sinon vous allez direct au redémarrage.
Il vous faudra donc utiliser la condition IF.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Mastersey
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 30 nov. 2008 12:24
Localisation : PACA
Status : Hors ligne

Re: [..] Aide script reboot neufbox4 - Mozilla Firefox et/ou IE

#10

Message par Mastersey »

Euuhh :$

J'ai fait ce que tu m'a dis Tlem, ça marche, mais je suis pas sûr de moi du tout ^^
j'ai l'impression d'avoir fait quelque chose au pif, plein d'erreurs, mais qui bizarrement: marche !

Code : Tout sélectionner

#include <IE.au3>

;Lancement...

$oIE = _IECreate ("http://192.168.1.1/0_1",0,1)
_IELoadWait($oIE)

;Si...

If ($oIE, _IEFormGetObjByName) = "form_web_login" Then 
    $AuthNB, $RebootNB
Else
    $RebootNB
EndIf

;Authentification

Func _AuthNB($AuthNB)
$oForm = _IEFormGetObjByName ($oIE, "form_web_login")
$oText = _IEFormElementGetObjByName ($oForm, "web_login")
_IEFormElementSetValue ($oText, "admin")
$oForm = _IEFormGetObjByName ($oIE, "form_web_login")
$oText = _IEFormElementGetObjByName ($oForm, "web_password")
_IEFormElementSetValue ($oText, "admin")

_IEFormSubmit ($oForm, 0)
_IELoadWait($oIE)
EndFunc

;Redémarrage

Func _RebootNB($RebootNB)
$oSubmit = _IEGetObjByName ($oIE, "submit")
_IEAction ($oSubmit, "click")
_IELoadWait($oIE)
EndFunc

;Quitter

_IEQuit ($oIE)

 
Alors ? Je me suis trompé dans les If et les Func hein ? Vu que j'y connais rien...

J'en suis sûr! ^^

Merci pour votre aide en tout cas !
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] NeufBox v. 4 Reboot Script - IExplorer

#11

Message par timmalos »

Gagné :)

Correction:
► Afficher le texte
Avatar du membre
Mastersey
Niveau 1
Niveau 1
Messages : 8
Enregistré le : dim. 30 nov. 2008 12:24
Localisation : PACA
Status : Hors ligne

Re: [..] NeufBox v. 4 Reboot Script - IExplorer

#12

Message par Mastersey »

Héhé ^^ Je le savais ! :P

Merci timmalos !!

Je peux considérer que ma demande comme résolue je crois :)
dada79
Niveau 1
Niveau 1
Messages : 5
Enregistré le : sam. 03 janv. 2009 21:24
Status : Hors ligne

Re: [R] NeufBox v. 4 Reboot Script - IExplorer

#13

Message par dada79 »

Bonjour tout le monde !

Je suis tombé sur ce topic fort interessant et je tiens a remierçier tout d' abord ses auteur pour le travail accompli cependant en essayant le code indiqué je me suis aperçu qu'il y avais une petite erreur dans le test de la structure conditionnel je me suis donc permis de faire la correction je mets donc pour ceux que ça interesse le code qui fonctionne .

Code : Tout sélectionner

#include <IE.au3>

;Lancement...

$oIE = _IECreate ("http://192.168.1.1/0_1",0,1)
_IELoadWait($oIE)

;Si...

If _IEFormGetObjByName ($oIE, "form_web_login") <> 0 Then 
    _AuthNB()
    _RebootNB()
Else
    _RebootNB()
EndIf

;Authentification

Func _AuthNB()
$oForm = _IEFormGetObjByName ($oIE, "form_web_login")
$oText = _IEFormElementGetObjByName ($oForm, "web_login")
_IEFormElementSetValue ($oText, "admin")
$oForm = _IEFormGetObjByName ($oIE, "form_web_login")
$oText = _IEFormElementGetObjByName ($oForm, "web_password")
_IEFormElementSetValue ($oText, "admin")

_IEFormSubmit ($oForm, 0)
_IELoadWait($oIE)
EndFunc

;Redémarrage

Func _RebootNB()
$oSubmit = _IEGetObjByName ($oIE, "submit")
_IEAction ($oSubmit, "click")
_IELoadWait($oIE)
EndFunc

;Quitter

_IEQuit ($oIE)
voila bon c'est surement pas parfait comme test mais c'est le seul myen que j'ai trouver pour valider le test .
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [R] NeufBox v. 4 Reboot Script - IExplorer

#14

Message par timmalos »

Petite amélioration:

Code : Tout sélectionner

#include <IE.au3>
$oIE = _IECreate("http://192.168.1.1/0_1", 0, 1, 1)
If _IEFormGetObjByName($oIE, "form_web_login") <> 0 Then _AuthNB()
_RebootNB()

Func _AuthNB()
    If FileExists(@ScriptDir & "\parametres.ini") Then
        Global $login = IniRead(@ScriptDir & "\parametres.ini", "9BOX", "login", "admin"), $password = IniRead(@ScriptDir & "\parametres.ini", "9BOX", "password", "admin")
    Else
        Global $login = InputBox("Script de Reboot 9BOX", "Veuillez Renseigner votre login", "admin")
        IniWrite(@ScriptDir & "\parametres.ini", "9BOX", "login", $login)
        Global $password = InputBox("Script de Reboot 9BOX", "Veuillez Renseigner votre password", "admin", "*")
        IniWrite(@ScriptDir & "\parametres.ini", "9BOX", "password", $password)
    EndIf
    $oForm = _IEFormGetObjByName($oIE, "form_web_login")
    $oText = _IEFormElementGetObjByName($oForm, "web_login")
    _IEFormElementSetValue($oText, $login)
    $oText = _IEFormElementGetObjByName($oForm, "web_password")
    _IEFormElementSetValue($oText, $password)

    _IEFormSubmit($oForm, 0)
    _IELoadWait($oIE)
EndFunc   ;==>_AuthNB

Func _RebootNB()
    $oSubmit = _IEGetObjByName($oIE, "submit")
    _IEAction($oSubmit, "click")
    _IELoadWait($oIE)
    _IEQuit($oIE)
EndFunc   ;==>_RebootNB
 
dada79
Niveau 1
Niveau 1
Messages : 5
Enregistré le : sam. 03 janv. 2009 21:24
Status : Hors ligne

Re: [R] NeufBox v. 4 Reboot Script - IExplorer

#15

Message par dada79 »

merçi timmalos en effet c'est nettement mieux de permettre la saisie du login et password via un fichier .ini ;)
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [R] NeufBox v. 4 Reboot Script - IExplorer

#16

Message par timmalos »

Il faudrait rajouter un SctringEncrypt pour le mot de passe, car la on le stocke lisiblement, c'est pas top .
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [R] NeufBox v. 4 Reboot Script - IExplorer

#17

Message par tolf »

timmalos a écrit :Il faudrait rajouter un SctringEncrypt pour le mot de passe, car la on le stocke lisiblement, c'est pas top .
C'est un minimum à faire, mais il faut toujours faire attention à ceci : http://www.autoitscript.fr/forum/viewto ... f=3&t=1192
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [R] NeufBox v. 4 Reboot Script - IExplorer

#18

Message par timmalos »

String Encrypt est une protection vraiment minimale, il n'y a pas besoin de decompiler le script pour trouver le texte decrypté, avec un algorithme simple de cryptage, sans force brute.
Mais le mot de passe est stocké dans un .ini et je pense qu'il n'est pas possible d'acceder par internet à la page de login, il suffit donc de le proteger de la vue, je pense.
dada79
Niveau 1
Niveau 1
Messages : 5
Enregistré le : sam. 03 janv. 2009 21:24
Status : Hors ligne

Re: [R] NeufBox v. 4 Reboot Script - IExplorer

#19

Message par dada79 »

timmalos a écrit :Il faudrait rajouter un SctringEncrypt pour le mot de passe, car la on le stocke lisiblement, c'est pas top .
tu veus dire on le lit facilement ou ? dans le fichier ini , ça parrait normal je vois pas trop comment on peut le crypter ...
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [R] NeufBox v. 4 Reboot Script - IExplorer

#20

Message par timmalos »

Disons qu'au lieu de voir $password = Toto
On verra $password = EC4F5GDA7P01
Répondre