Merci du partage! Je vais essayer de refaire ton code mais dans un autre langage (Python).
Hors ligne
mercii pour le scipte
y'a t il un scripte de configuration pour livebox 2 sp FAST3yyy_MRA_69288
pppoe
rg_conf_set /dev/ethoa6/atm/pvc/0/vci 35
rg_conf_set /dev/ethoa6/atm/pvc/0/vpi 8
rg_conf_set /dev/ppp0/username : cai0013
rg_conf_set_obscure /dev/ppp0/password cai0013
et merci d'avance
Hors ligne
Bonjour à tous,
J'utilisais le script Perl (Livebox2.pl) depuis mai 2013 sans aucun problème, mais depuis mon passage vers le dernier firmware (SG20_h323-fr-3.69.16.2), il ne fonctionne plus.
Je pense qu'il doit simplement y avoir un changement de valeurs des paramètres auxquelles le script accède.
Par exemple, voici le contenu du fichier .bat (je suis sous Windows 7) pour renouveler mon adresse IP :
rem pause c:\perl\livebox2.pl -page=internet action=submit action=reset rem pause
Savez-vous où je pourrais trouver le détail des différentes valeurs des commandes de la Livebox2 Sagem pour le dernier firmware ?
En fait, un document qui décrirait l'utilisation des paramètres "page=internet", "action=submit" et "action=reset".
Merci à tous pour votre aide.
Dernière modification par Groslapin (20-10-2013 14:42:34)
Hors ligne
Bonjour,
J'utilisais un script similaire à base de Curl très simple pour seulement Activer / Désactiver le wifi depuis un bouton.
En gros je récuperais le cookie en lancant une commande du type :
curl -c "cookie.txt" http://192.168.1.1/authenticate?usernam … sword=PASS
puis une deuxième ligne pour appeler le chemin permettant de switcher le wifi en lui associant mon cookie.
SAUF que depuis la dernière mise à jour de ma livebox ZTE (en version de firmware
ZT20_sip-fr-4.33.5.1).
Ca ne marche plus.
J'ai essayé à travers du POST (json .. ajax...) mais rien à faire je ne parviens pas à m'authentifier.
Quelqu'un a-t-il rencontré le même problème ?
Hors ligne
Bonjour.
Hélas
On ne peut jamais être certain d'avoir le même comportement entre deux versions de firmware ...
Il faut que tu "sniffes" les échanges (de mémoire, l'URL est OK, mais d'autres choses peuvent avoir changé ).
[Edit]
Si je ne me trompe pas, ton URL est OK pour un "GET", mais ça a changé, maintenant, il faut faire un "POST" ...
[/Edit]
Dernière modification par JoeKer (17-08-2014 14:14:36)
Hors ligne
C'est bien l'impression que j'ai aussi, mais impossible de réussir le POST.
En sniffant, on dirait qu'il POST /authenticate?username=USER&passwors=PASS
et mon sentiment c'est que curl s'attend à poster ca :
username=USER&passwors=PASS
et pas ca :
/authenticate?username=USER&passwors=PASS
Je sèche...
Hors ligne
Bonsoir.
Essaye avec les options -G et -I de curl si tu ne l'as déjà fait ...
Hors ligne
Bonjour à tous. Je suis nouveau sur ce forum. J'ai un problème similaire.
Je cherche à récupérer de manière automatique les données de la livebox2 sagem
avec le firmware Soft@Home. J'avais trouvé comment le faire avec le fimware
Sagem FAST3XXX grâce à un excellent shell script de Jerome Lacoste
(Scripts pour surveiller une Livebox 2). Seulement voilà, ma livebox2 a migré vers
vers Soft@Home et la méthode précédente ne fonctionne plus. je cherche une méthode
pour m'authentifier de façon automatique avec des programmes comme curl, wget etc
avant d'accéder aux données. J'ai cherché des heures sur google sans rien trouver.
Toute aide sera la bienvenue. Un exemple de ce que j'ai testé :
curl -X POST -i -H "Content-type: application/json" -c ./cookies.txt \
"http://192.168.1.1/authenticate?username=admin&password=mon_mot_de_passe"
curl -i -b ./cookies.txt -X POST -H 'Content-Type: application/json' \
-d '{"parameters":{}}' http://192.168.1.1/sysbus/NeMo/Intf/dsl0:getDSLStats
Résultat pour la première commande :
HTTP/1.1 200 OK
Set-Cookie: 9c684cd9/sessid=ZOA9RUfGJH6ilXx9GdFmjEQn; path=/
Cache-Control: no-cache
Pragma: no-cache
TE: chunked
Transfer-Encoding: chunked
Content-Type: application/json
{"status":0,"data":{"contextID":"oFLBfYU0yE6v5xfOpmvysJE9gbU4gcmvFYWKKEK07Ds12vFgFYCYx7WC7GvcGHxb"}}
Résultat pour la seconde commande :
HTTP/1.1 200 OK
Server: Grom
Date: Mon, 04 Aug 2014 17:15:26 +0000
Content-Type: application/json; charset=UTF-8
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
Transfer-Encoding: chunked
{"result":{"status":null,"errors":[{"error":13,"description":"Permission denied","info":"NeMo/Intf/dsl0"}]}}
Le résultat est toujours "Permission denied" : l'authentification a échoué !
Je fais certainement quelque chose de travers, mais je ne sais pas quoi.
Hors ligne
Bonjour,
oups.....désolé
Dernière modification par pitpat (19-11-2014 20:43:51)
Hors ligne
Merci pitpat pour votre réponse rapide.
Je suis en environnement linux, bourne shell
et je ne connais absolument rien aux scripts vbs.
Je ne peux pas utiliser votre solution.
Hors ligne
petit coup de pouce pour que la requête soit fonctionnelle ;-)
Il faut rajouter un header http "X-Context" avec la valeur du contextID envoyé par la livebox lors du première appel
Par exemple :
curl -i -b ./cookies.txt -X POST -H 'Content-Type: application/json' -H 'X-Context: PsIQQUo3QIXDOZvOSJL1WDVnKPO1o0X3rtI7eUWSsJl8wGLfdk6ZLQbltPaGNXy3' -d '{"parameters":{}}' http://192.168.1.1/sysbus/NeMo/Intf/dsl0:getDSLStats
Vous obtiendrez qq chose du style :
HTTP/1.1 200 OK
Server: Grom
Date: Fri, 26 Dec 2014 21:11:18 +0000
Content-Type: application/json; charset=UTF-8
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
Transfer-Encoding: chunked
{"result":{"status":{"ReceiveBlocks":1309625097,"TransmitBlocks":20524644,"CellDelin":0,"LinkRetrain":0,"InitErrors":2,"InitTimeouts":4294967295,"LossOfFraming":0,"ErroredSecs":443,"SeverelyErroredSecs":2,"FECErrors":11911366,"ATUCFECErrors":2795,"HECErrors":6611,"ATUCHECErrors":0,"CRCErrors":750,"ATUCCRCErrors":87}}}
A noter qu'il est également possible d'avoir d'autres info sur le port DSL:
exemple de requête :
curl -i -b ./cookies.txt -X POST -H 'Content-Type: application/json' -H 'X-Context: PsIQQUo3QIXDOZvOSJL1WDVnKPO1o0X3rtI7eUWSsJl8wGLfdk6ZLQbltPaGNXy3' -d '{"parameters":{"mibs":"dsl","flag":"","traverse":"down"}}' http://192.168.1.1/sysbus/NeMo/Intf/data:getMIBs
Exemple de réponse :
HTTP/1.1 200 OK
Server: Grom
Date: Fri, 26 Dec 2014 21:20:06 +0000
Content-Type: application/json; charset=UTF-8
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
Transfer-Encoding: chunked
{"result":{"status":{"dsl":{"dsl0":{"LastChangeTime":137,"LastChange":349445,"LinkStatus":"Up","UpstreamCurrRate":1017,"DownstreamCurrRate":7669,"UpstreamMaxRate":1116,"DownstreamMaxRate":8160,"UpstreamNoiseMargin":103,"DownstreamNoiseMargin":113,"UpstreamAttenuation":202,"DownstreamAttenuation":408,"UpstreamPower":107,"DownstreamPower":0,"DataPath":"Interleaved","InterleaveDepth":0,"ModulationType":"ADSL_2plus","ModulationHint":"ADSL","FirmwareVersion":"10.17.8.4IKF7185","StandardsSupported":"G.992.1_Annex_A,G.992.1_Annex_B,G.992.1_Annex_C,G.992.2,G.992.3_Annex_A,G.992.3_Annex_B,G.992.3_Annex_L,G.992.3_Annex_M,G.992.5_Annex_A,G.992.5_Annex_B,G.992.5_Annex_M,G.993.1_Annex_A","StandardUsed":"G.992.5_Annex_A","CurrentProfile":"","UPBOKLE":0}}}}}
Hors ligne
merci pour ce GRAND coup de pouce, stephane.guelec
dès que j'ai un moment (eh oui, c'est la trêve des confiseurs :=)
je teste et je vous donne les résultats
je constate à la lecture de vos résultats que vous avez un bon débit
(moi je plafonne à 2400 Kbps)
encore merci et joyeuses fêtes
Hors ligne
Enfin ça marche !
Tout fonctionne grâce aux conseils de stephane.guelec.
Comme j'ai cherché très longtemps ceci sur internet sans rien trouver, je publie
ci-dessous la marche à suivre pour récupérer des données de la livebox en mode
shell script unix et ligne de commande pour ceux qui auraient un problème similaire.
(testé sur livebox2 - logiciel SoftAtHome)
MYHOST => 192.168.1.1
MYUSERNAME => votre login
MYPASSWORD => votre password
COOKIES => fichier temporaire de cookies
1 - connexion
/usr/bin/curl -i -X POST -i -H "Content-type: application/json" -c $COOKIES \
"http://$MYHOST/authenticate?username=$MYUSERNAME&password=$MYPASSWORD" 2>/dev/null
2 - message de réponse de la livebox
quelque chose comme ça
{"status":0,"data":{"contextID":"RmjJzr2UIXk2zFteSiU0i1bK8wUuS8QyhZ6GeWoLKyC82T0K2TH9HGIF1sXJnD6s"}}
3 - récupérer dans une variable de contenu de contextID
exemple : VARVAR2 => RmjJzr2UIXk2zFteSiU0i1bK8wUuS8QyhZ6GeWoLKyC82T0K2TH9HGIF1sXJnD6s
4 - lancer une commande qui requiert une authentification
ici recherche des compteurs d'erreurs de transmission
/usr/bin/curl -b $COOKIES -X POST -H 'Content-Type: application/json' \
-H "X-Context: $VARVAR2" -d '{"parameters":{}}' \
http://$MYHOST/sysbus/NeMo/Intf/dsl0:getDSLStats 2>/dev/null
5 - message de réponse de la livebox
exemple de réponse
{"result":{"status":{"ReceiveBlocks":0,"TransmitBlocks":0,"CellDelin":0,"LinkRetrain":0,"InitErrors":0,"InitTimeouts":0,\
"LossOfFraming":0,"ErroredSecs":0,"SeverelyErroredSecs":0,"FECErrors":0,"ATUCFECErrors":0,"HECErrors":1947, \
"ATUCHECErrors":1947,"CRCErrors":268,"ATUCCRCErrors":268}}}
avec FECErrors => Foward Error Correction
avec HECErrors => Header Error Checksum
avec CRCErrors => Cyclic Redundancy Check
6 - déconnexion (ne pas oublier)
/usr/bin/curl -i -b $COOKIES -X POST http://$MYHOST/logout
réponse
HTTP/1.1 200 OK
Voilà.
Pour les curieux, des URL que je connais :
statistiques DSL => http://$MYHOST/sysbus/NeMo/Intf/dsl0:getDSLStats
configuration DSL => http://$MYHOST/sysbus/NeMo/Intf/data:getMIBs
Je suggère de poster ci-après les autres URL que vous connaissez/utilisez (TV, WAN, LAN, etc).
Remarque pour les unités :
Les données de type NoiseMargin et Attenuation sont en dizièmes de db.
Les données de type Rate sont en Kbps.
Les données de type Date et LastChange : MYSTERE !
Bonne année à tous.
Hors ligne
dernier petit coup de pouce pour celui qui souhaiterait rebooter la livebox depuis les APIs:
curl -i -b ./cookies.txt -X POST -H 'Content-Type: application/json' -H 'X-Context: PsIQQUo3QIXDOZvOSJL1WDVnKPO1o0X3rtI7eUWSsJl8wGLfdk6ZLQbltPaGNXy3' -d '{"parameters":{}}' http://192.168.1.1/sysbus/NMC:reboot
Vous obtiendrez qq chose du style :
HTTP/1.1 200 OK
Server: Grom
Date: Fri, 26 Dec 2014 21:12:28 +0000
Content-Type: application/json; charset=UTF-8
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
Transfer-Encoding: chunked
{"status":true}
Hors ligne
Quelques adresses pour info
Adresses déjà connues :
http://192.168.1.1/sysbus/NeMo/Intf/dsl0:getDSLStats
http://192.168.1.1/sysbus/NeMo/Intf/data:getMIBs
Nouvelles adresses :
http://192.168.1.1/sysbus/Wificom:getStatus : status wifi
http://192.168.1.1/sysbus/NeMo/Intf/lan:getMIBs : infos lan
http://192.168.1.1/sysbus/UserManagement:getUsers : liste utilisateurs
http://192.168.1.1/sysbus/NeMo/Intf/lan … ddrAddress : adresse IP livebox lan
http://192.168.1.1/sysbus/NeMo/Intf/dat … ddrAddress : adresse IP livebox wan
http://192.168.1.1/sysbus/NMC:getWANStatus : status wan
http://192.168.1.1/sysbus/VoiceService/ … listTrunks : infos téléphonie IP
http://192.168.1.1/sysbus/NMC/OrangeTV:getIPTVStatus : status TV
Par contre, impossible de trouver des infos
sur le logiciel installé (SoftAtHome) et surtout sa version
Et permission denied toujours
pour l'adresse http://192.168.1.1/sysbus/DeviceInfo
Voilà, à vous de tester pour trouver ce qu'il vous faut
Si vous en savez plus, vous pouvez toujours les poster ci après.
Hors ligne
Merci pour le tuto, ça fonctionne très bien et c'est ce que je cherche depuis un moment...
Reste plus qu'à automatiser tout cela dans un petit script....
Sinon pour trouver toutes les adresses, petit tuto trouvé sur ce forum
http://www.forum-orange.com/viewtopic.php?id=69558
Ça marche très bien...
Hors ligne
Content d'avoir publié quelque chose d'utile ! C'était d'ailleurs le but :=)
Pour les adresses, je n'ai rien trouvé de nouveau dans le tuto indiqué :=(
Hors ligne
Bonjour,
dans la suite, je cherche à récupérer les infos sur les périphériques usb non connectés à la livebox.
Ces infos sont disponibles en clair sur page d'accueil donc sans besoin de s'identifier.
je rentre la commande:
curl -i -X POST -H 'Content-Type: application/json' -d '{"events":[{"handler":"sah.hgw.models.DeviceManager"}],"channelid":8}' http://192.168.1.1/ws
j'ai comme réponse:
HTTP/1.1 404 Not Found
Server: Grom
Date: Fri, 09 Jan 2015 13:22:02 +0000
Content-Type: application/json; charset=UTF-8
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
Transfer-Encoding: chunked
{"error":196618,"description":"Object or parameter not found","info":"ws"}
un chose que j'ai remarqué, concerne le numéro channelid, ce n'est jamais le même. Du coup, comment trouver le bon.
J'arrive à obtenir les infos sur les équipements usb connectés en tapant:
curl -i -X POST -H 'Content-Type: application/json' -d '{"parameters":{}}' http://192.168.1.1/sysbus/USBHosts:getDevices
*****************************************************************************************************
Sinon, suite aux infos collectées plus haut, petit script qui reboote la livebox. Suffit juste de rentrer son mot de passe.
#!/bin/bash
clear
read -p 'mot de passe:' mdp
curl -o context -X POST -i -H "Content-type: application/json" -c ./cookies.txt "http://192.168.1.1/authenticate?username=admin&password="$mdp""
ID=$(tail -n1 context | sed 's/{"status":0,"data":{"contextID":"//1'| sed 's/"}}//1')
curl -i -b ./cookies.txt -X POST -H 'Content-Type: application/json' -H 'X-Context: '$ID'' -d '{"parameters":{}}' http://192.168.1.1/sysbus/NMC:reboot
rm cookies.txt
rm context
*****************************************************************************************************
Dernière modification par padawan67 (09-01-2015 14:22:58)
Hors ligne
Bonsoir.
Pour récupérer le "channelid", il faut peut-être que tu interroges "ws" avec seulement '{"events":[{"handler":"sah.hgw.models"}]}' comme paramètre, tu auras le "channelid" dans la réponse.
C'est apparemment comme ça que ça fonctionne dans la "vraie vie"
Hors ligne
Bravo padawan67 pour le joli script bash,
efficace et bien plus compact que tout ce que j'avais écrit :=)
Je pense qu'il doit aussi être possible de mettre en marche
et d'arrêter le wifi avec le même type de script.
Il suffit de trouver la bonne url.
JoeKer, est-ce que vous savez récupérer les infos de firmware
SoftAtHome et la version ? Avez-vous connaissance des formats
de date ? Ça me serait utile. D'avance merci.
Hors ligne
Bonsoir,
Merci Joeker pour l'info. Effectivement, en regardant, une première requête est faite pour obtenir le numéro channelid.
Malheureusement, en tapant la commande suivante:
curl -i -X POST -H 'Content-Type: application/json' -d '{"events":[{"handler":"sah.hgw.models.DeviceManager"}]}' http://192.168.1.1/ws
j'ai toujours le message d'erreur suivant:
HTTP/1.1 404 Not Found
Server: Grom
Date: Sat, 10 Jan 2015 21:20:20 +0000
Content-Type: application/json; charset=UTF-8
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
Transfer-Encoding: chunked
{"error":196618,"description":"Object or parameter not found","info":"ws"}
****************************************************************************************************
A defaut, j'ai tapé deux petits scripts pour activer/désactiver le filtrage mac de la livebox.
Il suffit juste de reprendre le script précédent et de changer la ligne concernant la requête voulue. Ne pas oublier de se déconnecter à l'issue. ligne à ajouter avant de supprimer les fichiers cookies et context
curl -i -b ./cookies.txt -X POST http://192.168.1.1/logout
1/activer:
curl -i -b ./cookies.txt -X POST -H 'Content-Type: application/json' -H 'X-Context: '$ID'' -d '{"parameters":{"mibs":{"wlanvap":{"wl0":{"MACFiltering":{"Mode":"WhiteList"}}}}}}' http://192.168.1.1/sysbus/NeMo/Intf/wl0:setWLANConfig
2/désactiver:
curl -i -b ./cookies.txt -X POST -H 'Content-Type: application/json' -H 'X-Context: '$ID'' -d '{"parameters":{"mibs":{"wlanvap":{"wl0":{"MACFiltering":{"Mode":"Off"},"WPS":{"Enable":false}}}}}}' http://192.168.1.1/sysbus/NeMo/Intf/wl0:setWLANConfig
****************************************************************************************************
Bonne soirée
Hors ligne
Bonsoir.
jumper21 a écrit:
.../
JoeKer, est-ce que vous savez récupérer les infos de firmware
SoftAtHome et la version ? Avez-vous connaissance des formats
de date ? Ça me serait utile. D'avance merci.
Tout d'abord, tu peux me tutoyer
Non, je n'ai pas vérifié les formats de date, mais généralement, deux formats sont utilisés en Javascript.
- Format dit "Epoch" : nombre de secondes depuis le 1er janvier 1970
Ce format comporte 10 digits
- Format basé sur "Epoch", mais en milli secondes
Comporte 13 digits
Dans le doute, je vérifie la cohérence sous Linux avec la commande suivante :
date -d@<valeur>
Si ça me paraît incohérent, je retire 3 digits à droite, et je vérifie avec la même commande
Si ça ne répond pas à ta question ou si c'est incohérent, donne un exemple, on essaiera de trouver ...
@padawan36 : Effectivement, il y a un message d'erreur
Je n'avais pas essayé, mais en "live", ça fonctionne moins bien que dans le navigateur
Ca me paraît quand même être la voie à suivre, dans la mesure où ça semble être une information fournie par la LiveBox ...
Hors ligne
Bonjour JoeKer.
J'avais tout de suite pensé à un format Epoch,
mais les données sont incohérentes.
sur la page informations systeme / dsl de ma livebox,
j'ai en clair l'info suivante :
dernière synchronisation DSL 4 janvier 2015, 10 h 21 m
dans les données java de la page, je trouve
"LastChangeTime":3008530 => je suppose que c'est la donnée correspondante
et aussi
"LastChange":613320 => temps écoulé depuis cette date (en secondes ?), je suppose
Aurais-tu une autre idée ?
Hors ligne
Bonsoir.
C'est peut-être par rapport à la date de dernière synchro ...
As-tu essayé de faire la relation avec les données en clair de la page web, ou de regarder dans scripts.js le traitement qui est fait ?
Hors ligne
Bonjour JoeKer.
Il y a clairement correspondance entre les données en clair
de la page web (voir mon dernier post) et les données relevées
dans la console javascript. Ce que je ne comprend pas, c'est
algorithme utilisé. Comme je ne comprends rien au javascript,
je me renseigne auprès de gens plus compétents :=)
Hors ligne