Remplacer le firmware de la fonera avec dd-wrt (sous Mac)

Attention, ce tutoriel ne concerne que les versions de firmware 0.7.1r2 ou plus récent.

Dans ce tutoriel je vais essayer vous expliquer comment flasher sa Fonera avec le firmware DD-WRT avec votre Mac préféré. DD-WRT, C’est quoi ? Tout simplement firmware alternatif qui vous apporte pleins de fonctions: un mode client en wifi, système de hotspot (Chilli) et encore pleins d’autres choses.. en plus il est gratuit. Pourquoi s’en priver ?

  • Ce dont vous aurez besoin
    • Un câble ethernet (RJ45, Droit): pour connecter la Fonera à votre machine,
      Un serveur http: OS X en intègre un,
      Un serveur tftp: OS X en intègre un aussi,
      Un client SSH, Telnet: Terminal, aussi intégré à OS X.
  • Attention, il est important de télécharger ces fichiers avant de commencer ce tutoriel car vous n’aurez plus de connexion a internet pendant la procédure… Sauf si vous avez plusieurs machines.. ;)

  • Vérifier la version de la fonera
  • 1. Procédure de reset:
    - Maintenez le bouton reset 30s,
    - Débranchez/retranchez l’alimentation tout en maintenant le reset,
    - Continuez a appuyer dessus jusqu’à ce que la led wifi s’allume puis s’éteigne (2-3 minutes),
    - Relâchez (enfin) le reset puis attendez (encore) 2-3 minutes que la led wifi s’allume de nouveau.

    2. Connecter: Pour cela on va brancher la Fonera directement à l’ordinateur en RJ45 puis configurer l’adresse Ip de la carte Ethernet en: 169.254.255.2/255.255.0.0 (la fonera ayant l’adresse: 169.254.255.1).
    3. Récupérer la version: Ouvrez votre navigateur et tapez dans la barre d’adresse « http://169.254.255.1″
    4. Si un login/mdp vous est demandé entrez:
    - login: root
    - pass: admin

  • Exploiter RADIUS pour obtenir un accès SSH
  • A chaque démarrage de la fonera elle se connecte a un serveur RADIUS (/usr/sbin/chilli_radconfig) pour télécharger la configuration la plus récente (/etc/chilli.conf).
    FON a pris des précautions pour sécuriser l’utilisation du serveur SSH mais n’a pas fait de même pour leur serveur RADIUS, nous allons exploiter cette faille en se connectant à un serveur spoofé qui va nous permettre d’avoir la main sur cette petite bête..
    Pour cela nous allons devoir faire pointer la Fonera sur un serveur DNS qui redirigera l’adresse « radius01.fon.com » vers un serveur RADIUS « Non-officiel » sur lequel elle récupérera un fichier config a notre sauce.

    En résumé. Donc tout ce que l’on a à faire c’est configurer la Fonera pour qu’elle pointe sur le DNS: « 88.198.165.155″ ce qui redirigera « radius01.fon.com » sur « kolofonium.datenbruch.de » (qui est un serveur Radius « pirate »).

    1. Ouvrez votre navigateur et tapez dans la barre d’adresse « http://169.254.255.1″
    2. Allez dans « advanced » et entrez les paramètres réseau avec:
    - Ip: une Ip valide derrière votre Box internet (ex: 192.168.3.20, chez moi)
    - Network Mask: 255.255.255.0
    - Gateway: L’Ip de votre Box Internet. (ex: 192.168.3.242, chez moi)
    - DNS: 88.198.165.155

    3. Connectez la Fonera directement a un des ports ethernet de votre box internet,
    4. Redémarrez enfin la Fonera puis attendez quelques minutes pour la redémarrer à nouveau.

    La modification touche le fichier « /etc/raddb/users », le nouveau contient:
    chillispot Auth-Type = External
    Exec-Program-Wait = "/etc/raddb/fonera.sh",
    CHILLICONF = "radiusserver1 radius01.fon.com",
    CHILLICONF = "radiusserver2 radius02.fon.com",
    CHILLICONF = "radiussecret garrafon",
    CHILLICONF = "dhcpif eth1",
    CHILLICONF = "uamsecret garrafon",
    CHILLICONF = "uamanydns",
    CHILLICONF = "uamallowed www.martinvarsavsky.net,www.google.com,www.flickr.com,static.flickr.com,video.google.com,216.239.51.0/24,66.249.81.0/24",
    CHILLICONF = "uamallowed www.fon.com,www.paypal.com,www.paypalobjects.com,www.skype.com,66.249.93.0/24,72.14.207.0/24,72.14.209.0/24,84.96.67.0/24,213.91.9.0/24,80.118.99.0/24",
    CHILLICONF = "uamallowed shop.fon.co.kr,secure.nuguya.com,inilite.inicis.com,fon-en.custhelp.com,maps.fon.com,c20.statcounter.com",
    CHILLICONF = "uamserver https://login.fon.com/cp/index.php",
    CHILLICONF = "# Greetings from Michael and Stefan",
    CHILLICONF = "# http://mrmuh.blogspot.com/ & http://stefans.datenbruch.de/lafonera/",
    CHILLICONF = "uamallowed stefans.datenbruch.de",
    CHILLICONF = "ipup /etc/init.d/dropbear",
    Fall-Through = 0

    On notera la ligne « ipup /etc/init.d/dropbear »: C’est elle qui lance le serveur SSH des que l’interface « publique » est démarrée.

  • Se connecter a notre joli serveur SSH
  • 1. Reconnectez la Fonera a votre machine par l’interface Ethernet (rappel ip: 169.254.255.1)

    2. Ouvrez un Terminal (Applications > Terminal) et tapez:
    # ssh root@169.254.255.1

    3. On accepte la clé et on entre le mot de passe « admin »

    4. Yeepee, on est dedans :)

    5. Activer le SSH en permanence:
    # mv /etc/init.d/dropbear /etc/init.d/S50dropbear

  • Configurer notre serveur HTTP
  • 1. Rendez-vous dans vos « Préférences systèmes » puis dans « Partage », Activez le « Partage web ». Notez l’url du bas, (ici: http://mac.local/~rzo ou http://169.254.5.199/~rzo) Vous trouverez votre Ip dans les préférences réseau de OSX, la mienne est « 169.254.5.199″

    2. Puis mettez les 2 fichiers téléchargé plus tôt dans le répertoire de partage web de votre utilisateur (/Users/’nomUtilisateur’/Sites/)
    - openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
    - out.hex

  • Accès à la mtd
  • 1. On récupère nos fichiers sur la Fonera:
    # cd /tmp
    # wget http://169.254.5.199/~username/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma

    2. On flashe avec le firmware modifié, ce qui nous permet un accès à la mtd:
    # mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
    # reboot

    Soyez patients, cela peut prendre du temps…

    3. on se reconnecte en SSH et on lui applique le out.hex (fichier config redboot)
    # cd /tmp
    # wget http://169.254.5.199/~username/out.hex
    # mtd -e "RedBoot config" write out.hex "RedBoot config"
    # reboot

    Attention, si vous avez l’erreur: « Could not open mtd device » assurez vous d’avoir tapé la commande en respectant les majuscules, c’est case sensitive.

  • Configurer le serveur tftp
  • 1. Entrez dans un Terminal: (dans mon cas il existait déjà.. vérifiez quand même..)
    sudo mkdir /private/tftpboot

    2. Copiez le firmware de dd-wrt à la racine du serveur tftp (linux.bin):
    - Déplacez le fichier sur le bureau.
    - Tapez:
    sudo cp ~/Desktop/linux.bin /private/tftpboot/

    3. On démarre le serveur tfp, tapez:
    sudo /sbin/service tftp start

  • Quand on touche au but..
  • NOTA: A ce stade la Fonera ne peux pas démarrer correctement, c’est normal – et indispensable – le répertoire FIS est complètement effacé. Par contre nous pouvons toujours nous connecter au RedBoot, pour cela:

    1. Configurez votre carte Ethernet pour avoir l’Ip: 192.168.1.10

    2. Préparez un Terminal avec la ligne suivante: Ne tapez pas entrée tout de suite !
    $ telnet 192.168.1.254 9000

    3. Débranchez et rebranchez l’alimentation de la Fonera, puis validez la commande ci-dessus dans les 10 secondes qui suivent le branchement.
    NOTE: Le pre-boot de la Fonera peut prendre du temps, n’hésitez pas à retaper la commande plusieurs fois.. (Tips: Flèche haut).

    4. On a le shell, on configure le réseau. qui va pointer sur notre serveur tftp:
    > ip_address -l 192.168.1.254/24 -h 192.168.1.10

    5. Puis on flashe ! Répondez « y » quand on vous pose des questions.
    > fis init
    > load -r -b 0x80041000 linux.bin
    > fis create linux

    Ces commandes sont très longues a exécuter, ne vous affolez pas ! (« fis create linux » a pris 30 minutes chez moi…).
    Ne pas rebooter ensuite, il va falloir modifier le script de démarrage !

    RedBoot> fconfig
    Run script at boot: true
    Boot script:
    .. fis load -l vmlinux.bin.l7
    .. exec
    Enter script, terminate with empty line
    >> fis load -l linux
    >> exec
    >>
    Boot script timeout (1000ms resolution): 10
    Use BOOTP for network configuration: false
    Gateway IP address:
    Local IP address: 192.168.1.254
    Local IP address mask: 255.255.255.0
    Default server IP address:
    Console baud rate: 9600
    GDB connection port: 9000
    Force console for special debug messages: false
    Network debug at boot time: false
    Update RedBoot non-volatile configuration - continue (y/n)? y
    ... Erase from 0xa87e0000-0xa87f0000: .
    ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
    RedBoot>reset

    Voilà, vous y êtes, redémarrez la Fonera, configurez votre réseau ethernet (ou wifi) en DHCP puis lancez un navigateur sur l’url: http://192.168.1.1. Félicitation.

    NOTE: l’utilisateur/mot de passe est le même. login: root, mdp: admin

    Possibly Related Posts:



    5 responses so far, want to say something?

    1. Bluetouff says:

      Excellent, je vois qu’on a pas mal de passions en commun. Je sais pas si tu t’es aussi interessé aux firmwares Robin based, plus particulièrement au projet OpenMesh, voici quelques links sympa si tu ne les connais pas dejà :

      - http://open-mesh.com
      - http://open-mesh.org
      - http://blogin.it/

      RépondreRépondre
    2. Adri says:

      Tiens, Mr Chrome, enchanté de te voir ici ;)

      Oui, j’ai un peu suivis ces projets – j’aime beaucoup le principe, d’ailleurs – mais habitant actuellement sur un terrain militaire je ne peux pas trop me permettre d’envoyer la sauce sur les 2-gigas-4. Par contre, je suis toujours friand de bidouiller tout ce qui peut fonctionner sous *nux.. j’ai aussi un wrt54g sous OpenWrt (prochaine étape, la Senseo sous Bsd :))
      D’ailleurs en parlant du wrt54g, prochainement un gros tutoriel dessus !

      Au fait, j’avais pas vu que tu appartenais à toonux.com (ou l’inverse…), j’étais déjà tombé quelques fois dessus.. il y contient des ressources plus que sympathiques !

      RépondreRépondre
    3. PierreH says:

      Bonsoir et un grand merci pour ce tuto qui m’a permis de faire exactement ce qui est décrit !

      RépondreRépondre
    4. Adri says:

      Merci pour le petit mot, ça fait toujours plaisir ! ;)

      RépondreRépondre
    5. abyss says:

      voila, je debarque sur cette page 2 ans aprés et ca marche plus, ou alors j’ai raté un truc !
      Ma fonera est en version 0.7.2 r3 et le login root – admin ne marche plus !
      J’ai bien respecté (je pense) la manip du reset qui dure 5 mn :(

      on a t’il changé les acces ???

      RépondreRépondre

    Laisser un commentaire

    IMGP1923IMGP1922IMGP1919IMGP1904IMGP2570IMGP2561IMGP1089IMGP1084IMGP1081IMGP1075IMGP1469IMGP2319