Archive for the 'utilitaire' Category

API REST de la box de SFR

apirest_4-0En exclusivité, neufbox4.org met à disposition la dernière version de la spécification de l’API REST correspondant aux dernières versions des firmwares des box de SFR (NB4, NB5, NB6, NB6V et NB6VAC).

Une API REST est un style d’architecture qui repose sur le protocole HTTP permettant d’accèder à une ressource (par son URI unique) pour procéder à diverses opérations (GET lecture / POST écriture) supportées nativement par HTTP.

Ainsi, cela permet de créer simplement des applis, widgets ou autre utilitaires permettant par exemple d’afficher l’état de la box mais aussi de modifier certains réglages. Par exemple, la méthode system.getInfo permet de connaitre, l’adresse MAC de la box, versions des firmware installés, temps depuis sa mise sous tension, … mais aussi d’autres données comme la tension d’alimentation ou encore la température de la box !

Exemple :

[14:00:42] curl http://neufbox/api/1.0/?method=system.getInfo
<?xml version="1.0" encoding="UTF-8"?>
<rsp stat="ok" version="1.0">
     <system product_id="NB6-SER-r0" mac_addr="" net_mode="router" net_infra="adsl" uptime="924506" version_mainfirmware="NB6-MAIN-R3.5.4" version_rescuefirmware="NB6-RESCUE-R3.5.4" version_bootloader="NB6-BOOTLOADER-R3.2.4" version_dsldriver="NB6-ADSL-A2pD035p" current_datetime="201609101403" refclient="" idur="" alimvoltage="12224" temperature="55873"  />
[14:01:06]

Téléchargement spécification de l’API REST

A vos claviers pour la création d’utilitaires interagissant avec votre box de SFR !

Ouvir une NB6 ?

Disponible depuis plusieurs mois, il n’était pas possible d’ouvrir aisément le firmware la neufbox6 car sa structure était différente de celui de la neufbox4. Une recette avait pourtant été proposée par SGDA sur le forum, mais bien trop complexe à mettre en oeuvre et limité car la taille du roofs ne devait pas ‘trop’ varier …

Or, depuis les versions 3.2.x du firmware de le neufbox6, il en est tout autrement, il est désormais similaire à celui de la neufbox4. Les différentes recette existantes pour la neufbox 4 sont donc désormais aussi applicables à la neufbox 6.

L’ouverture d’un firmware d’une neufbox consiste à extraire le rootfs d’une image officielle, de le décomapacter afin de le modifier en ajoutant un compte, avec mot de passe connu, (fichiers /etc/password et /etc/shadow). Ensuite, il faut refaire une image en compactant le rootfs modifié et l’assembler avec les autres parties non modifiée de l’image originale. Il ne reste plus qu’a flasher cette nouvelle image dans la neufbox pour avoir l’accès ssh dessus.

Les membres d’OpenBox4.Org avaient créé des outils « maison » pour chacune des étapes d’ouverture du firmware pour neufbox 4 (extraction, décompactage, compactage et assemblage). Aujourd’hui, ces outils ont été adaptés pour la neufbox6. Ils s’appellent nb6-extract et nb6-concat et leurs source sont disponible dans le déposé GNA d’OpenBox4.Org. Quand au décompactage/compactage du rootfs, les outils standards unsquashfs et mksquashfs4 d’une distribution openwrt récente font l’affaire.

A savoir aussi que la méthode pour flasher la neufbox6 est plus simple que celle de la neufbox4, car ne nécessite que des outils standards (tftp et dhcp configurés spécifiquement). Ce qui permet même de flasher une neufbox6 avec Windows !

Un tutorial à été créé expliquant toutes les étapes d’ouverture du firmware de la neufbox6 : de la récupération des images officielles au flashage  en passant par la modification du rootfs pour ajouter un compte utilisateur ayant les droit superutilisateur.

Vous avez maintenant toutes les cartes en main pour ouvrir et modifier à volonté le firmware de votre neufbox6.

Pour terminer, la mémoire flash de la neufbox6 est beaucoup plus grosse que celle de la neufbox4 ce qui permet d’y ajouter beaucoup plus de chose. Beaucoup de potentiel donc.

VincentAlex

Moniteur de trafic pour Neuf Box 4

thierry9c a annoncé l’information sur le forum hier, et Ptidic a créé une page sur le wiki.

Nb4Traff est un utilitaire pour Unix / Linux créé par phenix, à l’origine du site Neuf Box Opensource. C’est un script Bash permettant de créer des graphiques MRTG sur le trafic ATM de la Neuf Box 4.

Graphique MRTG du trafic ATM de la Neuf Box 4

MRTG (The Multi Router Traffic Grapher) permet de surveiller le trafic de son routeur et de tracer des graphiques. Il est écrit en Perl, et fonctionne sous Unix / Linux et Windows, ce qui permet de penser que le script de phenix peut être adapté pour fonctionner sous Windows également.

Pour l’instant, il NB4Traff ne prend en compte que le trafic ATM, l’auteur prévoit de surveiller le trafic IP également.

Nb4Traff est disponible sur le site de l’auteur.

nb4-extract passe en version 0.3

nb4-extract vient de passer en version 0.3. Cette version ajoute le support des sommes de contrôle présentes dans le firmware principal de la Neuf Box 4.

Ces sommes de contrôles étaient plus ou moins mystérieuses, ce n’est désormais plus le cas après de multiples essais et erreurs 😉

Le champ imageValidationToken est constitue de 3 CRC32 qui se suivent :

  • le CRC32 de l’image complète
  • le CRC32 du rootfs
  • le CRC32 du kernel

Et le champ tagValidationToken contient le CRC32 de l’entête, sans le champ tagValidationToken, et calculé après le remplissage du champ imageValidationToken.

La nouvelle version de nb4-extract permet donc de lire toutes ces sommes de contrôle et de vérifier qu’elles sont correctes.

Cela pourra certainement nous servir lors de la reconstruction d’une image pour calculer les bons CRC32 et les inscrire aux bons endroits.

Utilitaire nb4-extract

Je viens de mettre en ligne un utilitaire nommé nb4-extract qui permet d’extraire automatiquement les différentes partie du firmware (l’entête, le rootfs et le kernel) et qui donne des informations sur l’image.

Je compte rajouter ensuite l’extraction automatique du rootfs en squashfs-lzma modifié. Il est sous licence GPL, vous pouvez donc l’améliorer 😉

Merci à SGDA d’avoir fourni la version compilée pour Windows (qui fonctionne d’ailleurs très bien avec Wine sous Linux).