Tuto Rapido NB5

De neufbox 4

par Vincent Alex,SGDA,FHO Corp,Zbox,Supercactus,gerald ...ect


Le but de ce tutoriel est d'obtenir des accès root sur la NB5 (neufbox fibre) par ajout de comptes personnalisés et de pouvoir utiliser cette dernière comme on le souhaite (routeur fibre & ethernet...etc).

13/11/2014 : /!\ Tutoriel en cours de création !

Important : à lire avant toute modification

  • Ne modifiez seulement une neufbox dont vous êtes propriétaire. Il est possible d'en acheter une neuve pour 50 € dans les grandes surfaces (Auchan, Fnac, Boulanger, ...) ou une d'occasion pour moins cher encore.
  • N'appelez la hotline que si vous constatez des dysfonctionnements avec une neufbox d'origine (c'est-à-dire non modifiée et surtout avec un firmware officiel).

Si vous modifiez une neufbox, prenez vos responsabilités. Si vous pensez qu'il y a des problèmes avec votre ligne ADSL, remettez une neufbox d'origine avant d'appeler la hotline.

Merci


Pour suivre ce tutoriel, il faut aussi maitriser le système linux car les étapes ne sont pas détaillées à 100%.

Etape 1 : Recuperation du firmware

Recuperation du dernier firmware en date:

EDIT: SFR on effectué une mise à jour de leur serveur donc les liens sont inaccessibles. On utilisera donc le mirroir de fhocorp.

Version 3.0.19

http://openbox4.fhocorp.com/neufmirror/download.nb5thd.neufbox.neuf.fr/nb5thd_Version%203.0.19/nb5-3.0.19.sha256sum

# NB5 3.0.19 sha256sum
#
dcea3613710c32f963288e2d97725f1212eb9839157b81d43a2b643771a9976c  NB5-MAIN-R3.0.19
286dcb743aa3ad66f8faf6e8e7421f069978539f1ca18cd734ac76197e78aa38  NB5-CONFIG-R84.0
99d257ee591112583a66740a91390e9fea3d5be2ccc8e660fcf33ec19e983223  NB5-BOOTLOADER-R1.0.0
e82b966127e5f1bc4f0390b921878afd9546967f282ef9f275febd000fb14b3a  NB5-RESCUE-R3.0.17

Version 3.0.20

http://openbox4.fhocorp.com/neufmirror/download.nb5thd.neufbox.neuf.fr/nb5thd_Version%203.0.20/nb5-3.0.20.sha256sum

#
# UUID: 090ac390-d361-4495-9e57-81beb7286f8c
#
# NB5 3.0.20 sha256sum
#
99d257ee591112583a66740a91390e9fea3d5be2ccc8e660fcf33ec19e983223  NB5-BOOTLOADER-R1.0.0
286dcb743aa3ad66f8faf6e8e7421f069978539f1ca18cd734ac76197e78aa38  NB5-CONFIG-R84.0
339a02b4423c16b6edb6a4c7edc67fb85fd5f6631fb9b91181dbd5876ef4ce5c  NB5-MAIN-R3.0.20
e82b966127e5f1bc4f0390b921878afd9546967f282ef9f275febd000fb14b3a  NB5-RESCUE-R3.0.17

Pour les versions les plus ancienne voir ici : http://openbox4.fhocorp.com/neufmirror/download.nb5thd.neufbox.neuf.fr/

Etape 2 : Extraction du firmware

nb5 extract

  • script nb5-extract : dispo sur le dépot SFR de FHOCorp

http://openbox4.fhocorp.com/tools/nb5-extract.sh

#!/bin/bash
LZMA="/opt/efixo/neufbox/openwrt/staging_dir/host/bin/lzma"
dd if=$1 of=NB5-KERNEL bs=128 skip=1
$LZMA d -d22 -fb64 -a1 NB5-KERNEL NB5-KERNEL.elf
ADDR=`hexdump -C NB5-KERNEL.elf |grep "  1f 8b 08 00" |awk ' {print $1} '`
OFFSET=$(/usr/bin/printf "%d\n" "0x"$ADDR)
echo $ADDR $OFFSET
#
dd if=NB5-KERNEL.elf of=NB5-ROOTFS.gz bs=1 skip=$OFFSET
gunzip NB5-ROOTFS.gz
mkdir -p fsb
cd fsb
cpio --no-absolute-filenames -i < ../NB5-ROOTFS
cd ..

à adapter pour le chemin complet d'un lzma openwrt

Usage:

./nb5-extract.sh NB5-MAIN-R3.0.20

/!\ Ne pas oublier de faire un cp du fichier NB5-ROOTFS.gz pendant l’exécution du script !

Etape 3 : Reconstruction du firmware

nb5 rebuilt

  • script nb5-rebuilt : dispo sur le dépot SFR de FHOCorp

http://openbox4.fhocorp.com/tools/nb5-rebuilt.sh

#!/bin/bash
cpio_orig="NB5-ROOTFS"
lzma_orig="NB5ROOTFS.gz"
cpio_new="aa.cpio"
lzma_new="aa.gz"
lzma_tmp="v00"
dir_fs="fsb"
list_add="B00"

# efface les fichiers à créer
rm -f $lzma_tmp $lzma_new
rm -f A1 A2 B1 B2

# récupère la liste des fichiers du cpio original
cpio -t < ./$cpio_orig >B1 2>/dev/null

# ajoute une liste de nouveaux fichiers
if [ -f $list_add ]
then
 cat $list_add >> B1
fi

#récupère la liste des fichiers du répertoire du nouveau fs
echo "Génération de la liste des fichiers"
./gen_initramfs_list.sh $dir_fs |sed -e '/ / s/ /@/' > A1 2>/dev/null
sed  -e ' s/.*/grep \"\@& \" A1 /'  -e'/\[/ s/\[/\\\[/g' <B1 > B2
/bin/sh -f ./B2 |sed -e '/\@/ s/\@/ /' > A2

# génère le nouveau cpio et le nouveau cpio_compressé
echo "Génération du fichier cpio et du fichier cpio compressé"
./gen_initramfs_list.sh -o $cpio_new ./A2
./gen_initramfs_list.sh -o $lzma_new ./A2 2>/dev/null

# calcul la taille de l'ancien et du nouveau cpio compressé"
echo "Ajustement de la taille du fichier cpio compressé"
x0=`wc -c $lzma_orig |cut -d' ' -f1`
x1=`wc -c $lzma_new |cut -d' ' -f1`
echo $x0 $x1
#ajuste la taille du nouveau cpio compressé à celle de l'ancien
if [ $x1 -lt  $x0 ]
then
 echo "Le fichier cpio compressé" $lzma_new " est valide"
 echo "marge de " $((x0 - x1)) "octets"
 dd if=/dev/zero of=$lzma_tmp bs=1 count=$((x0 -x1)) 2>/dev/null
 cat $lzma_tmp >> $lzma_new
 exit 0
else
 echo "Le fichier cpio compressé est trop grand de " $((x1 - x0)) "octets"
 exit 1
fi

Usage:

./nb5-rebuilt.sh

nb5 compress

Pour la compression:

  • script nb5-compress : dispo sur le dépot SFR de FHOCorp

http://openbox4.fhocorp.com/tools/nb5-compress.sh

#!/bin/bash
kernel_orig="NB5-KERNEL.elf"
cpio_lzma="aa.gz"
kernel_new="MB5-KERNEL"
offset=3493888

rm -f $kernel_new
echo "Extraction du vmlinux non compressé original"
dd if=$kernel_orig of=$kernel_new count=$offset bs=1  2>/dev/null
echo "Ajout du nouveau cpio compressé"
cat $cpio_lzma >> $kernel_new
echo "Compression du kernel "
/export/opt/newpwrt/trunk/staging_dir/host/bin/lzma e -fb64 -a1 $kernel_new $kernel_new.tmp 2>/dev/null

Usage:

./nb5-compress.sh

Le firmware est compressé. Il faut générer l’entête du firmware.

nb5 concat

Pour générer l’entête du firmware, un coup de nb5-concat (merci SGDA et VincentAlex)

Dispo sur le dépôt svn openbox4

[fho@fho-optiplex]$svn co http://svn.gna.org/svn/openbox4/trunk/firmware_3.x/tools/nb5-concat/ nb5-concat
[fho@fho-optiplex]make

Un binaire nb5-concat généré. Il est conseillé de le copier dans /usr/bin.

Usage :
[fho@fho-optiplex]$nb5-concat -o NB5-MAIN-R3.0.20 -v NB5-MAIN-R3.0.20 NB5-MAIN-R3.0.20

Le KERNEL compacté en lzma et contenant le ROOTFS doit s'appeler NB5-MAIN-R3.20-KERNEL dans le répertoire local.

Un firmware 'MAIN', nommé NB5-MAIN-R3.0.20 est crée.

Etape 4 : Flashage du firmware

EDIT 21/12/2014 : Le flashage s'effectue via un fichier flashimage.py modifié. A suivre...

/!\ Section en rédaction /!\ Merci de revenir plus tard