dathosim / Pronote2Homeassistant

Tuto et bout de code pour ajouter des éléments de Pronote dans Home assistant
Apache License 2.0
40 stars 20 forks source link

Erreur "Padding is incorrect" #3

Closed djtale closed 2 years ago

djtale commented 2 years ago

Bonsoir,

Lorsque j'exécute la ligne de commande suivante pour tester l'exécution du script : /usr/local/bin/python3 /config/python_scripts/pronote.py > /config/pronote.log 2>&1

J'ai cette erreur `Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/pronotepy/pronoteAPI.py", line 261, in aes_decrypt return Padding.unpad(cipher.decrypt(data), 16) File "/usr/local/lib/python3.9/site-packages/Crypto/Util/Padding.py", line 92, in unpad raise ValueError("Padding is incorrect.") ValueError: Padding is incorrect.

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/config/python_scripts/pronote.py", line 18, in client = pronotepy.Client('https://'+prefix_url+'.index-education.net/pronote/eleve.html?login=true', username, password) File "/usr/local/lib/python3.9/site-packages/pronotepy/clients.py", line 283, in init super().init(pronote_url, username, password, ent) File "/usr/local/lib/python3.9/site-packages/pronotepy/clients.py", line 78, in init self.logged_in = self._login() File "/usr/local/lib/python3.9/site-packages/pronotepy/clients.py", line 130, in _login dec = e.aes_decrypt(bytes.fromhex(challenge)) File "/usr/local/lib/python3.9/site-packages/pronotepy/pronoteAPI.py", line 263, in aes_decrypt raise CryptoError('Decryption failed while trying to un pad. (probably bad decryption key/iv)') pronotepy.exceptions.CryptoError: Decryption failed while trying to un pad. (probably bad decryption key/iv) ` J'ai trouvé le chemin de python en faisant : which python3

J'ai également importer le module pronotepy avec la commande: pip install pronotepy

Home Assistant tourne actuellement dans un container Docker dans mon synology.

djtale commented 2 years ago

Je me réponds à moi-même. J'utilisais les identifiants parents alors que l'url dans le script pointe vers la page eleve.html. en remplaçant par parent.html, j'ai une erreur :

Traceback (most recent call last): File "/config/python_scripts/pronote.py", line 24, in <module> lessons_today = client.lessons(date.today()) File "/usr/local/lib/python3.9/site-packages/pronotepy/clients.py", line 323, in lessons l_list = response['donneesSec']['donnees']['ListeCours'] KeyError: 'ListeCours'

djtale commented 2 years ago

Et je pense que l'erreur vient du fait que je n'utilise pas l'url eleve mais parent et que ce n'est pas 100% compatible : https://github.com/bain3/pronotepy/issues/12

Sauf que j'ai mes identifiants parent et que je ne connais pas celui de ma fille.

Ce serait possible de prendre en compte l'utilisation du compte parent plutôt que du compte eleve ?

Merci

dathosim commented 2 years ago

Merci pour les retours ! En effet, on m'a déjà soumis l'idée des identifiants parents - ça devrait fonctionner sauf si dans pronote le compte parent n'a pas accès à tout - ça pourrait venir d'une histoire de droits.

Mais je vais tester avec les miens pour voir

Aussi, je vois qu'il me manque quelques gestion d'erreur dans le code - comme renvoyer un message clair quand les identifiant sont incorrects 😜