Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#126 Le 04/07/2013, à 21:56

earthwormjeff

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

J'ai ça par exemple :
app_token: FivhjR35Aq9YGJ3KkW64KXxBsxkhSGXX/KDIOvy5yTJg7ZSMm+6MFOC58Va+GWZz
challenge: /rkOc2r2ekvA4g3QEPM2r9UF+J+fmkYU
password: 14dcab3de3966d0552ae20524f8b19c0f9c9b5c8

mais ça ne marche pas...

En fait, pour les app_token => tu peux supprimer les autorisations des applications dans les menus de la box.

Hors ligne

#127 Le 04/07/2013, à 22:02

gmarin

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

un challenge avec 2 fois \/ fait 34 caractères de long
un challenge sans \/ fait 32 de long.
c'est l'api avec curl ou autre qui rajoute le \ avant le /
c'est une supposition

il suffit donc de supprimer les \ pour que cela fonctionne.
je teste et je reviens vers vous

Hors ligne

#128 Le 04/07/2013, à 22:03

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

earthwormjeff a écrit :

J'ai ça par exemple :
app_token: FivhjR35Aq9YGJ3KkW64KXxBsxkhSGXX/KDIOvy5yTJg7ZSMm+6MFOC58Va+GWZz
challenge: /rkOc2r2ekvA4g3QEPM2r9UF+J+fmkYU
password: 14dcab3de3966d0552ae20524f8b19c0f9c9b5c8

mais ça ne marche pas...

En fait, pour les app_token => tu peux supprimer les autorisations des applications dans les menus de la box.

Oui oui, mais j'ai pas trop envie de recommencer ^_^

echo -n  "/rkOc2r2ekvA4g3QEPM2r9UF+J+fmkYU" | openssl dgst -sha1 -hmac "FivhjR35Aq9YGJ3KkW64KXxBsxkhSGXX/KDIOvy5yTJg7ZSMm+6MFOC58Va+GWZz"
0c9b886b3b78647d49dfc3cb3be1df58eefd3939

Apriori tu as inversé app_token et challenge wink (j'obtiens le même résultat en inversant tout du moins) Il faut savoir que la doc est erronée pour l'ordre.

Dernière modification par Vinky41 (Le 04/07/2013, à 23:08)

Hors ligne

#129 Le 04/07/2013, à 22:04

Zakhar

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Bon boulot tout ça !


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#130 Le 04/07/2013, à 22:10

gmarin

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

bon avec le code qui enlève les \ cela fonctionne jusqu'à l'ouverture de session :
{"result":{"session_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","challenge":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/","password_salt":"xxxxxxxxxxxxxxxxxxxxxxxxxxxx","permissions":{"downloader":true,"settings":false,"calls":true,"explorer":true,"contacts":true,"parental":false}},"success":true}

je bloque à l'étape "Make an authenticated call to the API" où il faut envoyer le X-Fbx-App-Auth
la commande:
curl -X GET -i -H "Content-type: application/json" -X GET http://mafreebox.freebox.fr/api/v1/login/session/ -d '
{
   "X-Fbx-App-Auth": "'$result2'"
}    ' >/tmp/get_xfbx.log  2>/dev/null

ou $result2 est le session_token

le résultat :
HTTP/1.1 404 Not Found
Server: nginx
Date: Thu, 04 Jul 2013 21:04:07 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive

{"msg":"Requête invalide (404)","success":false,"error_code":"invalid_request"}

Cordialement

Hors ligne

#131 Le 04/07/2013, à 22:15

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Tout simplement parce que l'api que tu appelles n'existe pas (il semblerait que l'exemple donné dans la doc soit faux)

D'où le : Requête invalide (404) qui t'indiquent que la page n'existe pas.

Dernière modification par Vinky41 (Le 04/07/2013, à 22:16)

Hors ligne

#132 Le 04/07/2013, à 22:17

Zakhar

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Ton curl est bizarre...

Pourquoi tu mets -X GET ?

De toute façon, par défaut, curl fera un GET. C'est donc au mieux inutile. Et comme tu en as 2 dans la ligne, d'ici à ce qu'il te fasse 2 requetes....


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#133 Le 04/07/2013, à 22:20

earthwormjeff

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

pour moi, je pense avoir trouve. Il faut aussi que le champs app_id ne corresponde pas a un code qui a déjà fonctionne une fois. Si la session a ete ouverte une fois, la box s'en souvient, et les codes doivent être recharges.

Merci a vous

Hors ligne

#134 Le 04/07/2013, à 22:25

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

earthwormjeff a écrit :

pour moi, je pense avoir trouve. Il faut aussi que le champs app_id ne corresponde pas a un code qui a déjà fonctionne une fois. Si la session a ete ouverte une fois, la box s'en souvient, et les codes doivent être recharges.

Je ne comprends pas trop, j'ai, au début lors des tests, fait plusieurs applications (révoqués ensuite) avec le même app_id et cela fonctionnait bien.

Il fallait juste (vu que tous étaient semblables) que le app_token soit celui de cet app_id et qu'il soit toujours valide.

Hors ligne

#135 Le 04/07/2013, à 22:28

gmarin

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

ben c'est une copie d'un exemple de curl car je ne suis très calé en syntaxe curl.
cela marche comme cela alors je n'ai pas cherché à corriger.
je vais essayer en virant le premier GET (c'est fait et ca marche!)
concernant la fonction de l'api pour ouvrir une session, vous avez une idée?
Je désire me connecter pour récupérer les valeurs des rrd pour générer des graphiques dans Cacti.
Cordialement
Gilbert

Hors ligne

#136 Le 04/07/2013, à 22:34

gmarin

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Je viens de trouver une erreur dans mon curl:
        curl -i -H "Content-type: application/json" -X POST http://mafreebox.freebox.fr/api/v1/login/session/ -d '
{
   "X-Fbx-App-Auth": "'$result2'"
}    ' >/tmp/get_xfbx.log  2>/dev/null

j'avais mis GET au lieu de POST donc plus de requête invalide mais
HTTP/1.1 403 Forbidden
Server: nginx
Date: Thu, 04 Jul 2013 21:32:12 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive

{"uid":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","success":false,"msg":"Erreur d'authentification de l'application","result":{"password_salt":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","challenge":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx},"error_code":"invalid_token"}
on avance c'est cool!
Gilbert

Hors ligne

#137 Le 04/07/2013, à 22:41

earthwormjeff

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

ben oui, c'est ça en fait, je demandais a chaque fois un nouveau app_token mais avec toujours le meme app_id.... D’où mes petits problèmes. .

Vinky41 a écrit :
earthwormjeff a écrit :

pour moi, je pense avoir trouve. Il faut aussi que le champs app_id ne corresponde pas a un code qui a déjà fonctionne une fois. Si la session a ete ouverte une fois, la box s'en souvient, et les codes doivent être recharges.

Je ne comprends pas trop, j'ai, au début lors des tests, fait plusieurs applications (révoqués ensuite) avec le même app_id et cela fonctionnait bien.

Il fallait juste (vu que tous étaient semblables) que le app_token soit celui de cet app_id et qu'il soit toujours valide.

Hors ligne

#138 Le 04/07/2013, à 22:41

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

@gmarin : Pour ta dernière erreur, c'est une erreur de ton hash.

@earthwormjeff : C'est exactement ce que j'ai fait, par contre je les revoquais, pas toi c'est ça ?

EDIT : Je viens de voir que mes deux apps ont exactement le même app_idd.

Dernière modification par Vinky41 (Le 04/07/2013, à 22:50)

Hors ligne

#139 Le 04/07/2013, à 22:50

gmarin

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

merci c'est dans la génération du password = hmac-sha1(app_token, challenge)?
voici la ligne :
result=`echo -n $result | openssl dgst -sha1 -hmac "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"`
$result est le challenge  et xxxxxxxxxxxxxxxxxxx le app_token sans les \
Cordialement
Gilbert

Hors ligne

#140 Le 04/07/2013, à 22:51

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

@gmarin : Oui c'est ça wink (attention au \ dans le challenge & app_token, les deux)

Dernière modification par Vinky41 (Le 04/07/2013, à 22:52)

Hors ligne

#141 Le 04/07/2013, à 22:59

gmarin

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

oui sans les \ dans les deux et le résultat est celui listé plus haut:
{"uid":"xxxxxxxxxxxxxxxxxxxxxx","success":false,"msg":"Erreur d'authentification de l'application","result":{"password_salt":"yyyyyyyyyyyyyyyyyyyyy","challenge":"zzzzzzzzzzzzzzzzzzzzzzzI"},"error_code":"invalid_token"}
xxxxxxxxxxxxxxxxxxxxx correspond au résultat uid de l'étape /api_version
yyyyyyyyyyyyyyyyyy correspond au résultat password_salt de l'étape GET /api/v1/login/authorize/{track_id}
zzzzzzzzzzzzzzzzzzzzz correspond au résultat challenge de l'étape POST /api/v1/login/session/
c'est dans ce challenge qu'il reste des \ d'où erreur.
Cordialement
Gilbert

Hors ligne

#142 Le 04/07/2013, à 23:09

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Pour le zzzzzzzzzzzzzzzzzzzzzzzzzzzz c'est normal, c'est la box qui te renvoie un challenge puisque tu n'as pas réussi à te connecter. (normalement c'est le même qu'au départ)

tu as bien mis comme ici : http://forum.ubuntu-fr.org/viewtopic.ph … #p14040341 ?

N'hésites pas à vérifier que dans cet exemple tu obtiens bien le même hash pour ton password.

Dernière modification par Vinky41 (Le 04/07/2013, à 23:10)

Hors ligne

#143 Le 05/07/2013, à 06:25

gmarin

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

oui tout correspond
je ne vois pas ou je mer......
Peux-t'on révoquer une appli depuis l'url mafreebox.freebox.fr?
Ou dois-t'on le faire depuis le boitier?
Cordialement
Gilbert

Hors ligne

#144 Le 05/07/2013, à 10:06

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Voici le lien vers le github de mon collègue pour le script de téléchargement wink

https://github.com/valentinconan/script … eeBoxV2.sh

Pour révoquer une app, il faut aller sur Freebox OS, paramètre, accès et onglet applications smile

Dernière modification par Vinky41 (Le 05/07/2013, à 10:13)

Hors ligne

#145 Le 05/07/2013, à 14:28

gmarin

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

J'ai lu le script
bon boulot
mais pour moi c pas bon:
curl -i  -H "X-Fbx-App-Auth: $session_token" -X POST http://mafreebox.freebox.fr/api/v1/rrd/ -d '
{
  "db": "temp",
   "fields": [ "temp1" ],
   "precision": 10
}    '

donne comme réponse :
{"uid":"xxxxxxxxxxxxxxxxxx","success":false,"msg":"Vous devez vous connecter pour accéder à cette fonction","result":{"password_salt":"yyyyyyyyyyyyyyyyyyyyyyyyyyy","challenge":"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"},"error_code":"auth_required"}

l'étape précédente donne comme résultat :
{"result":{"session_token":"xxxxxxxxxxxxxxxxx,"challenge":"xxxxxxxxxxxxxxxxxxxxxxxx","password_salt":"xxxxxxxxxxxxxxxxxxxxxxxxx","permissions":{"downloader":true,"settings":false,"calls":true,"explorer":true,"contacts":true,"parental":false}},"success":true}

"settings":false est-ce que cela veut dire que je ne peux pas lire les rrd?
Cordialement
Gilbert

Hors ligne

#146 Le 05/07/2013, à 14:32

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Dans ton cas si tu as auth_required cela veut dire que ton token_session n'est pas bon.

Ça te le fait tout le temps ? (Que tu es un / ou pas dans le token)

Si oui tu dois avoir un soucis dans ta variable $session_token

Hors ligne

#147 Le 05/07/2013, à 14:51

gmarin

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Bon merci de réfléchir sur mon cas:
mon code :
#!/bin/sh
result=$( mktemp );
curl -H "Content-type: application/json" -X GET http://mafreebox.freebox.fr/api/v1/login/>& $result
echo "$result";
    printf "\n";
cat $result
    printf "\n";
result=`grep "challenge" $result | cut -f 5 -d ':' | cut -f 1 -d ','| sed 's/\\\//g' |sed "s/\"//g"| sed "s/\r//g" | sed "s/\n//g"`
echo "challenge"
echo $result;
    printf "\n";
echo "password"
password=`echo -n $result | openssl dgst -sha1 -hmac "4X2u++cY1xCoAg/OCf7OD633q6fqr4Ayg3kM4Lo48IA9J3rQwahyqfQpgiPKISIz"`
echo $password
result2=$( mktemp );
curl -i -H "Content-type: application/json" -X POST http://mafreebox.freebox.fr/api/v1/login/session/ -d '
{
   "app_id": "fr.prestaopen.cacti",
   "password": "'$password'"
}    '>& $result2
    printf "\n";
cat $result2
    printf "\n";
result2=`grep "session_token" $result2 | cut -f 3 -d ':' | cut -f 1 -d ','| sed 's/\\\//g' |sed "s/\"//g"| sed "s/\r//g" | sed "s/\n//g"`
echo "session_token"
echo $result2;
        printf "\n";
        curl -i  -X POST http://mafreebox.freebox.fr/api/v1/rrd/ -H "X-Fbx-App-Auth: $session_token" -d '
{
{
   "db": "temp",
   "fields": [ "temp1" ],
   "precision": 10
}    '
        printf "\n";


le résultat :

[root@eon-master scripts]# ./freeboxv6_adsl_api_post_session.sh
/tmp/tmp.ZvScW28069

{"success":true,"result":{"logged_in":false,"challenge":"vM6OVj5AWCMslb5NdwbfeRM79DcdbzlE","password_salt":"0rD6RM906Q3lockQ41KCgjQv9RZU4gdh"}}
challenge
vM6OVj5AWCMslb5NdwbfeRM79DcdbzlE

password
3c19113b97fb1ec6195275b9e12fe688da4ae94d

HTTP/1.1 200 OK
Server: nginx
Date: Fri, 05 Jul 2013 13:48:18 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive

{"result":{"session_token":"ENBCI8MX\/nm3bjXOsFe6Wb6mA5xeRRu+I7mmYb5YgimRb5hY8bPCK6ucPT1RYwz5","challenge":"vM6OVj5AWCMslb5NdwbfeRM79DcdbzlE","password_salt":"0rD6RM906Q3lockQ41KCgjQv9RZU4gdh","permissions":{"downloader":true,"settings":false,"calls":true,"explorer":true,"contacts":true,"parental":false}},"success":true}
session_token
ENBCI8MX/nm3bjXOsFe6Wb6mA5xeRRu+I7mmYb5YgimRb5hY8bPCK6ucPT1RYwz5

HTTP/1.1 403 Forbidden
Server: nginx
Date: Fri, 05 Jul 2013 13:48:18 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive

{"uid":"2bd25dd65be2ab0394c760f6417afc64","success":false,"msg":"Vous devez vous connecter pour accéder à cette fonction","result":{"password_salt":"0rD6RM906Q3lockQ41KCgjQv9RZU4gdh","challenge":"vM6OVj5AWCMslb5NdwbfeRM79DcdbzlE"},"error_code":"auth_required"}
[root@eon-master scripts]#

le app_token =
pour les codes ce n'est pas grave si ils sont lisibles sur ce forum
cordialement
Gilbert

Hors ligne

#148 Le 05/07/2013, à 14:58

Vinky41

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

Tu es sur que -H "X-Fbx-App-Auth: $session_token" t'envoie bien la variable et pas $session_token en dur ?

Hors ligne

#149 Le 05/07/2013, à 16:01

gmarin

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

bon encore une erreur de ma part:
la variable à envoyer n'est pas $session_token mais $result2
mais je n'ai pas les droits pour lire les données:
{"uid":"2bd25dd65be2ab0394c760f6417afc64","success":false,"missing_right":"settings","msg":"Cette application n'est pas autorisée à accéder à cette fonction","result":{"password_salt":"0rD6RM906Q3lockQ41KCgjQv9RZU4gdh"},"error_code":"insufficient_rights"}

ca avance toujours.
Merci encore de ton aide
Gilbert

Hors ligne

#150 Le 05/07/2013, à 16:19

gmarin

Re : [Utilitaire Freebox] Script pour télécharger sur votre V6

avec curl -i  -X GET http://mafreebox.freebox.fr/api/v1/dhcp/config/ -H "X-Fbx-App-Auth: $result2" j'arrive à lire les informations du dhcp cela veut dire que l'authentification fonctionne.
je ne trouve pas ou définir les droits pour pouvoir lire les information rrd.
sur l'interface des applications je peux ajouter "Modification des réglages de la freebox" et "Accès au contrôle parental" mais pas de permissions pour les rrd.
Cordialement
Gilbert

Hors ligne