Observer ce qui se passe sur votre interface wifi

Avant de mettre les mains dans le cambuis, il est toujours intéressant d'avoir une vitrine sur ce qui se passe plus concrètement sur votre interface. Dès lors la commande qui va bien c'est

[bash]
iwevent

Lancez un terminal avec iwevent de manière à avoir un log de ce qui se passe

network.png

Detecter les réseaux disponibles

Vous disposez sans doute de plusieurs interfaces (au moins d'une interface loopback) mais toutes les interfaces ne gèrent pas nécessairement le wifi (la loopback entre autre). Donc inutile de demander à ces interfaces de scanner le réseau et trouver les réseaux disponibles.

Ici la commande à utiliser c'est :

[bash]
iwlist eth1 scan

NB : je considère que mon interface sans fil est eth1

Cette commande va vous permettre d'afficher les différents réseaux auxquels vous pouvez vous connecter ainsi que vous donner des informations intéressantes sur ces réseaux comme :

  • essid
  • canal / fréquence
  • encryption
  • adresse mac du point d'accès (du routeur en général)
  • mode de fonctionnement

NB : il est cependant nécessaire de souligner que certains réseaux cachés peuvent ne pas s'afficher (au cas où la trame broadcast est désactivé). Dans ce cas vous devrez utiliser d'autres techniques pour détecter ces réseaux. Je vous conseille l'outil Kismet qui est très efficace pour ça, mais je ne vais pas le développer ici.

Connexion en mode Managed

Maintenant passons à la connexion en tant que tel. Vous avez lancé iwevent dans un terminal à part, lancer un nouveau terminal où vous allez lancer les prochaines commandes !

  • Désactiver les interfaces que vous n'utiliser pas (dans mon cas, eth0 est une interface filaire que je vais désactiver car je veux utiliser mon interface sans fil eth1)
[bash]
sudo ifconfig eth0 down
sudo ifconfig eth1 up
  • Se connecter au bon réseau avec la bonne fréquence :
[bash]
sudo iwconfig eth1 mode managed channel $CHAN essid $ESSID

Dans mon cas je n'ai pas de clé d'encryption donc je ne précise pas l'argument "key".

  • $CHAN est le numéro du canal utilisé que vous avez trouvé grâce à iwlist
  • $ESSID est le nom du réseau auquel vous souhaitez vous connecter. Même si le essid que vous utilisé proviens d'un réseau caché, cela ne change rien à la manipulation.

Si tout se passe bien, vous devriez observer dans le terminal de iwevent que vous êtes correctement authentifié. Afin de vérifier que vous l'êtes bel et bien, tappez la commande iwconfig et comparez l'adresse MAC se trouvant dans l'argument cell avec l'adresse se trouvant dans le iwlist eth1 scan que vous avez fait au début.

  • Terminer la connexion pour pouvoir accéder au réseau. En effet, jusqu'à maintenant vous avez juste la couche physique entre vous et le point d'accès qui est configurée. Ceci ne suffit pas pour vous permettre d'accéder au réseau. Vous allez devoir demander au serveur DCHP de vous attribuer une adresse IP :
[bash]
sudo dhclient eth1

voilà, normalement maintenant votre adresse IP est configurée et vous avez normalement accès au réseau local sans problème.

Enjoy ;-)

adhoc.png

Se connecter en mode Ad-Hoc

Petit rappel de nouveau pour ceux qui ne savent pas ce que c'est que le mode adhoc? Il s'agit d'une connexion entre ordinateur qui ne nécessite pas d'infrastructure autour. C'est à dire que les ordinateurs se connectent directement l'un à l'autre. On pourrais faire une analogie avec un cable rj45 croisé entre deux ordinateurs. Sauf que dans le cas d'une connexion ad-hoc, on peut communiquer directement avec tous les ordinateurs qui se trouvent dans le rayon de puissance d'émission.

Nous n'avons donc pas de point d'accès (access point) dans le réseau, et de ce fait, nous n'avons pas non plus de serveur DHCP pour attribuer les adresses IP. Il y a donc une contrainte en plus, c'est que nous devrons configurer l'adresse IP à la main.

  • Activation de l'interface sans fil :
[bash]
sudo ifconfig eth0 down
sudo ifconfig eth1 up
  • Lancement du réseau ad-hoc (soit vous vous connectez à un réseau existant, soit vous créer un nouveau réseau. La manipulation est la même car il n'y a pas de point d'accès) :
[bash]
sudo iwconfig eth1 mode ad-hoc essid $ESSID channel $CHAN key off ap off

Je fais ici le choix de vous donner la commande avec le mode d'encryption désactivé car je pars du principe qu'il est rare qu'en mode ad-hoc on en ait besoin. Mais dans ce cas, vous pouvez bien sur adapter la commande. Vous remarquerez aussi que j'ai désactiver le point d'accès, en effet, ici vous n'avez pas de point d'accès car nous sommes en mode ad-hoc.

  • Configuration de son adresse IP :
[bash]
sudo ifconfig eth1 172.16.0.X up

Veuillez à ne pas utiliser une adresse déjà utilisée. Je vous conseille d'utiliser le préfixe 172.16.0.0/16 car il est dédié aux réseaux locaux donc vous êtes certains de ne pas rencontrer de problèmes. Vous pouvez aussi utiliser le préfixe 192.168.0.0/16 qui est aussi réservé pour les réseaux locaux. A votre guise ;-)

Conclusion

Voilà, je pense que vous avez maintenant toutes les informations pour faire fonctionner convenablement votre interface wifi à l'aide des wireless-tools. Je n'aborde pas ici tous les problèmes liés aux réseaux encryptés tel les réseaux avec un clé WEP ou WPA car ce n'est pas mon but et que je ne suis pas assez spécialiste en la matière pour ne pas prendre le risque de dire des conneries.

Si vous avez des problèmes pour configurer votre interface wifi à la main, n'hésitez pas à poster des questions ici. Je souligne quand même (car moi j'ai perdu plusieurs jours avant de comprendre) que toutes les interfaces wifi ne supportent pas le mode Ad-Hoc. Certaines cartes un peu trop vieilles peuvent poser des problèmes pour ce genre de configurations.

Note supplémentaire pour les possesseurs de Mac OS X

Pour les possesseur d'un ordinateur sous Mac OS X qui n'ont malheureusement pas la chance d'avoir wireless-tools à disposition, il existe un autre outil qui fonctionne assez bien et qui permet le même genre de manipulations qui s'appelle airport mais qui n'est pas configuré par défaut dans votre PATH. Il vous faudra donc faire un petit :

cd /usr/sbin
sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport

Pour que la commande apparaisse dans votre PATH. Ensuite un petit airport --help vous donnera les infos nécessaires pour apprendre à jongler avec cet outil.

$ airport --help
airport AirPort v.455.2 (455.2.0)
Supported arguments:
 -a        --autojoin           Join first available, trusted network from list
 -p        --applyprefs         Apply settings as currently configured via System Preferences
 -u        --updateprefs        Examine network preferences and repair if necessary
 -z        --disassociate       Disassociate from any network
 -i[<arg>] --ibss=[<arg>]       Create IBSS
 -f<arg>   --file=<arg>         Use <arg> as airport preference file instead of
                                   /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
 -m<arg>   --mac=<arg>          Use <arg> instead of current AirPort MAC Address
 -x        --xml                Print info as XML
 -o<arg>   --oldencrypt=<arg>   Encrypt string <arg> with Panther-style encryption
 -s[<arg>] --scan=[<arg>]       Perform a wireless broadcast scan.
                                   Will perform a directed scan if the optional <arg> is provided
 -r<arg>   --repeats=<arg>      Repeat the command the specified number of times
 -A[<arg>] --associate=[<arg>]  Associate to network.
                                   Will prompt for network name if arg is not specified
                                   and if necessary, for a password if the network is using WEP or WPA.
                                   The following additional arguments may be specified with this command:
                                  --bssid=<arg>     Specify BSSID to associate with
                                  --password=<arg>  Specify a WEP key or WPA password
 -I        --getinfo            Print current wireless status, e.g. signal info, BSSID, port type etc.
 -P<arg>   --psk=<arg>          Create PSK from specified pass phrase and SSID.
                                   The following additional arguments must be specified with this command:
                                  --ssid=<arg>      Specify SSID when creating a PSK
 -S        --showstack          Print the current list of known networks
 -c[<arg>] --channel=[<arg>]    Set arbitrary channel on the card
 -h        --help               Show this help