Tag - free

Entries feed

Wednesday 4 August 2010

Connexion automatique à FreeWifi avec Debian

Voici la configuration pour les systèmes du type Debian pour se connecter au réseau des hot-spots FreeWifi :

/etc/network/interfaces :

1
2
3
4
5
6
7
iface freewifi inet dhcp
  wireless-essid FreeWifi
  wireless-rate 11M
  wireless-key off
  pre-up ifconfig ath0 mtu 1460 up
  post-up nohup /root/bin/freewifi.sh &
  post-down killall -q -KILL freewifi.sh

/root/bin/freewifi.sh :

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
KEY='' # identifiant freewifi, aller sur wifi.free.fr si vous ne l'avez pas encore
PASSWORD='' # mot de passe freewifi
 
sleep 3
while true ; do
  wget --quiet --no-check-certificate --post-data\
  'login='"$KEY"'&password='"$PASSWORD"'&submit=Valider'\
  'https://wifi.free.fr/Auth' -O '/tmp/free'
  sleep 1000
done

Pour lancer la connexion avec une carte Atheros par exemple :

ifup ath0=freewifi

Qu'est-ce qu'il y a d'original là-dedans ? La connexion n'est pas fiable avec la valeur par défaut du paramètre MTU (Maximum Transmission Unit); les paquets de plus de 1,46 ko ne semblent pas passer à cause de la fragmentation (on peut facilement tester avec ping -s TAILLE -v serveur.foo); à 1460 octets la connexion est stable, et des sessions SSH ont duré plusieurs heures sans problème chez moi. Ensuite on fixe la vitesse de la carte wifi à 11 Mbit/s; la plupart des cartes ont une puissance d'émission supérieure aux vitesses plus basses, et de toute manière on n'aura jamais plus de quelques Mbits avec un hot-spot. Enfin, le réseau FreeWifi utilise un portail captif pour vous authentifier pour une durée assez courte (quelque chose comme 30 minutes); avec mon script post-up, l'authentification se fait de manière automatique et périodique.

Tuesday 29 December 2009

Transfert d'appel Free à distance

Chez Free il est impossible, pour raisons de sécurité, de paramétrer un renvoi d'appels depuis une autre adresse IP que la sienne. Voici un script shell à éxécuter sur une machine chez soi pour contourner ce système et paramétrer le transfert d'appels depuis l'extérieur :

transfert.sh :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/bash
 
LOGIN=""
MDP=""
 
TMP="/tmp/transtmp"
if [ ! -d "$TMP" ] ; then
         mkdir -p "$TMP" || (echo "Dossier temporaire inaccessible" ; exit 1)
fi
 
NUMERO="$1"
if [ -n "$NUMERO" ] ; then
        TRANSINC='&transinc=transinc'
fi
 
USERAGENT='Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5'
 
wget --no-check-certificate --quiet --keep-session-cookies --save-cookies="$TMP/free-cookie" \
 --user-agent="$USERAGENT" --post-data='login='"$LOGIN"'&ok=Connexion&pass='"$MDP" \
 -O "$TMP/login.html" https://subscribes.free.fr/login/login.pl
 
ID=`grep -o 'id=[[:alnum:]]*&idt=[[:alnum:]]*' "$TMP/login.html"  | tail -n 1` 
if [ -z "$ID" ] ; then
        echo "Login : erreur."
        exit 1
fi
echo "Login : OK"
 
wget --no-check-certificate --quiet --keep-session-cookies --load-cookies="$TMP/free-cookie" \
 --user-agent="$USERAGENT" --post-data='appsort=0000&delai=5&incon='\
 "$NUMERO"'&mevo_delai=35&mevo_mode=5&nonrep=&occup='"$TRANSINC" \
 -O "$TMP/transfert.html" 'https://adsls.free.fr/admin/tel/adminservice_valid.pl?'"$ID"
 
export LC_ALL=c
if grep -sq 'Donn.*valid.' "$TMP/transfert.html" ; then
        echo "Transfert : OK"
else
        echo "Transfert : erreur"
        exit 2
fi
 
rm -f "$TMP/*"

Si aucun numéro n'est fourni en paramètre, le script désactive le renvoi d'appels, sinon il l'active pour ce numéro. Ne pas oublier de renseigner son login et son mot de passe Free au début du code.

Voici une version CGI (à placer dans un dossier cgi-bin Apache ou Lighttpd) qu'on peut exécuter par exemple à partir d'un smartphone ( transfert-cgi.sh?numero=... ) :

transfert-cgi.sh :

1
2
3
4
5
6
7
8
#!/bin/bash
 
echo "<html><body>"
 
NUMERO=`echo "$QUERY_STRING" | cut -f 2 -d '='`
./transfert.sh "$NUMERO"
 
echo "</body></html>"

En plus ces scripts peuvent servir de base pour d'autres automatisations chez le même FAI, il suffit de récupérer la requête à rejouer avec Firebug ou Wireshark et de la lancer à la place de la deuxième requête du script.

Édition du 16 juillet 2010

L'interface de Free est passée en HTTPS, j'ai adapté le script présenté dans cet article.