Voilà un petit topo sur l'environnement logiciel de ces cam, après avoir poussé des analyses sur plusieurs modèles (merci au passage à tous ceux qui ont accepté de faire quelques tests qui m'ont été très précieux). J'essaierai de le faire évoluer au gré des avancées et commentaires.
Donc, pour rappel, ces cam ont un firmware "core" (qui, pour le moment, n'est jamais mis à jour), et un firmware "applicatif" de gestion de la fonction principale de caméra: c'est un peu pour cette dernière qu'on achète le produit à l'origine!! (encore que...
)
Firmware applicatif
Il est composé de 2 parties: l'application caméra (app.bin), et son interface de gestion (www.bin).
On les met à jour par l'interface de gestion: attention laisser la page web ouverte pendant toute la mise à jour, jusqu'au redemarrage (même si c'est long). En cas de pépins, on peut faire des mise à jour de secours par FTP, mais à éviter en fonctionnement normal (procédure différente).
En général on évite de faire les mise à jour en wifi, mais bon ça marche bien aussi...
Pour une version donnée du firmware, les app.bin sont les mêmes pour TOUTE cette famille de caméras. Certaines options/services sont activés (ou non) par des fichiers de config (voir plus loin).
Le www.bin contient les pages html/javascript de l'interface de commande, et le pluggin ocx.
L'html/javascript est facilement modifiable pour faire des petits hacks, ou customisations d'UI: il suffit de récupérer les fichiers par FTP, les modifier, les remettre.
(ex, permettre des URL non limitées à 64 caractères pour la fonction HTTP Alarm - fonction corrigée depuis le firmware 5.59 et son www.bin associé).
Tout comme pour le app.bin, on peut sans problème utiliser des www.bin d'autres manufacturiers, si on a des préférence sur la partie graphique, moins de bugs, etc.
Il faut juste veiller à ce qu'elle corresponde à un app.bin de la même version que celui que vous utilisez.
Un moyen simple pour vérifier que des fichiers sont exactement les mêmes, est de faire un calcul de MD5 et comparer les signatures résultantes (google est ton ami pour plus de précisions).
Fichiers de config
Vos config personnelles sont dans le fichiers cs.ini dans app/. On peut la sauvegarder sur le PC (et la restaurer) via l'interface de gestion.
Le firmware applicatif arrive avec un fichier de config de base: cs.def.ini. Il change à chaque version de app.bin, et est celui qui sert de base quand on ré-initialise la cam.
Deux autres fichiers (plus ou moins bien cachés) très sensibles (à ne pas détruire!) se trouvent dans eye/ (pour ceux qui y ont accès):
ldr.ini et board.dat: ce sont des paramétrages d'usine propres à chaque caméra.
Le premier est un fichier texte qui contient les infos de DDNS, UID P2P (reprises sur les étiquettes de la cam), et autres paramétrages liés à certains services ou mode de recovery. Un ldr.ini corrompu peut rendre la caméra instable. On ne peut en faire une sauvegarde que par accès telnet (ou via un hack, voir plus loin).
Le board.dat est un fichier binaire d'authentification crypté (genre de license, 2048 octets), qui contient les mêmes infos (MAC, UID, DDNS), et qui avec le HID permet au logiciel de vérifier que ces paramètres n'ont pas été altérés.
Cette vérification de license signale si le HID est authentifié (valide et cohérent) ou non sur la page d'information système.
Même si souvent une incohérence de license ne pose aucun problème, elle peut parfois rendre la caméra instable et provoquer des redemarrages fréquents: c'est en particulier le cas depuis le firmware applicatif 5.53.
Seul le fabricant/Maygion peut générer un nouveau fichier de license board.dat basé sur le quadruplet spécifique à chaque cam: HID, MAC, DDNS, UID.
Il peut-être prudent de sauvegarder son board.dat, soit via FTP (si on a le FTP Maygion), soit via l'url http://IP:PORT/board.dat
Les infos de DDNS et UID correspondent à des comptes créés par le fabricant (ou Maygion?): on ne peut pas "inventer" des comptes, tout au plus en les changeant on peut tomber sur le compte d'autres utilisateurs...On peut parier que ça puisse créer des situations cocasses voire embarrassantes si ce genre de conflit n'est pas géré par le serveur (accéder à la cam de quelqu'un d'autre?). On comprend donc l'intéret de pouvoir "vérouiller/signer" ces services et de vérifier l'authenticité de ces config.
Firmware "core" et fonctions diverses: FTP, Telnet, etc…
Le firmware core est un noyau Linux 2.6.36, uClibc 0.9.28, une busybox pour les fonctions shell de base, et quelques applications supplémentaires.
A ce jour, il n'y a pas de procédure pour mettre à jour (de manière permanente...
) cette partie.
Cet environnent est donc la base immuable qui fait que la cam n'est jamais "briquée" de manière irrécupérable: le système redémarre toujours avec au moins le FTP, éventuellement le telnet qui permettent de remettre la cam d'aplomb (IP statique 192.168.1.111 sur ethernet dans les pire cas).
Ce socle est commun pour toutes les cam,…à quelques bricoles près si on veut pinailler…
En effet certaines cam "n'ont pas" telnet, ou ont un FTP "différent" (login Maygion ou login via les comptes de la cam, accès à toute la cam ou restreint à app/ et www/, …).
On peut TOUJOURS activer le telnet et le FTP Maygion (le plus complet) sur toutes les cam!! En fait les binaires sont présents dans tous les cas, et ce n'est qu'une question de config au démarrage pour activer ces fonctions.
Il y a aussi de légères différences dans les busybox des diverses versions de cam: la liste des commandes shell ("applet" ) disponibles peut parfois être marginalement différente, mais rien de crucial.
J'ai noté un seul composant notoire (un petit utilitaire de démarrage) plus récent sur les dernières cam P2P: il doit surement faire des trucs mieux qu'avant, mais j'ai pu faire du P2P avec l'ancienne version aussi...
Pas de problèmes pour l'installer dynamiquement sur une "vieille" cam.
Ce qui veut dire que, dans une certaines mesure, on peut faire évoluer les vieilles cam au niveau des nouvelles si le besoin s'en fait sentir!...
Hacking !...
En fait, on peut même aller beaucoup plus loin: on peut installer n'importe quel soft sur cette plateforme (pourvu qu'il ne soit pas trop gros et gourmand quand même): il suffit de se construire le bon environnement de développment/cross-compliation MIPS (little endian) sur son PC, et zou!
J'ai pu par exemple recompiler une busybox plus étendue et la faire tourner sur la cam.
Les possibilités de hack sont donc énormes, et finalement assez simples à mettre en oeuvre, …tant que Maygion ne bouche pas les "trous".
Par exemple, ll semble qu'il y ait un "cadavre" de config d'un serveur iTunes (mt-daapd) dans le firmware core: bon ça ne fait pas trop de sens sur ce matériel sans gros espace de stockage, mais, conceptuellement, on pourrait effectivement installer ce genre de serveur.
Donc, il n'y a plus qu'à être créatif, et envisager quelles applications utiles (serveur, éventuellement pilotable par interface web) on pourrait mettre là-dessus en parallèle de l'application caméra de base!...
Faites part de vos idées. Si un projet faisable se dégage, on pourra regarder ça!
Hackmaster: le système de hacking !!
Afin de pouvoir ajouter des applications/fonctions (appelés "hacks" ) au produit, j'ai mis au point un système (Hackmaster) qui permet facilement d'installer, mettre à jour, supprimer ces petits utilitaires. Ces interventions se font avec la fonction mise à jour système classique de la caméra (installation de app.bin). Evidemment ce sont des app.bin un peu particuliers...
On peut voir ce qui est installé et actif, en regardant le panneau d'information système sur l'interface Web, qui liste les hacks et leurs versions.
Hackmaster est donc la première pièce maitresse à installer. Elle reste à demeure (à moins qu'on veuille supprimer tout ce système de hack), et survit aux mise à jour (à moins que Maygion tente de l'empècher dans le futur...): il fonctionne avec toutes les versions système connues à ce jour (6.40 inclus).
Une fois Hackmaster installé, on peut installer des hacks qui implémentent les fonctions souhaitées.
Voici donc un petit descriptif des "hacks" disponibles. D'autres viendront, si besoin.
ATTENTION: pour installer tous ces programmes avec la fonction de mise à jour système, il FAUT les renommer app.bin préalablement!!
Ces fichiers ne sont PAS compatibles avec les Cybernova WIP604SW et Dericam 803W et autres dérivées (2 antennes) qui ont un firmware de base significativement différent: brick certain, et récupération non confirmée...
inject.bin: à tout seigneur, tout honneur: c'est la pièce maitresse qui installe Hackmaster. Il installe aussi le système 5.60.
Il est possible de changer la version du système une fois Hackmaster installé, en installant les mise à jour de façon habituelle. Hackmaster survit à ces mise à jour. Voir plus loin si on désire éliminer Hackmaster (et les hacks).
Ensuite installer des hacks, selon vos besoins.
Note: Il est inutile d'installer un hack qui active une fonction qui marche déjà sans hack! (ex: si telnet marche déjà, inutile d'installer tnt)
tnt.bin: hack qui active la fonction telnet de la cam.
bbx.bin: hack qui installe la dernière version de la Busybox complète: permet d'utiliser la plupart des commandes linux sous telnet. Pour les fana de bidouilles.
A noter que ce hack ne fonctionne que si la cam a un acces internet. Ce hack indique si l'installation de la busybox s'est passée correctement ou pas en créant des "fichiers-messages" dans le répertoire /tmp
ocx.bin: hack qui supprime le fichier ocx2.exe du répertoire www/ (économisant ainsi 600KB de flash), et permet de télécharger le précieux ocx2.exe depuis internet, si on en a besoin quand même. Il fera son boulot à toute mise à jour du www.bin. Si on veut conserver un www.bin d'origine, supprimer ce hack AVANT de ré-installer le www.bin.
mSD.bin: hack qui permet de "monter" la carte SD via FTP, pour faciliter les échanges avec un PC/Mac. Sous Windows, MacOS, Linux, il existe des solutions pour monter un volume par FTP: on accède ainsi à la carte SD de la cam sur son gestionnaire de fichier sur l'ordinateur.
La carte SD se trouve alors en ftp://user:pass@IP/app/SD. Le hack indique si la carte est montée en postant un "fichier-message" dans /tmp.
ftM.bin: hack qui active le FTP Maygion qui est plus complet que le FTP de base offert par certaines cam. Ne pas installer ce hack en même temps que ftB: seulement un serveur FTP peut être actif.
ftB.bin: hack qui active le FTP de Base: peu d'intérêt, mais bon s'il y en a qui préfèrent celui-là... Ne pas installer ce hack en même temps que ftM: seulement un serveur FTP peut être actif.
kWF.bin: hack qui désactive le Wifi de manière plus radicale que l'interface web: en effet, il semble que le Wifi emette toujours lorsqu'il est désactivé par l'interface web. Avec ce hack, le wifi est bel-et-bien éteint. Peut-être utile pour ceux qui sont inquiets des rayonnements pour des applications type veille-bébé. Penser évidement à brancher la cam en ethernet, et enlever ce hack pour récupérer le wifi! Merci à vprasinos pour la suggestion.
log.bin: hack qui génère un fichier log dans app/. Ce fichier peut aider à faire certains diagnostics de la caméra: on le récupère par FTP pour l'analyser sur le PC. Comme en général, il n'y a pas de raison de lancer un diagnostic à chaque démarrage, mais juste de manière ponctuelle, ce hack ne fonctionne qu'une seule fois à l'installation: il s'auto-détruit ensuite.
no_hacks.bin: hack qui désinstalle tous les hacks, mais laisse Hackmaster.
clean-up.bin: hack qui désinstalle ENTIEREMENT le système de hacks (Hackmaster ET les hacks), et remet la caméra en mode "normal".
-----
Remerciements: Je tiens à remercier tout particulièrement Bubbah et paillassou, ainsi que azazel673, Aahem, skoubri et de nombreux autres pour leurs partages d'informations, d'expériences, et nombreux tests qui m'ont permis de comprendre le fonctionnement de cette famile de caméras.