Tous les projets

ID Projet Ouverte Type Catégorie État Résumé
37679Freebox Server (Ultra V9/ Pop V8/ Delta V7 / Revolution V6 / Mini 4K)07/02/2023AnomalieAPINouveauAPI V10 retourne invalid_token après génération du hmac Description de la tâche

Bonjour,

Je tente depuis plusieurs jours de taper via API ma freebox server revolution (A jour du dernier firmware)

J’ai donc bien suivis la DOC, et je suis en python 3.8

1 - Générer mon application, puis la confirmer sur le front en physique, j’ai le “status”:”granted” 2 - Je récupère le challenge
3 - Tentative d’ouverture de session via le password généré depuis le app_token et le challenge

J’obtiens en retour (tout est anonymisé) :

{'uid': '732edfg65fgaze', 'success': False, 'msg': "Erreur d'authentification de l'application", 'result': {'password_salt': 'M/iYdsf6a9dhyuiods9qsxtfpc+r1KFB', 'challenge': 'KRgdfez6r5sHHRTEuygfvVTGK'}, 'error_code': 'invalid_token'}

Je ne comprend pas ou la raison du soucis, si quelqu’un peut m’éclairer si je me suis trompé ou si c’est un bug

import datetime
import hashlib
import hmac
import json
import pickle
import time
import requests
import urllib3
import sys
import base64

def make_digest(message, key):
    
    key = bytes(key, 'UTF-8')
    message = bytes(message, 'UTF-8')
    
    digester = hmac.new(key, message, hashlib.sha1)
    #signature1 = digester.hexdigest()
    signature1 = digester.digest()
    #print(signature1)
    
    #signature2 = base64.urlsafe_b64encode(bytes(signature1, 'UTF-8'))
    signature2 = base64.urlsafe_b64encode(signature1)    
    #print(signature2)
    
    return str(signature2, 'UTF-8')

appid = "applicationidcustom"
appname ="AppnameCustom"
devicename ="Dlocalcustom"
appversion = "1"
apptoken = "dfgmonapptokengenererlorsdelauthOw0Udhyq/"

#Etape 2 : Obtenir le challenge value avant de sauthentifier
url = "http://mafreebox.freebox.fr/api/v10/login/"
headers = {"Content-Type": "application/json; charset=utf-8"}
response = requests.get(url, headers=headers)
ReturnResponse = response.json()
if ReturnResponse["success"] == False:
	sys.exit(0)

#Etape 3 : Recuperation du token de session
CurrentChallenge = ReturnResponse["result"]["challenge"]
CurrentPassword = make_digest(CurrentChallenge, apptoken)
url = "http://mafreebox.freebox.fr/api/v10/login/session/"
data = {"app_id": appname, "password": CurrentPassword}
headers = {"Content-Type": "application/json; charset=utf-8"}
response = requests.post(url, headers=headers, json=data)
ReturnResponse = response.json()
print(ReturnResponse)
#{'uid': '732edfg65fgaze', 'success': False, 'msg': "Erreur d'authentification de l'application", 'result': {'password_salt': 'M/iYdsf6a9dhyuiods9qsxtfpc+r1KFB', 'challenge': 'KRgdfez6r5sHHRTEuygfvVTGK'}, 'error_code': 'invalid_token'}
Tâches 1 - 1 sur 1 Page 1 sur 1

Activer les raccourcis clavier

Liste des tâches

Détails de la tâche

Édition de la tâche