[freebox-elixir] API Elixir: fonctions usid() et gsid()

9 views
Skip to first unread message

nouknouk

unread,
May 3, 2010, 2:22:25 PM5/3/10
to freebox-elixir
Re,

D'après la doc sur elixir.freebox.fr , l'API de base propose deux
fonctions:

* usid(): Retourne une chaîne de caractères unique qualifiant le
JavaScript en cours d'exécution.
* gcid(): Retourne une chaîne de caractères unique qualifiant tous les
JavaScript exécutés depuis le démarrage d'Elixir.


Mais:

1/ Je n'arrive pas à appler ces deux fonctions dans Elixir, que ce
soit sur la freebox ou dans l'environnement de développement. Ces deux
fonctions sont-elles encore dispo ? Si oui, comment les appeler ?

2/ pourrait-on avoir plus de précisions sur ce qui est 'qualifié' par
ces deux 'hash' : dans quels cas il demeure constant (d'une exécution
à l'autre ? d'une freebox à l'autre ? d'un firmware à l'autre ? d'un
moment à l'autre si entre temps j'ai eu un appel à 'eval' ou si j'ai
changé quelques valeurs de variabless ? d'un nom ou d'un timestamp de
fichier JS à l'autre ? d'un elx.include à l'autre ? etc...) et dans
quels cas il change.

Merci d'avance.

nouknouk

unread,
May 3, 2010, 2:41:34 PM5/3/10
to freebox-elixir
Au temps pour moi: les fonctions existent bel et bien ; j'avais fait
deux erreurs de typo.
Donc pour les appeler, c'est

var usid = elx.usid();
var gcid = elx.gcid();

Reste donc la question 2/

Merci d'avance.

Nouk²

nouknouk

unread,
May 4, 2010, 6:17:25 AM5/4/10
to freebox-elixir
Après quelques tests, j'ai pu voir que:

- les résultats renvoyés sont constants sur la freebox HD tant que le
fichier du code source est strictement identique. Même après un reboot
de la freebox, les résultats restent les mêmes.

- le GCID est identique à l'USID par défaut. Mais à partir du moment
où on fait un elx.include('unAutreFichier'), le GCID change par
rapport à l'USID (il ressemble d'ailleurs à une concaténation des deux
USID de chaque fichier).

- l'environnement de développement (Elixir exécuté sur mon ordi, donc)
donne des résultats différents de la freebox HD. De plus, les
résultats ne semblent pas constants d'une exécution à l'autre ; ils
changent à chaque fois.

- il semblerait que l'exécution de code supplémentaire via la fonction
'eval' ne change pas pour autant les résultats des deux fonctions ;
j'imagine donc que le hash retourné est fonction du contenu du code
source chargé au lancement (ou via un elx.include).

- je n'ai pour le moment pas vu de changement des valeurs même si je
modifie certains paramètres de la freebox. Mais n'ayant pas tout
testé, je ne peux pas conclure sur ce point.

- n'ayant pu de faire de tests ailleurs que sur ma propre freebox HD
et dans mon propre environnement de développement, je sais toujours
pas si les résultats sont identiques d'une freebox HD à l'autre et
d'un firmware à l'autre.


Voilà pour les quelques résultats que j'ai pu obtenir de façon
empirique.


J'aimerais néanmoins avoir plus de précisions sur le fonctionnement de
ces fonctions:
- la capacité de l'ensemble des freebox HD du parc à fournir toutes
(et toujours) les mêmes résultats pour les mêmes fichiers sources
- l'impossibilité de reproduire les résultats sur l'environnement de
développement
- les facteurs qui pourraient faire changer les résultats
(configuration spéciale, version du firmware, version de la box,
actions faites par le programme JS, ...).


Merci d'avance.

Nouk²

Cedric BAIL

unread,
May 4, 2010, 6:56:29 AM5/4/10
to freebox...@googlegroups.com
2010/5/4 nouknouk <nouk...@gmail.com>:
> Après quelques tests, j'ai pu voir que:
>
> - les résultats renvoyés sont constants sur la freebox HD tant que le
> fichier du code source est strictement identique. Même après un reboot
> de la freebox, les résultats restent les mêmes.

Exact.

> - le GCID est identique à l'USID par défaut. Mais à partir du moment
> où on fait un elx.include('unAutreFichier'), le GCID change par
> rapport à l'USID (il ressemble d'ailleurs à une concaténation des deux
> USID de chaque fichier).

C'est effectivement une concatenation.

> - l'environnement de développement (Elixir exécuté sur mon ordi, donc)
> donne des résultats différents de la freebox HD. De plus, les
> résultats ne semblent pas constants d'une exécution à l'autre ; ils
> changent à chaque fois.

Exact, le hash depend d'un clef prive qui se trouve dans
/etc/elixir.keys. Si vous voulez obtenir une valeur stable entre deux
executions, il suffit de mettre n'importe quoi dans ce fichier. Le
principe de cette clef prive est de vous permettre d'identifier de
maniere sur que le JS qui se connecte n'a pas ete modifie et qu'il est
bien execute depuis une Freebox.

> - il semblerait que l'exécution de code supplémentaire via la fonction
> 'eval' ne change pas pour autant les résultats des deux fonctions ;
> j'imagine donc que le hash retourné est fonction du contenu du code
> source chargé au lancement (ou via un elx.include).

Oui, eval n'affecte pas USID, ni pour l'instant le GSID.

> - je n'ai pour le moment pas vu de changement des valeurs même si je
> modifie certains paramètres de la freebox. Mais n'ayant pas tout
> testé, je ne peux pas conclure sur ce point.

Il ne peut y avoir changemetn de valeur que si on change la clef sur
la box. Ce qui n'arrivera que si elle est compromise.

> - n'ayant pu de faire de tests ailleurs que sur ma propre freebox HD
> et dans mon propre environnement de développement, je sais toujours
> pas si les résultats sont identiques d'une freebox HD à l'autre et
> d'un firmware à l'autre.
>
>
> Voilà pour les quelques résultats que j'ai pu obtenir de façon
> empirique.
>
>
> J'aimerais néanmoins avoir plus de précisions sur le fonctionnement de
> ces fonctions:
> - la capacité de l'ensemble des freebox HD du parc à fournir toutes
> (et toujours) les mêmes résultats pour les mêmes fichiers sources

Oui. C'est le cas.

> - l'impossibilité de reproduire les résultats sur l'environnement de
> développement

Oui, c'est voulu. Meme si on peut emuler la stabilite.

> - les facteurs qui pourraient faire changer les résultats
> (configuration spéciale, version du firmware, version de la box,
> actions faites par le programme JS, ...).

Uniquement une decision de notre part de changer la clef secrete pour
un probleme de securite.
--
Cedric BAIL

nouknouk

unread,
May 4, 2010, 6:59:44 AM5/4/10
to freebox-elixir
Merci pour toutes ces réponses.

Nouk²
Reply all
Reply to author
Forward
0 new messages