Pork Center

Linksys WRT54GL

De Hack-it.org.

(-1)
m (restitution de la dernière modification de Fnord)
Ligne 1 : Ligne 1 :
-
OfcLQU  <a href="http://dbroufbkfygf.com/">dbroufbkfygf</a>, [url=http://rjblsiclkvfn.com/]rjblsiclkvfn[/url], [link=http://zztfcchwsndp.com/]zztfcchwsndp[/link], http://pzxtuhqvrowz.com/
+
Ou l'art de faire tomber les filles avec son routeur.
 +
 
 +
==Wouahhh, il symbolise l'internet!==
 +
 
 +
[[Image:Linksys-South-Park.jpg]]
 +
 
 +
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.
 +
* Specs: http://en.wikipedia.org/wiki/Linksys_WRT54G_series#WRT54GL
 +
 
 +
==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 [http://www.purpleglitter.com/myspace/hotties/fairuza-balk/fairuza-balk-2.jpg 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)
 +
 
 +
<pre>
 +
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
 +
</pre>
 +
 
 +
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.
 +
 
 +
<pre>
 +
telnet 192.168.1.1
 +
</pre>
 +
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:
 +
<pre>
 +
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:/#
 +
</pre>
 +
 
 +
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.
 +
 
 +
<pre>
 +
mtd -r erase nvram
 +
</pre>
 +
 
 +
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:
 +
 
 +
<pre>
 +
nvram set boot_wait=on
 +
nvram set boot_time=10
 +
nvram commit && reboot
 +
</pre>
 +
 
 +
Après on utilisera seulement uci (vous pouvez aussi éditer les fichiers dans /etc/conf à grands coups de vi, c'est bien aussi)
 +
 
 +
==PPPoE==
 +
 
 +
<pre>
 +
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
 +
</pre>
 +
 
 +
On peut pinger un site depuis le routeur voir qu'on est bien connecté à l'internet. Ça fait pro.
 +
 
 +
<pre>
 +
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
 +
</pre>
 +
 
 +
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:
 +
 
 +
<pre>
 +
uci set wireless.wl0.disabled=0
 +
uci commit wireless && wifi
 +
</pre>
 +
 
 +
* 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:
 +
 
 +
 
 +
<pre>
 +
uci set wireless.wl0.disabled=0
 +
uci set wireless.cfg2.encryption=psk2
 +
uci set wireless.cfg2.key=<password>
 +
uci commit wireless && wifi
 +
</pre>
 +
 
 +
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:
 +
 
 +
<pre>
 +
#use/etc/ethersforstatichosts;sameformatas--dhcp-host
 +
#<hwaddr><ipaddr>
 +
read-ethers
 +
</pre>
 +
 
 +
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:
 +
<pre>
 +
xx:xx:xx:xx:xx:xx 192.168.1.100
 +
xx:xx:xx:xx:xx:xx 192.168.1.101
 +
</pre>
 +
Pour finir: tapez
 +
<pre>
 +
/etc/init.d/dnsmasq reload
 +
</pre>
 +
 
 +
 
 +
==Forward du port 80==
 +
 
 +
Dans le fichier /etc/firewall ajoutez les lignes:
 +
<pre>
 +
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
 +
</pre>
 +
Entrez la commande:
 +
<pre>
 +
/etc/init.d/firewall reload
 +
</pre>
 +
 
 +
 
 +
==Le script qui va bien pour updater freedns (freedns.afraid.org)==
 +
 
 +
source: http://forum.openwrt.org/viewtopic.php?id=9331
 +
<pre>
 +
#!/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
 +
  }
 +
</pre>
 +
à 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:
 +
[[Image:Cisco.png|Cisco.png]]
 +
 
 +
 
 +
Ç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
 +
<pre>
 +
cd /etc/hotplug.d
 +
mkdir button
 +
vi 01-radio-toggle
 +
</pre>
 +
dans ce fichier vous copiez le script suivant:
 +
<pre>
 +
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
 +
</pre>
 +
source: http://wiki.openwrt.org/OpenWrtDocs/Customizing/Software/WifiToggle voir aussi: http://wiki.openwrt.org/OpenWrtDocs/Customizing/Software/WifiToggle
 +
 
 +
==aircrack-ng==
 +
<pre>
 +
ipkg install wl
 +
ipkg install aircrack-ng
 +
</pre>
 +
et là c'est assez étrange, y'a une couille quelque part pour faire apparaitre l'interface prism0...
 +
<pre>
 +
wl monitor 1
 +
ifup prism0
 +
airodump-ng wl0
 +
airodump-ng prism0
 +
</pre>
 +
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==
 +
<pre>
 +
ipkg install kmod-fs-nfs
 +
</pre>
 +
sous linux, la box qui exportera le système de fichier:
 +
<pre>
 +
nano /etc/exports
 +
</pre>
 +
Par exemple:
 +
<pre>
 +
/srv/wrt 192.168.1.1(rw)
 +
</pre>
 +
 
 +
on rend /srv/wrt writable, chmod toussa
 +
 
 +
sur le routeur:
 +
<pre>
 +
mount -t nfs hostname:/srv/wrt /mnt/point -o rw,nolock
 +
</pre>
 +
http://wiki.openwrt.org/RemoteFileSystemHowTo
 +
 
 +
Préferer sshfs cependant.
 +
 
 +
==Bonus warez (mais fermez vos gueules)==
 +
 
 +
[http://clochard.org/~fnord/CadeauBonux.pdf Cadeau Bonux]
 +
 
 +
==Installation d'OpenVPN==
 +
 
 +
[[Image:crobard.jpg]]
 +
 
 +
tutoriel en français: http://www.coagul.org/spip.php?article422
 +
 
 +
 
 +
serveur.conf
 +
 
 +
<pre>
 +
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
 +
</pre>
 +
 
 +
 
 +
client.conf
 +
 
 +
<pre>
 +
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
 +
</pre>
 +
 
 +
 
 +
* Script de démarrage, à chier:
 +
 
 +
<pre>#!/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
 +
</pre>
 +
 
 +
==Les deux dernières lignes, hack de porkz==

Version du 1 mai 2009 à 04:42