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. 🙁
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 ? 🙁