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.

#101 Le 01/07/2013, à 18:23

Zakhar

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

Reboot de la freebox tongue

... ça se serait du déni de service en vue !.. D'autant que si j'ai bien compris (de mon collègue qui a testé) une fois "associé", tu peux faire ce que tu veux (dans la limite de ce qui est prévu par les API) que tu sois en local ou à distance.

Et puis tu peux toujours rebooter la freebox en réalité... via la méthode "classique" d'accès à distance et en simulant ce que fait le navigateur pour activer cette fonction... c'est à dire exactement comme on faisait avant sans l'API officielle ! smile


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

Hors ligne

#102 Le 02/07/2013, à 18:31

Zakhar

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

marc31 a écrit :

il semble que la documentation de l'API soit un peu erronée ; j'ai déposé un BUG sur le tracker : http://bugs.freeplayer.org/task/12683
- par exemple, pour ftp, il faut faire : GET /api/v1/ftp/config/ (y'a /config/ en plus).

Ils ont corrigé un bug de documentation... c'est le tien ? wink

Donc voila, déjà la 2.01 ... et à mon avis c'est pas fini !


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

Hors ligne

#103 Le 02/07/2013, à 20:32

marc31

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

Zakhar a écrit :

Ils ont corrigé un bug de documentation... c'est le tien ? wink

oui, c'est mon ticket. Le ticket n'aura pas été ouvert bien longtemps avant d'être traité. J'en ai un autre qui n'a jamais véritablement reçu une véritable réponse avec correction de bug.

Ce soir, je n'ai pas réussi a obtenir la mise à jour ce soir pour vérifier si les docs étaient à jour. Il parait que c'est fait. Je regarderai demain.

Dernière modification par marc31 (Le 02/07/2013, à 20:33)


ubuntu-gutsy / ATI RC410 [Radeon Xpress 200] + Nvidia GeForce 7300 SE / wireless RaLink RT2500 / toulouse-ouest / xmpp://marc.quinton@jabber.org

Hors ligne

#104 Le 02/07/2013, à 21:35

Vinky41

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

Yop,

De mon côté j'ai essayé un petit peu avec resty.

Premier point, ça fonctionne plutôt pas mal smile

Ensuite, comme toi marc, je suis coincé au niveau de l'authentification (j'ai toujours le retour Invalid_token)

Voilà un exemple que j'ai fait, si quelqu'un a une idée je suis preneur smile

#Réccupération du challenge
vinky$ GET /api/v1/login/
{"success":true,"result":{"logged_in":false,"challenge":"mbWCRz4aVFGB5fJ\/jfo5v785zeFWh8\/F","password_salt":"znfhKPGMn20QTycFN5uqXl3Ch5ICC5fb"}}

#Création du password hmac-sha1(app_token, challenge)
vinky$ echo -n "mbWCRz4aVFGB5fJ\/jfo5v785zeFWh8\/F" | openssl dgst -sha1 -hmac "bdJApG9iFZ7iaa82bOiwo4of\/fIn8N\/czDMzRiDphkWgj4bcstnl\/9V73KpLkCZ5" #<APP_Token_obtenu_lors_de_l_authentification>
23229d024f3bd74ad142b93d20a5de45acb099fc

#Demande de session
vinky$ POST /api/v1/login/session '{"app_id": "Server","password": "23229d024f3bd74ad142b93d20a5de45acb099fc"}' #<APP_ID_indique_lors_de_l_authentification>
{"uid":"e65a865baba535feb95baaaf4db8d012","success":false,"msg":"Erreur d'authentification de l'application","result":{"password_salt":"znfhKPGMn20QTycFN5uqXl3Ch5ICC5fb","challenge":"mbWCRz4aVFGB5fJ\/jfo5v785zeFWh8\/F"},"error_code":"invalid_token"}

EDIT : Il semblerait que la box n'avait pas pris en compte ma validation sur le LCD. Après une nouvelle tentative (après réauthentification) cela fonctionne maintenant smile

Dernière modification par Vinky41 (Le 02/07/2013, à 21:49)

Hors ligne

#105 Le 02/07/2013, à 23:37

Zakhar

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

Eh bien le boulot est tout mâché pour l'authentification, j'ai plus qu'à recopier. wink

Merci à vous deux.


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

Hors ligne

#106 Le 02/07/2013, à 23:46

Vinky41

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

De rien, par contre, comme le disais marc, il semblerait que par moment la session est tout de même refusée sad

Je crois que c'est lorsqu'un "+" apparaît dans le challenge mais je ne suis pas certain.

EDIT : Le + ne semble pas être la cause... Par contre, j'ai également ce côté aléatoire pour l'utilisation du header d'authentification. Il faut que j'aille en générer un nouveau pour réussir à me connecter...

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

Hors ligne

#107 Le 03/07/2013, à 07:31

Zakhar

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

Ca ressemble potentiellement à un bug ça...

Le collègue a eu la même chose (probablement) sur son appli Android. Il l'avait associé chez lui, ça marchait, et quand il a voulu me montrer ça lui disait qu'il n'était plus 'associé'. Ca ressemble, comme tu le décris, à une authentification qui est refusée.


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

Hors ligne

#108 Le 03/07/2013, à 07:54

Vinky41

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

Le plus étonnant c'est que si je recommence souvent la seconde fois cela fonctionne.

Là où je commence à pencher pour un problème de caractère (comme on avait avant de mettre url-encode pour le token dans le script précédent) c'est que cela le fait donc pas tout le temps mais surtout ça le fait à la fois sur la demande de session mais également lors de l'utilisation d'une api qui nécessite le header contenant le token de session.

Hors ligne

#109 Le 03/07/2013, à 18:36

marc31

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

est-ce qu'il n'y aurait pas un soucis avec bash, car pour ma part, je n'ai plus aucun soucis d'authentification un fois que j'ai bien calculé le mot de passe. Il est dit que la doc est fausse : l'ordre des paramêtres est inversé. Sinon, BASH est assez sensible a certain types de caractères : %,*,$, ... ce qui n'est pas le cas des langages de script tels que perl, python, ruby ...

joli travail, en tout cas. Pour ceux que ca intéresserait, je veux bien créer un script ruby qui ferait l'interface à des commandes shell passées en bash et en ligne de commande. Ca augment un peu la dépendance, mais sur Ubuntu, c pas trop un soucis. Ca permet à d'autres d'être en mesure de scripter en BASH sans avoir à programmer en ruby|python|perl.

Dernière modification par marc31 (Le 03/07/2013, à 18:36)


ubuntu-gutsy / ATI RC410 [Radeon Xpress 200] + Nvidia GeForce 7300 SE / wireless RaLink RT2500 / toulouse-ouest / xmpp://marc.quinton@jabber.org

Hors ligne

#110 Le 03/07/2013, à 18:40

Vinky41

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

Je t'avouerai que j'ai pas mal de souci de mon côté...

J'ai "automatisé" la demande de session et sincèrement ça fonctionne une fois sur 3 (un challenge sur 3) en moyenne...

Pire, ça ne marche qu'avec un seul app_token, lorsque j'en crée un autre, cela ne fonctionne pas. sad

Voilà le code :

#! /bin/bash
. ./resty
resty mafreebox.freebox.fr:80

result=$( mktemp )
GET /api/v1/login >& $result
echo "login"
cat $result

result=`grep "challenge" $result | cut -f 5 -d ':' | cut -f 1 -d ','|sed "s/\"//g"| sed "s/\r//g" | sed "s/\n//g"` 
echo "challenge"
echo $result

echo "password"
result=`echo -n $result | openssl dgst -sha1 -hmac "<app_token>"`
echo $result

POST /api/v1/login/session '{"app_id": "<app_id>","password": "'$result'"}'

EDIT : Voilà un exemple fonctionnel

sh connexion.sh 
http://mafreebox.freebox.fr:80*
login
{"success":true,"result":{"logged_in":false,"challenge":"TgtIqHuzGJlkaOR9nYLqr+irAOkeiyN5","password_salt":"znfhKPGMn20QTycFN5uqXl3Ch5ICC5fb"}}
challenge
TgtIqHuzGJlkaOR9nYLqr+irAOkeiyN5
password
85ed34c32b30cd96c5cfcd639d12aa71b2bba2b7
{"result":{"session_token":"UU8O97jQC\/6+skM+qG4FGUooYF9EUb6\/tbQIaAybYpaOjd1BTiKrKCCNdCd9AUz8","challenge":"TgtIqHuzGJlkaOR9nYLqr+irAOkeiyN5","password_salt":"znfhKPGMn20QTycFN5uqXl3Ch5ICC5fb","permissions":{"explorer":true,"downloader":true}},"success":true}

Et un qui ne fonctionne pas (aucun changement sur le script entre temps)

sh connexion.sh 
http://mafreebox.freebox.fr:80*
login
{"success":true,"result":{"logged_in":false,"challenge":"h8P7jCdXp\/7NNAkoqZOXu+VC7rK5t1kc","password_salt":"znfhKPGMn20QTycFN5uqXl3Ch5ICC5fb"}}
challenge
h8P7jCdXp\/7NNAkoqZOXu+VC7rK5t1kc
password
11341a20aff30995e3012f395fbc91d1bb0da085
{"uid":"e65a865baba535feb95baaaf4db8d012","success":false,"msg":"Erreur d'authentification de l'application","result":{"password_salt":"znfhKPGMn20QTycFN5uqXl3Ch5ICC5fb","challenge":"h8P7jCdXp\/7NNAkoqZOXu+VC7rK5t1kc"},"error_code":"invalid_token"}

Pour ajouter un peu de recherche, cela ne vient pas du hash du mot de passe apriori car php trouve la même chose.

EDIT : Après une dizaine d'essai, le problème semble sur venir dès que j'ai "\/" dans le challenge. Mais d'où pourrait provenir le souci vu que php trouve le même password ? sad

Dernière modification par Vinky41 (Le 03/07/2013, à 19:41)

Hors ligne

#111 Le 03/07/2013, à 20:03

marc31

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

Vinky41 a écrit :
sh connexion.sh 
http://mafreebox.freebox.fr:80*
login
{"success":true,"result":{"logged_in":false,"challenge":"h8P7jCdXp\/7NNAkoqZOXu+VC7rK5t1kc","password_salt":"znfhKPGMn20QTycFN5uqXl3Ch5ICC5fb"}}
challenge
h8P7jCdXp\/7NNAkoqZOXu+VC7rK5t1kc
password
11341a20aff30995e3012f395fbc91d1bb0da085
{"uid":"e65a865baba535feb95baaaf4db8d012","success":false,"msg":"Erreur d'authentification de l'application","result":{"password_salt":"znfhKPGMn20QTycFN5uqXl3Ch5ICC5fb","challenge":"h8P7jCdXp\/7NNAkoqZOXu+VC7rK5t1kc"},"error_code":"invalid_token"}

Pour ajouter un peu de recherche, cela ne vient pas du hash du mot de passe apriori car php trouve la même chose.

EDIT : Après une dizaine d'essai, le problème semble sur venir dès que j'ai "\/" dans le challenge. Mais d'où pourrait provenir le souci vu que php trouve le même password ? sad

- le caractère '\' ne doit-il pas être doublé pour être transmis via un argument aux autres programmes ?
- est-ce qu'il n'y aurait pas un mode spécial dans BASH pour faciliter ces passages de paramètres.


ubuntu-gutsy / ATI RC410 [Radeon Xpress 200] + Nvidia GeForce 7300 SE / wireless RaLink RT2500 / toulouse-ouest / xmpp://marc.quinton@jabber.org

Hors ligne

#112 Le 03/07/2013, à 20:11

Vinky41

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

Normalement oui effectivement.

Après je vois pas trop comment bash pourrait être le problème car si je fait $hash = hash_hmac ("sha1", $challenge, $app_token); en php j'ai exactement le même password qu'en bash.

Et lors de la dernière étape, le hash n'a pas de caractères spéciaux sad

J'avoue ne vraiment pas comprendre le souci...

Hors ligne

#113 Le 03/07/2013, à 20:35

marc31

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

marc31 a écrit :

- le caractère '\' ne doit-il pas être doublé pour être transmis via un argument aux autres programmes ?
- est-ce qu'il n'y aurait pas un mode spécial dans BASH pour faciliter ces passages de paramètres.

j'ai reproduit l'environnement chez moi. Je regarderai. Visiblement, après un rapide test, c'est pas un problème lié à "\".


ubuntu-gutsy / ATI RC410 [Radeon Xpress 200] + Nvidia GeForce 7300 SE / wireless RaLink RT2500 / toulouse-ouest / xmpp://marc.quinton@jabber.org

Hors ligne

#114 Le 03/07/2013, à 20:48

Vinky41

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

Je penche également de plus en plus pour cette raison là aussi.

Je me suis aperçu que le seul app_token fonctionnel était celui qui ne possédait pas de \.

Là où c'ets gênant c'est que le caractère peut apparaître à 3 endroits : app_token, challenge et token_session. Difficile d'y passer à travers (autant pour l'app on peut recommencer rapidement, autant le reste ça me semble compliqué)

Merci pour le coup d'oeil wink Si tu trouves le moindre truc louche/étonnant pouvant donner une piste, n'hésite pas smile En particulier lorsque cela ne fonctionne pas, si tu as l'occasion de comparer les valeurs intermédiaire sur ton script en ruby pour voir où cela diverge, ça serait parfait smile Je vais continuer les investigations de mon côté smile

Hors ligne

#115 Le 03/07/2013, à 22:28

Zakhar

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

Si vous avez :
- un programe Ruby qui fonctionne à 100%
- un script Bash qui fonctionne seulement quand certains caractères ne sont pas là

... l'arme qui permet de résoudre le problème s'appelle : Wireshark. big_smile

De mon côté, comme j'ignore même comment on lance un programme Ruby... je ne suis guère avancé. roll


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

Hors ligne

#116 Le 04/07/2013, à 09:36

Vinky41

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

Même pas, Wireshark ne nous ai absolument d'aucune utilité apriori.

En effet le problème semble (je peux me tromper) se situer lors du hash. Le hash n'ayant que des caractères alpha numérique, aucun souci une fois sur le réseau. Le souci semble venir du local.

Là où Wireshark peut être utilie c'est pour l'étape d'après lorsque le token de session doit être envoyé en header, mais bon le souci vient déjà avant.

PS : Je viens de penser que php aussi interprète les backslash, ce qui peut expliquer le même hash mais toujours pas la bonne valeur.

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

Hors ligne

#117 Le 04/07/2013, à 17:11

Vinky41

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

J'ai trouvé le souci pour de bon.

Merci marc31 pour ton github qui m'a permis de comprendre.

En fait, j'avais étonnamment remarqué qu'à chaque fois qu'il y avait un slash il était précédait d'un backslash. C'était assez étonnant mais je me suis dit que peut-etre que free avait fait ça exprès. Or en allant voir ton exemple sur ton github, je me suis apperçu que tu avais un slash sans avoir de backslash.

Je me suis donc dit que le souci venait de là. En fait, c'est RESTY le coupable (enfin je pense, sauf si c'est le terminal qui prend le dessus ?), il m'affiche un backslash mais il n'est pas présent dans le véritable challenge (je ne sais pas pourquoi il l'affiche) et j'ai donc adapté mon script afin de retirer les backslash quand ils sont présent et depuis tout fonctionne parfaitement.

Je vous passerais le lien du github quand j'aurais fini le script pour pouvoir télécharger complètement (il suffira juste de rentrer le token_app dans la première variable pour que cela soit fonctionnel).

Encore merci pour les petits coups de pouces smile

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

Hors ligne

#118 Le 04/07/2013, à 17:46

gmarin

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

Bonjour,
j'utilise bash et curl pour avoir les informations en GET et POST.
Le token de l'appli me donne aussi "xxxxxxx\/xxxxxxxxx".
Je ne passe pas par resty mais j'ai quand même le backslash.
En le supprimant cela ne fonctionne pas non plus.
Cette conversation est très intéressante.
Cordialement
Gilbert

Hors ligne

#119 Le 04/07/2013, à 17:50

gmarin

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

petite correction :
il faut bien mettre dans la ligne de calcul du password :
result=`echo -n $result | openssl dgst -sha1 -hmac "<app_token>"`
et non inverser le challenge avec le app_token.
Et en enlevant le backslash cela fonctionne.
A+
Gilbert

Hors ligne

#120 Le 04/07/2013, à 17:52

gmarin

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

encore une petite chose:
dans la doc de l'api la combinaison backslash-slash est présente dans les exemples.
Cordialement
Gilbert

Hors ligne

#121 Le 04/07/2013, à 18:46

Vinky41

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

Super, content que ça résolve ton souci.

Sinon, à titre de comparaison, tu peux montrer une ou deux commandes pour te passer de resty (histoire de voir si c'est plus pratique avec ou pas tant que ça ?)

Merci de ton retour en tout cas.

PS : Bien vu pour la doc de l'api, sur l'exemple du session_token, il y a bien le backslash, par contre dans l'exemple pour l'authorisation de l'app, ils l'ont bien fait smile

Hors ligne

#122 Le 04/07/2013, à 19:22

earthwormjeff

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

Salut a tous,

est-ce que l'un d'entre vous pourrait poster des exemples d'authentification/token/password contenant des "\/" qui fonctionnent ?
Personnellement, j'ai aussi rencontré ce problème mais même en supprimant les "\" j'ai encore certains password qui sont refusés    (mais pas tous...)

Merci

Hors ligne

#123 Le 04/07/2013, à 20:17

Vinky41

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

Avec plaisir, que veux-tu exactement ?

Le code, les retours, les traitements ?

Hors ligne

#124 Le 04/07/2013, à 20:48

earthwormjeff

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

2 ou 3 app_token + challenge et password qui fonctionnent et qui contiennent des "\/" (ou d'autres caractères spéciaux ?) pour que je puisse comparer avec mes résultats. Faut-il supprimer tout les "\" ou uniquement ceux suivis d'un "/" ?

Hors ligne

#125 Le 04/07/2013, à 21:39

Vinky41

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

En fait, les "retour" contiennent toujours les backslashs.

Les variables sont ensuite traitées pour les retirer.

Pour ce qui est des \ je les ai tous supprimés grâce à cette commande :

| sed 's/\\\//g'

soit la ligne suivante :

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"`

Je donnerais le github demain je pense avec le script complet wink

PS : Pour les app_token, je t'avouerais que je ne suis pas fan de les mettre à dispo sur le web sad

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

Hors ligne