• Forums
  •  » Livebox 2
  •  »  Script pour piloter l'interface web ( licence GPL)

#1 08-01-2011 22:06:47

teebeenator
Membre
Date d'inscription: 08-01-2011
Messages: 61

Script pour piloter l'interface web ( licence GPL)

Bonjour,

J'ai fait un script pour piloter l'interface web de la livebox2 SAGEM. Il repond a mes besoins.

Si ca vous interesse..
Avec un environement perl et les librairies WWW::Mechanize::Sleepy, Getopt::Long, Pod::Usage, Digest::MD5 ca fonctione sur linux, windows et mac.

exemples:

Display adsl info
livebox.pl -page=infosys_adsl -v  | html2text

Change wireless mode to 2 (b/g)
livebox.pl -page=wireless mode=2

Reboot
livebox.pl -page=reboot action=submit action=reboot

Stop broadcasting SSID, set WPA2-PSK (AES) and activate MAC filtering
livebox.pl -page=wireless broadcast=0,securitymode=6,macfiltering=1

Change WPA Passphrase to 12345678
livebox.pl -page=wireless key=12345678

Il y a aussi une version exe (en console donc) pour windows: livebox.exe
Pour verifier l'authenticité de l'exe, voici les sommes de controles MD5 et SHA256
0e0ade5c09e5875365cf179dd18f19e5 
03582feedf1f335afadc15f3e2d7023a28ff9f72fe4e412e2b67b425a0918391

Code:

#!/usr/bin/perl 
use warnings;
use strict;
=head1 livebox.pl

Control Livebox 2

=cut

use Getopt::Long;
use WWW::Mechanize::Sleepy "Sleepy";
use Pod::Usage;
use Digest::MD5 "md5";

my ( $user, $passwd ) = ( 'admin', 'admin' );
my $ip = '192.168.1.1';
my $page;
my ( $verbose, $progress ) = ( 0, 0 );

GetOptions(
    'user=s'   => \$user,
    'pass=s'   => \$passwd,
    'ip=s'     => \$ip,
    'page=s'   => \$page,
    'progress' => \$progress,
    'verbose'  => \$verbose,
    help       => sub { pod2usage( verbose => 2 ); },
) or pod2usage( verbose => 2 );

=head1 SYNOPSIS

livebox.pl [opt] [key=value,key=value, ...] [key=value,key=value, ...] 
 opt:
   --user=user            Set the username (defaults to admin)
   --pass=pass            Set the password (defaults to admin)
   --ip=ip                IP address of equipment (defaults to '192.168.1.1')
   --page=page            Which page(s) to GET after index
   --progress             Print Progress state
   --verbose              Print html traffic
   --help                 Show this message
=cut

my $mech = WWW::Mechanize::Sleepy->new( cookie_jar => undef, autocheck => 1, show_progress => $progress, timeout => 10, sleep => 1) or die("mech");

if ($verbose) {
    $|++;
    $mech->add_handler( "request_send", sub { print ">" x 80, "\n", shift->as_string; return } );
    $mech->add_handler( "response_done", sub { print "<" x 80, "\n", shift->as_string; return } );
}

warn "Trying to connect to $ip ...\n";

#LB2
#Record Session Id
$mech->get("http://$ip");
my $sessionid = $mech->value('sessionid');
#Hash password with authkey
my $authmd5passwd = unpack( 'H*', md5( unpack( 'H*', md5($passwd) ) . $mech->value('authkey') ) );
#Post Form to Authenticate
$mech->submit_form( with_fields => { authlogin => $user, authmd5passwd => $authmd5passwd } );

#Get the page if requested, otherwise exit
$page or exit;
$mech->get("http://$ip/index.cgi?page=$_&sessionid=$sessionid") for split m/,/, $page;

#Post Form as many times as requested
while ( my $values = shift ) {
    my %fields = map { m/^(.*?)=(.*)$/ } split m/,/, $values;
    $mech->submit_form( with_fields => \%fields );
}

=head1 EXAMPLES

=over 3

=item Display sys info

livebox.pl -page=infosys_main -v  | html2text

=item Display adsl info

livebox.pl -page=infosys_adsl -v  | html2text

=item Change wireless mode to 2 (b/g)

livebox.pl -page=wireless mode=2 

=item Reboot

livebox.pl -page=reboot action=submit action=reboot

=item Stop broadcasting SSID, set WPA2-PSK (AES) and activate MAC filtering

livebox.pl -page=wireless broadcast=0,securitymode=6,macfiltering=1

=item Change WPA Passphrase to 12345678

livebox.pl -page=wireless key=12345678

=back
=cut

Dernière modification par teebeenator (29-03-2012 19:45:47)

Hors ligne

 

#2 09-01-2011 09:04:50

Hammett
Avant FONO j'avais une vie
Lieu: Colombes
Date d'inscription: 29-05-2008
Messages: 36154

Re: Script pour piloter l'interface web ( licence GPL)

Bonjour,

Merci pour ce tuto. wink


"La prédiction est un exercice très compliqué, spécialement quand elle concerne le futur." Niels Bohr, Prix Nobel de physique 1922

Hors ligne

 

#3 09-01-2011 11:32:46

JoeKer
Modérateur
Lieu: A l'Ouest à nouveau ...
Date d'inscription: 26-03-2008
Messages: 35091
Site web

Re: Script pour piloter l'interface web ( licence GPL)

Bonjour.

J'épingle smile


LB2(FW SG20_h323-fr-3.69.16.2) + UHD86 (FW2.04.13) + WE-Record - Offre 8 Méga Max + TV + ViewPad7 + Nokia C2-05
On a déjà vu des choses qui ne sont jamais arrivées ...

Hors ligne

 

#4 12-01-2011 21:38:20

ramatus
On est bien ici
Lieu: pas de calais
Date d'inscription: 17-01-2009
Messages: 386

Re: Script pour piloter l'interface web ( licence GPL)

Bonsoir !

Super bien pour la sécurité ton Script JoeKer
mais je ne comprends pas tout !

Apparemment il sagit d'une instalation avec la console (Ubuntu ' chez moi )

Mais pourquoi ce premier cadre
Display sys info
    ./livebox.pl -v -pa=infosys_main | html2text
    Display adsl info
    ./livebox.pl -v -pa=infosys_adsl | html2text
    Change wireless mode to 2 (b/g)
    ./livebox.pl mode=2 —page=wireless
    Stop broadcasting SSID, set WPA2-PSK (AES) and activate MAC filtering
    ./livebox.pl -pa=wireless broadcast=0,securitymode=6,macfiltering=1
    Change WPA Passphrase to 12345678
    ./livebox.pl -pa=wireless key=12345678
    Reboot livebox
    ./livebox.pl action=submit action=reboot —page=reboot

puis ensuite les lignes de code
installées dans #!/usr/bin/perl

y a t'il une installation pour les 2 ?


Livebox 2-longueur de ligne : 660 mètres affaiblissement théorique : 9.9 dB

Hors ligne

 

#5 12-01-2011 21:57:09

JoeKer
Modérateur
Lieu: A l'Ouest à nouveau ...
Date d'inscription: 26-03-2008
Messages: 35091
Site web

Re: Script pour piloter l'interface web ( licence GPL)

Bonsoir ramatus !

Désolé, mais je crois que tu fais erreur sur l'auteur du script smile


LB2(FW SG20_h323-fr-3.69.16.2) + UHD86 (FW2.04.13) + WE-Record - Offre 8 Méga Max + TV + ViewPad7 + Nokia C2-05
On a déjà vu des choses qui ne sont jamais arrivées ...

Hors ligne

 

#6 12-01-2011 22:05:52

ramatus
On est bien ici
Lieu: pas de calais
Date d'inscription: 17-01-2009
Messages: 386

Re: Script pour piloter l'interface web ( licence GPL)

Effectivement, il va falloir que je change mes lunettes !
je repose donc la question a teebeenator


Livebox 2-longueur de ligne : 660 mètres affaiblissement théorique : 9.9 dB

Hors ligne

 

#7 13-01-2011 10:14:55

teebeenator
Membre
Date d'inscription: 08-01-2011
Messages: 61

Re: Script pour piloter l'interface web ( licence GPL)

Salut Ramatus.


Pour utiliser le script (livebox.pl), il faut sauver la partie 'code' (qui commence par #!/usr/bin/perl) dans un fichier puis le rendre executable (chmod +x livebox.pl)

Ensuite il faut un environnement perl
sudo aptitude install perl
(aptitude ou autre package manager)
et installer les modules perl utilisés par le script, en console:
sudo cpan
install WWW::Mechanize::Sleepy
(repondre y[es] a toutes les questions, attendre la fin!) puis les autres:
install Getopt::Long
install Pod::Usage
install Digest::MD5

Pour les accès en lecture (demande d'info sur une des pages de la lb2), il faudra rajouter l'outil html2text
sudo aptitude install html2text

Ensuite, il faut lancer le script..  (plus besoin de sudo).
L'aide:
./livebox.pl --help

Pour les personnes sous windows,
Vous pouvez utiliser le .exe. Les options sont les memes mais il y a certaines differences entre cmd.exe et bash (sequence d'echappement,..) Il faudra une autre solution pour html2text: je ne sais pas ou le trouver et surtout il y a un problème d'encodage. Passer par wshell ou autre (je laisse les experts windows faire)
Le plus propre est d'utiliser le script. Pour avoir perl sous windows, il faut installer strawberry perl.

Dernière modification par teebeenator (27-08-2011 16:32:09)

Hors ligne

 

#8 13-01-2011 19:27:33

teebeenator
Membre
Date d'inscription: 08-01-2011
Messages: 61

Re: Script pour piloter l'interface web ( licence GPL)

Petite mise à jour du script pour pouvoir, entre autre, passer directement le mot de passe:

Dernière modification par teebeenator (01-09-2011 00:01:57)

Hors ligne

 

#9 13-01-2011 23:18:29

ramatus
On est bien ici
Lieu: pas de calais
Date d'inscription: 17-01-2009
Messages: 386

Re: Script pour piloter l'interface web ( licence GPL)

Bonsoir! teebeenator

Merci pour ta réponse je vais voir si je peux l'utiliser sur mon
portable Ubuntu

Bonne soirée


Livebox 2-longueur de ligne : 660 mètres affaiblissement théorique : 9.9 dB

Hors ligne

 

#10 24-08-2011 14:33:17

Mister-Max
On est bien ici
Date d'inscription: 28-01-2010
Messages: 459
Site web

Re: Script pour piloter l'interface web ( licence GPL)

Lien HS !


http://www.univers-orange.com/signature/4zA21H5Pgg-PA9ax5JGtcGCtZvQ.png
Fixe+Internet+TVsat/LiveBox 3 SG30_h323-fr-4.28.35.2 + UHD87Sat 31.73.25

Hors ligne

 

#11 27-08-2011 16:23:07

teebeenator
Membre
Date d'inscription: 08-01-2011
Messages: 61

Re: Script pour piloter l'interface web ( licence GPL)

J'ai corrigé deux trois petites choses . La derniere version de l'exe je ne l'ai plus, il faut que j'en refasse une. Ca prendra qq jours..

Dernière modification par teebeenator (27-08-2011 17:40:38)

Hors ligne

 

#12 27-08-2011 18:08:10

Electro-X
Je viens d'arriver !
Date d'inscription: 27-08-2011
Messages: 1

Re: Script pour piloter l'interface web ( licence GPL)

Bonjour
Tout d'abord merci pour ce super travail.
Je voudrais savoir si quelqu'un avait testé ce script ou le exe sous Windows??
Car j'ai quelque problème pour l'exécuter il m'indique une erreur avec mechaze::sleepy.
EDIT : peut tu poster la dernière version du script merci

Dernière modification par Electro-X (27-08-2011 19:29:52)

Hors ligne

 

#13 02-09-2011 18:16:06

teebeenator
Membre
Date d'inscription: 08-01-2011
Messages: 61

Re: Script pour piloter l'interface web ( licence GPL)

Voilà, j'ai mis à jour le post initial. Rajouté la documentation et les exemple DANS le code, on peut les voir avec --help et corrigé un pti bug.
Ca devrait marcher smile

Hors ligne

 

#14 07-03-2012 12:00:09

meldrak
Je viens d'arriver !
Lieu: Mezy Moulins
Date d'inscription: 30-07-2009
Messages: 13
Site web

Re: Script pour piloter l'interface web ( licence GPL)

pas mal ce script je viens de le tester

par contre y a t'il moyen de desactiver  / activer le wifi avec?


http://www.univers-orange.com/signature/o-q7gaHSGz9yuGgn__V731Cclik.png

Hors ligne

 

#15 08-03-2012 22:27:49

teebeenator
Membre
Date d'inscription: 08-01-2011
Messages: 61

Re: Script pour piloter l'interface web ( licence GPL)

oui biensur

pour desactiver le wifi:
./livebox.pl -page=wireless wifistatus=0

pour le reactiver (depuis l'ethernet donc..) , tu mets 1

Hors ligne

 

#16 08-03-2012 22:39:46

meldrak
Je viens d'arriver !
Lieu: Mezy Moulins
Date d'inscription: 30-07-2009
Messages: 13
Site web

Re: Script pour piloter l'interface web ( licence GPL)

merci bien j'ai plus qu'a programmer ma tache cron clin_oeil_up


http://www.univers-orange.com/signature/o-q7gaHSGz9yuGgn__V731Cclik.png

Hors ligne

 

#17 08-03-2012 22:44:19

JoeKer
Modérateur
Lieu: A l'Ouest à nouveau ...
Date d'inscription: 26-03-2008
Messages: 35091
Site web

Re: Script pour piloter l'interface web ( licence GPL)

Bonsoir.

Effectivement, ça aide smile

Dommage, avec le prochain firmware (Soft@Home), tout sera à remettre sur la planche sad


LB2(FW SG20_h323-fr-3.69.16.2) + UHD86 (FW2.04.13) + WE-Record - Offre 8 Méga Max + TV + ViewPad7 + Nokia C2-05
On a déjà vu des choses qui ne sont jamais arrivées ...

Hors ligne

 

#18 08-03-2012 23:00:39

meldrak
Je viens d'arriver !
Lieu: Mezy Moulins
Date d'inscription: 30-07-2009
Messages: 13
Site web

Re: Script pour piloter l'interface web ( licence GPL)

ha c'est prévu qd ça? mais la programmation du wifi sera peut être rajouté? comme sur ZTE


http://www.univers-orange.com/signature/o-q7gaHSGz9yuGgn__V731Cclik.png

Hors ligne

 

#19 08-03-2012 23:07:38

JoeKer
Modérateur
Lieu: A l'Ouest à nouveau ...
Date d'inscription: 26-03-2008
Messages: 35091
Site web

Re: Script pour piloter l'interface web ( licence GPL)

C'est prévu pour ... bientôt (on n'en sait pas plus).

Normalement, les fonctions devraient être identiques à celles de la ZTE ... Les bugs aussi sad

La programmation du Wi-Fi devrait en faire partie (des nouveautés et des bugs).

Mais le programme de teebeenator ne devrait plus fonctionner .


LB2(FW SG20_h323-fr-3.69.16.2) + UHD86 (FW2.04.13) + WE-Record - Offre 8 Méga Max + TV + ViewPad7 + Nokia C2-05
On a déjà vu des choses qui ne sont jamais arrivées ...

Hors ligne

 

#20 08-03-2012 23:27:14

meldrak
Je viens d'arriver !
Lieu: Mezy Moulins
Date d'inscription: 30-07-2009
Messages: 13
Site web

Re: Script pour piloter l'interface web ( licence GPL)

merci pour les infos


http://www.univers-orange.com/signature/o-q7gaHSGz9yuGgn__V731Cclik.png

Hors ligne

 

#21 28-03-2012 17:14:21

gnujsa
Je viens d'arriver !
Date d'inscription: 28-03-2012
Messages: 3

Re: Script pour piloter l'interface web ( licence GPL)

JoeKer: non, ce script risque de marcher encore longtemps... avec d'éventuelles minuscules modifications. (pour la partie "écriture")
En faite, même, ce script devrait marcher avec n'importe quelle box qui fournit une administration par "page web", en changeant 2/3 valeurs à l'intérieur. Il pourrait aussi servir à d'autres choses, comme poster automatique des messages sur www.forum-orange.com ! (Le module WWW::Mechanize est très utilisé pour faire des robots web)
Pour la "lecture" des valeurs, c'est encore plus simple: on a même pas besoin du script: des outils comme curl ou wget associés html2text font l'affaire. Par exemple, (sous linux), cette commande affiche la page "Information système":

wget --user=admin --password=admin 'http://192.168.1.1/index.cgi?page=infosys_main' -O -|html2text


teebeenator: Tout d'abord merci pour le script. Ensuite, il n'est pas utile de préciser aux utilisateurs d'ubuntu d'installer perl, car il est toujours installé. Il fait partie des programmes tagguer "required" et "Essential" (Celà vient de Debian, et cela risque donc de concerner une majorité de distribution linux). Il en va de même pour les modules Getopt::Long Pod::Usage Digest::MD5, qui sont inclus dans perl. En faite, il est pas trop conseillé de les installer via le cpan, car ces versions, installer localement, ne seront pas mise à jour automatiquement, ce qui augure des problèmes dans le futur (et pas qu'avec livebox.pl)
Le seul module qui réclame cpan, c'est WWW::Mechanize::Sleepy. Mais pourquoi avoir utilisé ce module ? La version "classique" (WWW::Mechanize) fonctionne très bien avec la box. La version "Sleepy", c'est pour faire les choses lentement, comme un humain. Le gros problème de ce module c'est qu'il n'est pas couramment paquagé dans les distrib', contrairement à WWW::Mechanize
(qui donc sera mis à jour automatiquement, et dont la version restera cohérente avec la version de perl installé).

J'ai donc fait une petite modif' pour n'utiliser que le vénérable WWW::Mechanize, au lieu du fainéant WWW::Mechanize::Sleepy


** Ligne 11: remplacer

use WWW::Mechanize::Sleepy "Sleepy";

par

use WWW::Mechanize;

** Ligne 43: remplacer

my $mech = WWW::Mechanize::Sleepy->new( cookie_jar => undef, autocheck => 1, show_progress => $progress, timeout => 10, sleep => 1) or die("mech");

par

my $mech = WWW::Mechanize->new( cookie_jar => undef, autocheck => 1, show_progress => $progress, timeout => 10, sleep => 1) or die("mech");


Et maintenant, les utilisateurs de Debian (ou d'une dérivée comme ubuntu), n'ont a installer que libwww-mechanize-perl :

sudo apt-get install libwww-mechanize-perl

Ça ne changera pas gras chose pour les utilisateurs de windows.

Hors ligne

 

#22 28-03-2012 17:35:41

patrick_91
Avant FONO j'avais une vie
Lieu: Essonne 91
Date d'inscription: 19-09-2008
Messages: 8959
Site web

Re: Script pour piloter l'interface web ( licence GPL)

Hi Diabolique, je viens de copier coller,

wget --user=admin --password=admin 'http://192.168.1.1/index.cgi?page=infosys_main' -O -|html2text

Dans une console ssh ouverte sur mon système linux ... en effet ça fait peur  ...
A plus


Patrick Essonne 91
Livebox 2, firmware: FAST3XXX_681496 remplacée par FAST3XXX_6814AE puis par FAST3XXX_6814BC(What's new ?)

Hors ligne

 

#23 28-03-2012 18:37:13

gnujsa
Je viens d'arriver !
Date d'inscription: 28-03-2012
Messages: 3

Re: Script pour piloter l'interface web ( licence GPL)

Et bien, ce qui fait peur, c'est surtout de laisser les identifiants à leurs valeurs par défauts (admin/admin) !
Après que ce soit un script ou être humain qui modifie la box, ça change pas trop. Il faut se méfier de l'excès de confiance que l'on pourrait avoir si l'on a pas coché "Administration à distance", car ces notions de distant/local sont relatives: distant, ça veut dire "directement distant", mais via une connexion sur une machine local (par exemple ssh), ça ne sera plus vue comme une connexion distante par la box.

Hors ligne

 

#24 28-03-2012 19:41:46

patrick_91
Avant FONO j'avais une vie
Lieu: Essonne 91
Date d'inscription: 19-09-2008
Messages: 8959
Site web

Re: Script pour piloter l'interface web ( licence GPL)

hi pour ce qui me concerne il y a belle lurette que le plan d'adressage réseau n'est pas le plan standard ainsi que le login .. mais ça c'est l'abc  ...

Dernière modification par patrick_91 (28-03-2012 19:42:31)


Patrick Essonne 91
Livebox 2, firmware: FAST3XXX_681496 remplacée par FAST3XXX_6814AE puis par FAST3XXX_6814BC(What's new ?)

Hors ligne

 

#25 28-03-2012 19:57:10

teebeenator
Membre
Date d'inscription: 08-01-2011
Messages: 61

Re: Script pour piloter l'interface web ( licence GPL)

Salut tout le monde

Oui effectivement ce script est très générique, on peut l'utilise pour d'autres choses. Il aurait pu s'appeler web.pl .. C'est pourquoi dans cette version on voit #LB2 puisque les lignes en dessous concernant le login sont tout de même un peu specifique à la LB2.
Après, les lignes get et post_form sont réutilisables à souhait.

Lors de mes tests, le serveur web avait un léger temps de latence et certaines POST en rafale pouvaient ne pas être pris en compte. Au début j'avais mis des sleep entre les appels à mechanize jusqu'a ce que je decouvre Sleepy dont la seule utilité est de rajouter une attente automatique à chaque appel de Mechanize. Sans les mains.
Dans cette ligne : my $mech = WWW::Mechanize->new( cookie_jar => undef, autocheck => 1, show_progress => $progress, timeout => 10, sleep => 1) or die("mech");
je ne sais pas si c'est une erreur de copié coller mais le paramètre sleep=>1 ne sera pas utilisé par Mechanize donc il n'y aura effectivement pas d'attente. Donc certaines opérations, comme le reboot qui necessite 2 appels au while (rebooter, confirmation) risquent de ne pas marcher. En tout cas chez moi, ca m'est arrivé. Beaucoup de chose influe sur le timing donc chez d'autres, ca peut ne pas se presenter.

Ensuite, j'ai pas voulu être raciste, j'ai donné les prérequis pour toutes les architectures et pour toutes les distrib. Biensur sous debian (que j'utilise), pas besoin d'installer perl (puisque perl-base est le coeur du système de gestion des paquets sous debian). Sous Redhat, pas sûr que perl soit toujours là.

Concernant l'utilisation de CPAN ou des modules packagés pour la distrib. L'avantage tu as raison c'est que les updates se feront. En meme temps, si ca marche, ca marche smile Le cas mise à jour de sécurité, on s'en fout un peu comme ca tourne pas sur un serveur. Le gros inconvenient c'est que certaines distrib (redhat et consors) font n'importe quoi avec l'integration de perl (commentaires des mainteneurs de perl, pas les miens)
C'est pourquoi ces gens-là conseillent toujours d'utiliser CPAN et d'eviter les modules packagés par les distrib. Et je fais pareil. En pratique sur debian (et probablement ubuntu) c'est très bien fait mais toujours dans le soucis de faire marcher sur tout type de machine, j'ai préconisé cpan.

Et mon utilisation initiale du script était sous windows (via Strawberry perl) donc pas le choix.
Il tourne aussi sur iphone (pour le fun), sur ma tablette android et sur mon pc (sous debian of course)

L'avantage du libre c'est que tu peux modifier ce que tu veux et tu n'es pas forcé d'utiliser ma méthode.

Quand les nouveaux firmwares arriveront (en Aout qui disaient mais quelle année?), on avisera s'il faut modifier.

En fait avec curl, on pourrait remplacer ce script par 2 lignes. Avec curl, on peut tout refaire (envoyer des GET, des POST, des FORMs..) .Un exemple assez complexe:
curl -s -F "param1=foobar" -F "param2=@/etc/passwd" -F "param3=admin" www.example.com/test.php
Cette commande envoi le fichier /etc/password dans un FORM en passant aussi param1=foobar et param3=admin.
Donc une ligne pr l'authkey et une autre pour l'action.


Merci pour les commentaires, ca fait plaisir smile

Hors ligne

 

  • Forums
  •  » Livebox 2
  •  »  Script pour piloter l'interface web ( licence GPL)

Powered by PunBB
© Copyright 2002–2008 PunBB