Linksys WRT54GL
De Hack-it.org.
Ou l'art de faire tomber les filles avec son routeur.
Wouahhh, il symbolise l'internet!
Bon vieux matos, 50 euros. Faites attention à ce qu'il y ait bien le "L" comme linux, pour bidouiller le firmware à pleines mains. J'ai pris ça en suivant les conseils d'il y a 2-3 ans (une éternité en nanosecondes informatiques)... Evitez à tout prix le chipset Broadcom, les mecs. Ce routeur c'est celui qui était bien, avant. De nos jours on a l'air con avec ça, les enfants vous disent que ça sucks, vous verrez pourquoi dans la suite de cet article.
Nous, on va faire avec. D'abord, parce que nous l'avons déjà, que nous aimons nous donner du "nous", et qu'en ramassant la doc éparse sur le net, nous avons un corpus de hacks que les autres routeurs en mini-jupe n'ont pas. Et puis Broadcom pourrait faire un geste, comme Mr Scrooge à Noël, et ça changerait tout.
Hardware en bref
- CPU: 200Mhz (BCM3302 V0.8) Overclockable
- Architecture: MIPS
- RAM: 16Mo extensible(*)
- Mémoire de masse: flash 4Mo extensible(*)
- Chipset: Broadcom sa mère les drivers libre BCM5352EKPB
Ports:
- 4x ethernet lan
- 1x ethernet wan
- 2x RP-TNC
- JTAG(*)
- Serial(*)
- SD-Card(*)
(*)hardware hack au fer à souder.
OpenWRT
- Qu'est-ce? : http://fr.wikipedia.org/wiki/OpenWrt
- Site officiel: http://openwrt.org/
Fonctionne sur beaucoup d'autres bécanes que le WRT54GL notamment sur le fonera. Et là j'ai été con, parce qu'au début ils le filaient gratos le fonera, pour les gens surinformés up-to-date qui lisent les news de merde. J'avais juste à confirmer le mail, puis je me suis dit nan c'est une arnaque de merde, je m'en bats les couilles de leur engin. En fait si j'avais su qu'on pouvait changer le firmware, j'aurais cliqué sur confirm. Mais bon, on se refait pas. Mais quel con.
OpenWrt est basé sur BusyBox
Pourquoi installer OpenWrt?
La vraie, la seule raison c'est ça:
JE CHANGE ÇA , ÇA ET ÇA, ET ÇA FAIT LE CAFE, JE BIDOUILLE UN SEUL TRUC MON AMI ET JE T'EN FAIS UN MIXER A POIREAUX.
(lire la bonne vieille blague http://humour.developpez.com/bestof/index.php?cat=30&aff=21 tout en bas)
Non, vraiment pourquoi installer OpenWrt et pas autre chose?
Par défaut. Parce que y'a rien de mieux, malheureusement. Enfin ça dépend des besoins évidemment. Pour remplir la fonction d'un routeur wifi, le firmware Linksys d'origine avec son interface web va très bien.
FairuzaWRT: C'est un peu le backtrack du Linksys mais c'est pour le 54GS. Puis on peut mettre les mêmes outils sur OpenWrt. On mettra quand même la moyenne à ce firmware pour avoir été baptisé en hommage à l'actrice Fairuza Balk
dd-wrt : Bouffe des ressources, mi interface web mi ligne de commande salade tomates oignons. Comme upgrade du firmware original, pourquoi pas? Mais une fois qu'on en est là, pourquoi ne pas être hardcore et tout bricoler soi-même avec OpenWrt? Ah... et ils se sont fait engueuler par les gardiens de la Source Open pour diverses hérésies. En fin de compte on dira que c'est le firmware à dédé.
Tomato : à envisager dans l'upgrade soft easy-listening. Jolie interface en ajax avec des graphiques et des pastels. Bref un truc pour les filles ou les garçons qui portent des pulls roses.
FreeWrt : Pas convaincu. Il s'agit d'un fork, semble être à OpenWrt ce que DragonFlyBSD est à OpenBSD. Open ou free? Rhaa faites pas chier. De la daube.
Sveasoft Qu'est-ce que c'est que cette merde encore? On n'a pas essayé et on compte pas le faire. C'est quoi ce nom tout pourri. Ouhh ça m'inspire pas confiance.
Freifunk Voila un nom qui claque. C'est funky c'est frei c'est telefunken et en plus c'est allemand donc solide comme une Opel. A creuser, surtout quand on bricole essentiellement le sans fil.
Conclusion: C'est avec OpenWrt que vous vous ferez le plus chier la bite pour faire un truc tout simple, donc le choix de la rédaction. En fait le vrai choix c'est entre OpenWrt White Russian, OpenWrt Kamikaze 7.09 et maintenant 8.09 RC1. Et c'est pas une bonne chose.
Qu'est-ce qui pue du cul sur OpenWrt?
Important en cas de ras le cul
Comment retrouver le bon vieux firmware d'origine qui marche et virer OpenWrt (ok c'est partie remise, mais c'est bien de savoir revenir en arrière quand ça prend le cul)
cd /tmp wget http://clochard.org/~fnord/FW_WRT54GL_4.30.12.3_US_EN_code.bin mv FW_WRT54GL_4.30.12.3_US_EN_code.bin original.bin dd bs=32 skip=1 if=original.bin of=original.trx mtd -e linux -r write original.trx linux
Si clochard.org c'est trop paysan pour toi, t'as pas confiance, démerde toi à trouver le firmware sur le site linsksys avec leur javascript de merde qu'il faudrait les tuer à la naissance. Et courage pour le wget.
Retour vers le début de l'install
Donc, après une bonne nuit de sommeil, on reprend. On peut charger le firmware directement depuis l'interface web d'origine du routeur (192.168.1.1 admin/admin par défaut)
OpenWrt qui va bien est ici: http://downloads.openwrt.org/kamikaze/7.09/brcm-2.4/openwrt-wrt54g-2.4-squashfs.bin
Cliquez sur http://192.168.1.1/Upgrade.asp choisissez le firmware que vous venez de télécharger. Cliquez sur ok, priez pour qu'EDF coupe pas le courant. Si tout s'est bien passé y'a écrit "machin successful" si c'est pas le cas, vous pourrez toujours vous servir du routeur pour caler une porte (en fait non y'a plusieurs moyen de le debricker)
Bravo, félicitations au lieu d'avoir une interface web pour régler le routeur vous voilà avec une interface en ligne de commande, vous voilà devenu un homme.
telnet 192.168.1.1
L'autre avantage par rapport à l'interface web c'est qu'il y a pas besoin de faire des copies d'écran pour vous montrer. Et ouais copier/coller et balise pre et je vous montre ce que vous devez obtenir:
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
=== IMPORTANT ============================
Use 'passwd' to set your login password
this will disable telnet and enable SSH
------------------------------------------
BusyBox v1.4.2 (2007-09-29 09:01:24 CEST) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
KAMIKAZE (7.09) -----------------------------------
* 10 oz Vodka Shake well with ice and strain
* 10 oz Triple sec mixture into 10 shot glasses.
* 10 oz lime juice Salute!
---------------------------------------------------
root@OpenWrt:/# echo "alors les petites tapettes?"
alors les petites tapettes?
root@OpenWrt:/#
Bon la recette du cocktail j'ai pas essayé. J'ai pas non plus tapé passwd ce qui aurait bloqué telnet en faveur de ssh. Parce que les passwords moi je les oublie en général. Mais je le ferais. Plus tard.
Et c'est là où la doc officielle merdouille. Sur les anciennes versions d'OpenWrt tout se faisait en écrivant dans la nvram (nvram set etc). Maintenant y'a des fichiers de config. Alors la nvram on commence par tout effacer, comme déconseillé sur le site d'OpenWrt mais que ça marche très bien quand même.
mtd -r erase nvram
Maintenant c'est comme vous voulez, si vous préférez garder les 400 lignes de conf inutiles et susceptibles de tout faire planter de l'ancien firmware Linksys, on peut pas vous empêcher. Le routeur reboute (option -r)
Tout ce qu'on rajoutera dans la nvram pour l'instant c'est ça:
nvram set boot_wait=on nvram set boot_time=10 nvram commit && reboot
Après on utilisera seulement uci (vous pouvez aussi éditer les fichiers dans /etc/conf à grands coups de vi, c'est bien aussi)
PPPoE
uci set network.wan.proto=pppoe uci set network.wan.username=<pppoe_psername> uci set network.wan.password=<pppoe_password> uci commit network ifup wan
On peut pinger un site depuis le routeur voir qu'on est bien connecté à l'internet. Ça fait pro.
PING youporn.com (74.86.111.8): 56 data bytes 64 bytes from 74.86.111.8: icmp_seq=0 ttl=41 time=172.5 ms 64 bytes from 74.86.111.8: icmp_seq=1 ttl=41 time=183.4 ms 64 bytes from 74.86.111.8: icmp_seq=2 ttl=41 time=170.2 ms
C'est bon, youpi je suis connecté.
Qu'est-ce qu'on peut faire encore, avant d'envisager des perversions comme installer directement irssi sur le routeur? Ah oui, le wifi
Le wifi
Alors deux possibilités :
- On laisse le réseau ouvert parce qu'on est sympa qu'on aime bien ses voisins et qu'on partage tout, surtout les procès en piratage de copyright de films pédophiles d'Al Qaida qu'on dira qu'on avait un wifi mal protégé que la doc d'OpenWrt est super compliquée à lire d'ailleurs vous avez qu'à essayer monsieur le juge et ça doit sûrement être la voisine du dessus qui m'a hacké mon access point pas protégé. Dans ce cas, tape:
uci set wireless.wl0.disabled=0 uci commit wireless && wifi
- Si au contraire tu préfères un truc rien que pour toi qu'on vienne pas te faire chier à te voler ta bande passante et que tu réponds de tes actions devant le juge, il te faut du WPA2. Tape:
uci set wireless.wl0.disabled=0 uci set wireless.cfg2.encryption=psk2 uci set wireless.cfg2.key=<password> uci commit wireless && wifi
Moi j'ai fignolé à la main après avec vi /etc/conf/wireless, parce que je voulais un nom de SSID qui déchire.
* WEP n'est pas une option sérieuse. Si tu veux faire marrer le gosse du voisin, démerde-toi.
Assigner une ip statique à une station
Vérifiez que dans le fichier /etc/dnsmasq.conf vous avez bien la ligne:
#use/etc/ethersforstatichosts;sameformatas--dhcp-host #<hwaddr><ipaddr> read-ethers
Récupérez l'adresse MAC de votre interface, notez la sur un coin de papier ou collez-là dans le buffer.Créez le fichier /etc/ethers s'il n'existe pas et ajoutez les lignes <adresse MAC> <IP> selon vos besoins, par exemple:
xx:xx:xx:xx:xx:xx 192.168.1.100 xx:xx:xx:xx:xx:xx 192.168.1.101
Pour finir: tapez
/etc/init.d/dnsmasq reload
Forward du port 80
Dans le fichier /etc/firewall ajoutez les lignes:
iptables -t nat -A prerouting_wan -p tcp --dport 80 -j DNAT --to 192.168.1.100 iptables -A forwarding_wan -p tcp --dport 80 -d 192.168.1.100 -j ACCEPT
Entrez la commande:
/etc/init.d/firewall reload
Le script qui va bien pour updater freedns (freedns.afraid.org)
source: http://forum.openwrt.org/viewtopic.php?id=9331
#!/bin/sh
#FreeDNS updater script
UPDATEURL="http://freedns.afraid.org/dynamic/update.php?JHGHgKhvJHgKKhjbkhBkjhKuhKug"
DOMAIN="my.domain.org"
registered=$(nslookup $DOMAIN|tail -n2|grep A|sed s/[^0-9.]//g)
current=$(wget -q -O - http://checkip.dyndns.org|sed s/[^0-9.]//g)
[ "$current" != "$registered" ] && {
wget -q -O /dev/null $UPDATEURL
echo "DNS updated on:"; date
}
à foutre dans /etc/ppp/ip_up.d/
Tutoriel iptables
l'original: http://iptables-tutorial.frozentux.net/iptables-tutorial.html
la traduction française: http://www.linux-france.org/prj/inetdoc/guides/iptables-tutorial/ipcharacteristics.html
Utiliser le bouton Cisco SES pour activer/desactiver le wifi
Le bouton SES c'est le bouton avec le logo qu'on sait même pas que c'est un bouton en fait, il ressemble à ça:
Ça peut être pratique, une sorte d'arrêt d'urgence. On va donc programmer sa fonction (mettre le wifi on/off) ainsi que l'allumage des leds SES, WLAN et power.
Créez le répertoire button dans /etc/hotplug.d et le fichier 01-radio-toggle dans celui-ci
cd /etc/hotplug.d mkdir button vi 01-radio-toggle
dans ce fichier vous copiez le script suivant:
if [ "$BUTTON" = "ses" ] ; then
if [ "$ACTION" = "pressed" ] ; then
WIFI_RADIOSTATUS=$(wlc radio)
case "$WIFI_RADIOSTATUS" in
0)
echo 2 > /proc/diag/led/power
wlc radio 1
wifi
echo 1 > /proc/diag/led/ses_white
echo 1 > /proc/diag/led/power ;;
1)
echo 2 > /proc/diag/led/power
wlc radio 0
echo 0 > /proc/diag/led/ses_white
echo 2 > /proc/diag/led/wlan
echo 1 > /proc/diag/led/power ;;
esac
fi
fi
source: http://wiki.openwrt.org/OpenWrtDocs/Customizing/Software/WifiToggle voir aussi: http://wiki.openwrt.org/OpenWrtDocs/Customizing/Software/WifiToggle
aircrack-ng
ipkg install wl ipkg install aircrack-ng
et là c'est assez étrange, y'a une couille quelque part pour faire apparaitre l'interface prism0...
wl monitor 1 ifup prism0 airodump-ng wl0 airodump-ng prism0
ifconfig montre maintenant une interface prism0 et iwconfig montre que wl0 est en mode monitor. La commande airodump-ng wl0 affiche une erreur mais semble nécessaire...
(la doc officielle dit: " wl monitor 1" puis "ifup prism0" qui retourne interface not found) voir http://wiki.openwrt.org/AircrackHowTo
monter un système de fichier distant NFS
ipkg install kmod-fs-nfs
sous linux, la box qui exportera le système de fichier:
nano /etc/exports
Par exemple:
/srv/wrt 192.168.1.1(rw)
on rend /srv/wrt writable, chmod toussa
sur le routeur:
mount -t nfs hostname:/srv/wrt /mnt/point -o rw,nolock
http://wiki.openwrt.org/RemoteFileSystemHowTo
Préferer sshfs cependant.
Bonus warez (mais fermez vos gueules)
Installation d'OpenVPN
tutoriel en français: http://www.coagul.org/spip.php?article422
serveur.conf
port 1194 proto udp dev tun ca ca.crt cert fichier.crt key fichier.key dh dh1024.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt client-config-dir ccd # A CHIER route 192.168.1.0 255.255.255.0 # A CHIER push "redirect-gateway def1" # A CHIER keepalive 10 120 comp-lzo user nobody group nogroup persist-key persist-tun status openvpn-status.log log openvpn.log verb 3 mute 20
client.conf
client dev tun proto udp remote <host> 1194 nobind user nobody group nogroup ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/fichier.crt key /etc/openvpn/keys/fichier.key dh /etc/openvpn/dh1024.pem comp-lzo
- Script de démarrage, à chier:
#!/bin/sh case "$1" in stop) kill `cat /var/run/openvpn.pid` killall openvpn ;; *) if ! brctl show | grep -q tun0; then openvpn --mktun --dev tun0 brctl addif br-lan tun0 ifconfig tun0 0.0.0.0 promisc up fi openvpn --config /etc/openvpn/client.conf ;; esac


