Wi-FiScanner, un programme de découverte des points d'accès Wi-Fi

ram-0000

Ce document a pour but de présenter le programme Wi-FiScanner de découverte des points d'accès Wi-Fi. Ce programme gratuit fonctionne sous environnement Windows (au minimum XP SP2) et utilise l'API Microsoft Native Wi-Fi de gestion des réseaux Wi-Fi.

Votre avis et vos suggestions sur ce programme m'intéressent ! Alors après votre lecture ou si vous rencontrez un problème avec Wi-FiScanner, n'hésitez pas : Commentez ♪

- Titre : Wi-FiScanner, un programme de découverte des points d'accès Wi-Fi

- Auteur : ram-0000

- Parution : 25 décembre 2009

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2008-2010 ram-0000. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.

Sommaire

- I. Introduction

- II. Installation de Wi-FiScanner

- II-A. Licence du logiciel Wi-FiScanner

- II-B. Historique des versions

- II-B-1. Version 1.0 (25 décembre 2009)

- II-C. plates-formes supportées

- II-C-1. Version minimum d'OS

- II-C-2. plates-formes supportées

- II-C-3. plates-formes non supportées

- II-D. Procédure d'installation

- II-E. Fonctionnalités non testées

- III. Fonctionnement du programme

- III-A. Fonctionnement de l'API Microsoft Native Wi-Fi

- III-B. Découverte des interfaces Wi-Fi

- III-C. Découverte des réseaux Wi-Fi

- III-D. Découverte des points d'accès Wi-Fi

- III-E. Plus d'information

- IV. Conclusions

I - Introduction

Suite à l'article Découverte de l'API Microsoft Native Wi-Fi, je me suis lancé dans la réalisation d'un programme de découverte des points d'accès Wi-Fi en utilisant l'API Microsoft Native Wi-Fi.

Les caractéristiques de ce programme sont les suivantes.

- Il fonctionne sous environnement Microsoft Windows (XP SP2 au minimum à cause des contraintes imposées par l'API Microsoft Native Wi-Fi elle-même).

- C'est un programme gratuit (freeware) en mode graphique (utilisation des MFC).

- Il affiche les principales informations techniques concernant les réseaux Wi-Fi à proximité.

Ce document présente :

- la procédure d'installation du programme Wi-FiScanner ;

- le fonctionnement du programme.

Pour les plus pressés d'entre vous, le programme d'installation se trouve ici : Wi-FiScanner_Setup.

II - Installation de Wi-FiScanner

Ce paragraphe présente :

- la licence d'utilisation du programme Wi-FiScanner ;

- l'historique des versions du programme ;

- les plates-formes supportées ;

- la procédure d'installation en détail ;

- les limitations connues et fonctionnalités non testées.

II-A - Licence du logiciel Wi-FiScanner

Sauf mention contraire, la documentation et les binaires inclus dans le logiciel d'installation de Wi-FiScanner sont protégés par Phoenix Team.

Copyright © 2007-2010 Phoenix Team. Tous droits réservés.

Ce logiciel est fourni « en l'état », sans aucune garantie ni implicite ni explicite. En aucune manière, les auteurs ne pourraient être tenus pour responsables des dommages causés par l'usage de ce logiciel.

Tout le monde a la permission d'utiliser ce logiciel pour quelque usage que ce soit, même commercial, de le modifier et de le redistribuer pourvu que les conditions suivantes soient remplies :

- toute redistribution des codes source doit conserver, sans modification, la mention de copyright présente ;

- toute redistribution sous forme binaire doit conserver, sans modification, la mention de copyright actuelle ainsi que les adresses de sites web déjà en place (dans la boîte de dialogue « À propos de… », par exemple) ;

- l'origine de ce logiciel ne doit pas être cachée ; vous ne pouvez pas dire que vous avez écrit ce logiciel. Si vous utilisez ce logiciel pour distribuer un produit, un remerciement dans la documentation du produit serait apprécié, mais n'est pas obligatoire ;

- toute version modifiée des sources ou des binaires doit être clairement identifiée et ne doit pas être présentée comme étant le logiciel original.

Phoenix Team

II-B - Historique des versions

II-B-1 - Version 1.0 (25 décembre 2009)

Nouvelles fonctionnalités

- C'est la première version donc tout est nouveau.

Problèmes corrigés

- Il n'y a pas encore de problèmes identifiés.

II-C - plates-formes supportées

II-C-1 - Version minimum d'OS

Le programme Wi-FiScanner utilise l'API Microsoft Native Wi-Fi. Cette API supporte les versions d'OS suivantes :

- Windows XP avec SP2. Avec cette version de XP, il faut aussi installer le package « Wireless LAN API (KB918997) » ;

- Windows XP avec SP3 ;

- Windows Vista ;

- Windows Seven ;

- Windows Server 2008.

Avec Windows XP SP2 ou SP3, l'implémentation de l'API est faite par le service « Wireless Zero Configuration (WZC) » qui doit être démarré. Pour les autres versions de Windows, l'API est implémentée par le noyau lui-même et ne nécessite donc pas de service additionnel.

II-C-2 - plates-formes supportées

Le programme Wi-FiScanner a été testé avec succès sur les plates-formes suivantes :

- Windows XP Home Edition SP3 32 bits (sur une architecture 64 bits) ;

- Windows Seven Professional 64 bits (sur une architecture 64 bits).

Si d'autres architectures sont supportées, n'hésitez pas à l'indiquer dans le post dédié à ce document ici : Commentez . Ce document sera alors complété.

II-C-3 - plates-formes non supportées

Le programme Wi-FiScanner n'a pas fonctionné sur les plates-formes suivantes :

- Windows 98 SE.

Si d'autres architectures ne sont pas supportées, n'hésitez pas à l'indiquer dans le post dédié à ce document ici : Commentez . Ce document sera alors complété.

II-D - Procédure d'installation

Le programme d'installation (setup) peut être téléchargé ici.

Ce setup se charge d'installer le programme et éventuellement le « Package redistribuable Microsoft Visual C++ 2005 (x86) ».

Le setup est réalisé avec le compilateur de setup Innosetup.

Le déroulement de l'installation passe par les étapes suivantes :

Choix de la langue (français ou anglais)

Installation du Package redistribuable Microsoft Visual C++ 2005 (x86) (si nécessaire)

Écran de bienvenue

Affichage de la licence

Choix du répertoire d'installation

Ajout dans le menu Démarrer (option facultative)

Création d'une icône sur le bureau (option facultative)

Récapitulatif des actions qui vont être faites

Affichage de l'historique des versions du logiciel

Fin de l'installation du logiciel

La procédure d'installation va créer dans le menu Démarrer les entrées suivantes :

- Phoenix Team / Wi-FiScanner / Wi-FiScanner : un lien pour lancer l'exécutable ;

- Phoenix Team / Wi-FiScanner / Uninstall : un lien pour désinstaller le programme ;

- Phoenix Team / Wi-FiScanner / Documentation : un lien vers cette page WWW ;

- Phoenix Team / Wi-FiScanner / Phoenix Team WWW site : un lien vers le site de l'auteur.

La procédure d'installation va aussi créer une entrée dans le gestionnaire des logiciels installés afin de permettre sa désinstallation de manière propre.

Le gestionnaire des logiciels installés

II-E - Fonctionnalités non testées

Les fonctionnalités non testées du programme Wi-FiScanner sont les suivantes :

- comportement du programme si aucune interface Wi-Fi n'est disponible ;

- comportement du programme avec une interface Wi-Fi de type USB ;

- comportement du programme avec plusieurs interfaces Wi-Fi ;

- du fait de la non-disponibilité d'une carte Wi-Fi USB lors de l'écriture de ce programme, la gestion durant l'exécution du programme de la suppression ou de l'ajout d'une interface Wi-Fi n'a pas pu être testée.

Si vous avez une des configurations non testées, n'hésitez pas à donner votre retour sur le fonctionnement de Wi-FiScanner sur le post dédié à cet effet : Commentez , ce document évoluera aussi en fonction de vos remarques.

III - Fonctionnement du programme

Ce paragraphe détaille les points suivants :

- le fonctionnement de l'API Microsoft Native Wi-Fi ;

- l'écran d'affichage des différentes cartes Wi-Fi disponibles sur la machine ;

- l'affichage des différents réseaux Wi-Fi visibles ;

- l'affichage des différents points d'accès Wi-Fi visibles.

III-A - Fonctionnement de l'API Microsoft Native Wi-Fi

Le programme utilise les fonctions de l'API Microsoft Native Wi-Fi suivantes :

- WlanOpenHandle() pour initialiser l'API Microsoft Native Wi-Fi ;

- WlanCloseHandle() pour terminer l'utilisation de l'API Microsoft Native Wi-Fi ;

- WlanEnumInterfaces() pour obtenir la liste des interfaces Wi-Fi disponibles sur la machine ;

- WlanGetAvailableNetworkList() pour obtenir la liste des réseaux Wi-Fi visibles à partir d'une interface donnée ;

- WlanGetNetworkBssList() pour obtenir la liste des points d'accès Wi-Fi d'un réseau donné ;

- WlanFreeMemory() pour libérer toutes les ressources allouées par l'API Microsoft Native Wi-Fi.

Une machine peut héberger plusieurs cartes Wi-Fi, ces différentes cartes sont détectées par l'API Microsoft Native Wi-Fi. Ce type de configuration (plusieurs cartes Wi-Fi sur un même PC) peut sembler « bizarre », car si un réseau Wi-Fi est accessible par une des cartes, il devrait l'être aussi par l'autre carte. Ce type de configuration n'a pas été testé lors du développement du programme et peut faire apparaitre des dysfonctionnements dans le programme.

Un réseau Wi-Fi est identifié par son SSID (Service Set IDentifier). Ce SSID est nécessaire pour se connecter au réseau Wi-Fi. Il est en général diffusé de manière publique par le point d'accès, il est toutefois possible d'empêcher cette diffusion et il faut alors connaitre le SSID configuré par l'administrateur pour se connecter à ce réseau Wi-Fi.

Un réseau Wi-Fi peut être constitué de 1 ou plusieurs points d'accès physiques. En général, les box à la maison disposent d'un seul point d'accès. Seuls les gros réseaux de points d'accès dans les aéroports par exemple disposent de plusieurs points d'accès pour le même réseau Wi-Fi.

Chacun des différents points d'accès au même réseau Wi-Fi diffuse le même SSID (puisque c'est le même réseau), ils sont identifiés dans ce réseau par leur BSSID.

La notion de BSSID (en fait, cela correspond à l'adresse MAC du point d'accès Wi-Fi) existe aussi dans les réseaux Wi-Fi avec un seul point d'accès.

III-B - Découverte des interfaces Wi-Fi

Lors du lancement de Wi-FiScanner, le programme affiche la liste de toutes les interfaces Wi-Fi disponibles et sélectionne automatiquement la première.

Liste des interfaces Wi-Fi

Les propriétés de l'interface sélectionnée sont alors affichées. Ces propriétés correspondent à l'interprétation du contenu de la structure WLAN_INTERFACE_INFO retournée par la fonction WlanEnumInterfaces().

Les propriétés affichées sont :

- # : correspond au numéro d'ordre de l'interface Wi-Fi ;

- Nom : correspond au champ strInterfaceDescription de la structure WLAN_INTERFACE_INFO. Il s'agit d'une chaîne de 256 caractères Unicode qui contient le nom ou la description de l'interface Wi-Fi ;

- Etat : correspond au champ isState de la structure WLAN_INTERFACE_INFO. Les valeurs possibles sont :
0 : wlan_interface_state_not_ready,
1 : wlan_interface_state_connected,
2 : wlan_interface_state_ad_hoc_network_formed,
3 : wlan_interface_state_disconnecting,
4 : wlan_interface_state_disconnected,
5 : wlan_interface_state_associating,
6 : wlan_interface_state_discovering,
7 : wlan_interface_state_authenticating ;

- Guid : correspond au champ InterfaceGuid de la structure WLAN_INTERFACE_INFO. Il s'agit d'un nombre unique permettant d'identifier sans équivoque la carte Wi-Fi.

III-C - Découverte des réseaux Wi-Fi

Une fois que l'interface désirée est sélectionnée, il suffit de cliquer sur le bouton « Suivant » pour afficher la liste des réseaux Wi-Fi disponibles par cette interface. Les réseaux Wi-Fi sont identifiés par leur SSID. Le premier réseau disponible est automatiquement sélectionné.

Liste des réseaux Wi-Fi

L'image affichée en haut à droite de la fenêtre représente l'historique des valeurs de la qualité du signal pour le réseau sélectionné. Cet historique contient les 60 dernières valeurs et il est rafraichi toutes les deux secondes. Les trois lignes jaunes horizontales représentent les valeurs 25 %, 50 % et 75 %.

Les propriétés du réseau sélectionné sont affichées dans la liste en bas de la fenêtre. Ces propriétés correspondent à l'interprétation du contenu de la structure WLAN_AVAILABLE_NETWORK retournée par la fonction WlanGetAvailableNetworkList().

Les propriétés affichées sont :

- # : correspond au numéro d'ordre du réseau Wi-Fi ;

- Network : correspond au champ strProfileName de la structure WLAN_AVAILABLE_NETWORK. Il s'agit d'une chaîne de 256 caractères Unicode qui contient le nom du profil local associé à la connexion réseau. Ce nom de profil est toujours vide dans le programme Wi-FiScanner ;

- SSID : correspond au champ dot11Ssid de la structure WLAN_AVAILABLE_NETWORK. Il s'agit d'une chaîne de 32 caractères ASCII qui contient le nom SSID de réseau Wi-Fi diffusé par le point d'accès ;

- Type : correspond au champ dot11BssType de la structure WLAN_AVAILABLE_NETWORK. Les valeurs possibles sont :
1 : dot11_BSS_type_infrastructure : cela correspond à un réseau Wi-Fi d'infrastructure,
2 : dot11_BSS_type_independent : cela correspond à un réseau Wi-Fi ad hoc,
3 : dot11_BSS_type_any : cela correspond à un réseau Wi-Fi de n'importe quel type ;

- Nb of SSID : correspond au champ uNumberOfBssids de la structure WLAN_AVAILABLE_NETWORK. C'est le nombre de points d'accès qui constituent le réseau Wi-Fi. Sur les machines XP (SP2 ou SP3), ce nombre vaut 1 quel que soit le nombre réel de points d'accès qui constituent le réseau Wi-Fi ;

- Connectable : correspond au champ bNetworkConnectable de la structure WLAN_AVAILABLE_NETWORK. Ce flag indique s'il est possible ou non de se connecter à ce réseau Wi-Fi ;

- Raison : correspond au champ wlanNotConnectableReason de la structure WLAN_AVAILABLE_NETWORK. S'il n'est pas possible de se connecter à ce réseau Wi-Fi, ce code d'erreur indique la raison pour laquelle il n'est pas possible de se connecter ;

- Nb of Phy Type : correspond au champ uNumberOfPhyTypes de la structure WLAN_AVAILABLE_NETWORK. C'est le nombre de types physiques du réseau Wi-Fi. Ce nombre est limité à 8 ;

- Physical Type : correspond au champ dot11PhyTypes de la structure WLAN_AVAILABLE_NETWORK. C'est un tableau (limité à 8 entrées) des différents types physiques du réseau Wi-Fi. Les valeurs possibles sont :
0 : dot11_phy_type_unknown ou dot11_phy_type_any : cela correspond à un réseau physique de n'importe quel type ou de type inconnu,
1 : dot11_phy_type_fhss : cela correspond à un réseau de type « frequency-hopping spread-spectrum » (FHSS). En général, cela concerne les périphériques de type Bluetooth,
2 : dot11_phy_type_dsss : cela correspond à un réseau de type « direct sequence spread spectrum » (DSSS),
3 : dot11_phy_type_irbaseband : cela correspond à un réseau de type infrarouge,
4 : dot11_phy_type_ofdm : cela correspond à un réseau de type « orthogonal frequency division multiplexing » (OFDM). En général, cela concerne les périphériques respectant la norme 802.11a,
5 : dot11_phy_type_hrdsss : cela correspond à un réseau de type « high-rate direct sequence spread spectrum » (HRDSSS),
6 : dot11_phy_type_erp : cela correspond à un réseau de type « extended rate PHY » (ERP). En général, cela concerne les périphériques respectant la norme 802.11g,
7 : dot11_phy_type_ht : cela correspond à un réseau inconnu.
0x80000000 : dot11_phy_type_IHV_start : première valeur possible pour les types physiques propriétaires utilisés par les vendeurs indépendants de matériel (IHV = independent hardware vendor).
0xffffffff : dot11_phy_type_IHV_end : dernière valeur possible pour les types physiques propriétaires utilisés par les vendeurs indépendants de matériel (IHV = independent hardware vendor) ;

- More Phy Type : correspond au champ bMorePhyTypes de la structure WLAN_AVAILABLE_NETWORK. Si ce flag vaut TRUE, cela signifie que le nombre de types physiques supportés par le réseau Wi-Fi est plus grand que 8. Un appel à la fonction WlanGetNetworkBssList() doit être effectué pour obtenir la liste complète des types supportés. L'appel à cette fonction n'est pas effectué par le programme Wi-FiScanner ;

- Quality : correspond au champ wlanSignalQuality de la structure WLAN_AVAILABLE_NETWORK. Cette valeur correspond à la qualité de réception comprise entre 0 et 100 % du signal. Une valeur de 100 % indique une force de signal plus grande que -50 dbm ;

- Security enabled : correspond au champ bSecurityEnabled de la structure WLAN_AVAILABLE_NETWORK. Ce flag indique si la sécurité est activée ou non sur le réseau Wi-Fi ;

- Auth alg : correspond au champ dot11DefaultAuthAlgorithm de la structure WLAN_AVAILABLE_NETWORK. Les valeurs possibles sont :
1 : DOT11_AUTH_ALGO_80211_OPEN : cela correspond à un algorithme d'authentification 802.11 de type ouvert,
2 : DOT11_AUTH_ALGO_80211_SHARED_KEY : cela correspond à un algorithme d'authentification 802.11 de type Shared Key (clé partagée). L'algorithme Wired Equivalent Privacy (WEP) est un algorithme de ce type,
3 : DOT11_AUTH_ALGO_WPA : cela correspond à un algorithme d'authentification 802.11 de type Wi-Fi Protected Access (WPA),
4 : DOT11_AUTH_ALGO_WPA_PSK : cela correspond à un algorithme d'authentification 802.11 de type WPA avec utilisation d'une clé partagée (Shared Key),
5 : DOT11_AUTH_ALGO_WPA_NONE : cette valeur n'est pas supportée,
6 : DOT11_AUTH_ALGO_RSNA : cela correspond à un algorithme d'authentification 802.11i de type Robust Security Network Association (RSNA). L'algorithme WPA2 est un algorithme de type RSNA,
7 : DOT11_AUTH_ALGO_RSNA_PSK : cela correspond à un algorithme d'authentification 802.11i de type RSNA avec utilisation d'une clé partagée (Shared Key).
0x80000000 : DOT11_AUTH_ALGO_IHV_START : première valeur possible pour les algorithmes d'authentification propriétaires utilisés par les vendeurs indépendants de matériel (IHV = independent hardware vendor).
0xffffffff : DOT11_AUTH_ALGO_IHV_END : dernière valeur possible pour les algorithmes d'authentification propriétaires utilisés par les vendeurs indépendants de matériel (IHV = independent hardware vendor) ;

- Cipher alg : correspond au champ dot11DefaultCipherAlgorithm de la structure WLAN_AVAILABLE_NETWORK. Les valeurs possibles sont :
0 : DOT11_CIPHER_ALGO_NONE : indique l'utilisation d'aucun algorithme de chiffrement,
1 : DOT11_CIPHER_ALGO_WEP40 : indique l'utilisation d'un algorithme de chiffrement de type Wired Equivalent Privacy (WEP). Cet algorithme est basé sur l'algorithme RC-4 par le standard 802.11-1999 et utilise une clé de chiffrement de 40 bits,
2 : DOT11_CIPHER_ALGO_TKIP : indique l'utilisation d'un algorithme de chiffrement de type Temporal Key Integrity Protocol (TKIP). Cet algorithme est basé sur l'algorithme RC-4 par le standard 802.11-1999 802.11i-2004 standard. Cet algorithme utilise aussi l'algorithme Michael Message Integrity Code (MIC) pour la protection contre le rejeu,
4 : DOT11_CIPHER_ALGO_CCMP : indique l'utilisation d'un algorithme de chiffrement de type AES-CCMP défini par le standard 802.11-2004 et la RFC 3610,
5 : DOT11_CIPHER_ALGO_WEP104 : indique l'utilisation d'un algorithme de chiffrement de type WEP avec une clé de chiffrement de 104 bits.
256 : DOT11_CIPHER_ALGO_WPA_USE_GROUP ou DOT11_CIPHER_ALGO_RSN_USE_GROUP : indique l'utilisation d'un algorithme de chiffrement de type « Use Group Key ». Pour plus d'information au sujet de ces algorithmes de chiffrement, se reporter au standard 802.11i-2004 paragraphe 7.3.2.25.1.
257 : DOT11_CIPHER_ALGO_WEP : indique l'utilisation d'un algorithme de chiffrement de type WEP avec une clé de chiffrement dont la longueur est arbitraire,
0x80000000 : DOT11_CIPHER_ALGO_IHV_START : première valeur possible pour les algorithmes de chiffrement propriétaires utilisés par les vendeurs indépendants de matériel (IHV = independent hardware vendor),
0xffffffff : DOT11_CIPHER_ALGO_IHV_END : dernière valeur possible pour les algorithmes de chiffrement propriétaires utilisés par les vendeurs indépendants de matériel (IHV = independent hardware vendor) ;

- Flags : correspond au champ dwFlags de la structure WLAN_AVAILABLE_NETWORK. Ce champ vaut toujours 0 dans le programme Wi-FiScanner. Les valeurs possibles (combinées par ou binaire) sont les suivantes :
1 : WLAN_AVAILABLE_NETWORK_CONNECTED : indique que l'on est connecté à ce réseau Wi-Fi,
2 : WLAN_AVAILABLE_NETWORK_HAS_PROFILE : indique qu'il existe un profil pour ce réseau Wi-Fi,
4 : WLAN_AVAILABLE_NETWORK_CONSOLE_USER_PROFILE : explication non comprise (The profile is the active console user's per user profile) ;

- Reserved : correspond au champ dwReserved de la structure WLAN_AVAILABLE_NETWORK. Ce champ est réservé pour un usage ultérieur et vaut toujours 0.

Certaines explications ou informations sur la signification des champs de la structure WLAN_AVAILABLE_NETWORK ne sont pas forcément complètes. Ces explications sont issues pour la plupart du MSDN et des commentaires du fichier wlanapi.h. N'hésitez pas à apporter une explication complémentaire si vous avez plus d'information à ce sujet dans le post dédié à ce document ici : Commentez . Ce document sera alors complété.

III-D - Découverte des points d'accès Wi-Fi

Une fois que le réseau désiré est sélectionné, il suffit de cliquer sur le bouton « Suivant » pour afficher la liste des points d'accès Wi-Fi disponibles sur ce réseau. Les points d'accès Wi-Fi sont identifiés par leurs adresses MAC. Le premier point d'accès disponible est automatiquement sélectionné.

Liste des points d'accès Wi-Fi

L'image affichée en haut à droite de la fenêtre représente l'historique des valeurs de la qualité du signal pour le point d'accès sélectionné. Cet historique contient les 60 dernières valeurs et il est rafraichi toutes les deux secondes. Les trois lignes jaunes horizontales représentent les valeurs 25 %, 50 % et 75 %.

Les propriétés du point d'accès sélectionné sont affichées dans la liste en bas de la fenêtre. Ces propriétés correspondent à l'interprétation du contenu de la structure WLAN_BSS_ENTRY retournée par la fonction WlanGetNetworkBssList().

Les propriétés affichées sont :

- # : correspond au numéro d'ordre du point d'accès Wi-Fi ;

- SSID : correspond au champ dot11Ssid de la structure WLAN_BSS_ENTRY. Il s'agit d'une chaîne de 32 caractères ASCII qui contient le nom SSID de réseau Wi-Fi diffusé par le point d'accès ;

- Phy ID : correspond au champ uPhyId de la structure WLAN_BSS_ENTRY. Il s'agit de l'identifiant physique sur lequel le point d'accès est actif ;

- BSSID : correspond au champ dot11Bssid de la structure WLAN_BSS_ENTRY. Il s'agit de l'adresse MAC du point d'accès Wi-Fi ;

- BSS Type : correspond au champ dot11BssType de la structure WLAN_BSS_ENTRY. Les valeurs possibles sont :
1 : dot11_BSS_type_infrastructure : cela correspond à un réseau Wi-Fi d'infrastructure,
2 : dot11_BSS_type_independent : cela correspond à un réseau Wi-Fi ad hoc,
3 : dot11_BSS_type_any : cela correspond à un réseau Wi-Fi de n'importe quel type ;

- Phy Type : correspond au champ dot11BssPhyType de la structure WLAN_BSS_ENTRY. Les valeurs possibles sont :
0 : dot11_phy_type_unknown ou dot11_phy_type_any : cela correspond à un réseau physique de n'importe quel type ou de type inconnu,
1 : dot11_phy_type_fhss : cela correspond à un réseau de type « frequency-hopping spread-spectrum » (FHSS). En général, cela concerne les périphériques de type Bluetooth.
2 : dot11_phy_type_dsss : cela correspond à un réseau de type « direct sequence spread spectrum » (DSSS),
3 : dot11_phy_type_irbaseband : cela correspond à un réseau de type infrarouge,
4 : dot11_phy_type_ofdm : cela correspond à un réseau de type « orthogonal frequency division multiplexing » (OFDM). En général, cela concerne les périphériques respectant la norme 802.11a,
5 : dot11_phy_type_hrdsss : cela correspond à un réseau de type « high-rate direct sequence spread spectrum » (HRDSSS),
6 : dot11_phy_type_erp : cela correspond à un réseau de type « extended rate PHY » (ERP). En général, cela concerne les périphériques respectant la norme 802.11g,
7 : dot11_phy_type_ht : cela correspond à un réseau inconnu,
0x80000000 : dot11_phy_type_IHV_start : première valeur possible pour les types physiques propriétaires utilisés par les vendeurs indépendants de matériel (IHV = independent hardware vendor),
0xffffffff : dot11_phy_type_IHV_end : dernière valeur possible pour les types physiques propriétaires utilisés par les vendeurs indépendants de matériel (IHV = independent hardware vendor) ;

- RSSI : correspond au champ lRssi de la structure WLAN_BSS_ENTRY. Il s'agit de la force du signal reçu exprimée en dbm ;

- Quality : correspond au champ uLinkQuality de la structure WLAN_BSS_ENTRY. Il s'agit de la qualité de réception comprise entre 0 et 100 %;

- Reg Domain : correspond au champ bInRegDomain de la structure WLAN_BSS_ENTRY. Si la norme 802.11d n'est pas implémentée, la carte Wi-Fi doit positionner ce champ à TRUE. Si la norme 802.11d est implémentée (mais pas nécessairement activée), la carte Wi-Fi doit positionner ce champ à TRUE si le point d'accès Wi-Fi est conforme au domaine configuré ;

- Beacon Period : correspond au champ usBeaconPeriod de la structure WLAN_BSS_ENTRY. Il s'agit de l'intervalle de temps entre deux paquets de découverte du réseau (beacon) ;

- Timestamp : correspond au champ ullTimestamp de la structure WLAN_BSS_ENTRY. L'information d'horodatage lors de la réception du paquet de découverte (beacon) ;

- Host Timestamp : correspond au champ ullHostTimestamp de la structure WLAN_BSS_ENTRY. L'information d'horodatage de la machine lors de la réception du paquet de découverte (beacon) ;

- Cap Info : correspond au champ usCapabilityInformation de la structure WLAN_BSS_ENTRY. Les capacités reçues du paquet de découverte (beacon) ;

- Frequency : correspond au champ ulChCenterFrequency de la structure WLAN_BSS_ENTRY. La fréquence d'émission radio du point d'accès Wi-Fi (en GHz) ;

- Channel : correspond au champ ulChCenterFrequency de la structure WLAN_BSS_ENTRY. Le canal d'émission du point d'accès Wi-Fi (déduit de la fréquence) ;

- Nb of rates : correspond au champ wlanRateSet de la structure WLAN_BSS_ENTRY. Le nombre de vitesses de transmission (limite à 126) supportées par le point d'accès Wi-Fi ;

- Supported rates : correspond au champ wlanRateSet de la structure WLAN_BSS_ENTRY. La liste des vitesses de transmission supportées par le point d'accès Wi-Fi ;

- IE Offset : correspond au champ ulIeOffset de la structure WLAN_BSS_ENTRY. L'offset des données binaires de l'élément d'information (Information Element = IE) ;

- IE Size : correspond au champ ulIeSize de la structure WLAN_BSS_ENTRY. La longueur des données binaires de l'élément d'information (Information Element = IE).

Certaines explications ou informations sur la signification des champs de la structure WLAN_BSS_ENTRY ne sont pas forcément complètes. Ces explications sont issues pour la plupart du MSDN et des commentaires du fichier wlanapi.h. N'hésitez pas à apporter une explication complémentaire si vous avez plus d'information à ce sujet dans le post dédié à ce document ici : Commentez . Ce document sera alors complété.

III-E - Plus d'information

En cliquant sur le bouton Aide, les informations de version du logiciel Wi-FiScanner sont affichées.

Informations au sujet de Wi-FiScanner

IV - Conclusions

Le programme Wi-FiScanner a été réalisé en quelques jours. Il exploite les informations remontées par l'API Microsoft Native Wi-Fi de gestion des réseaux Wi-Fi. Il est écrit en C++, sous environnement Visual Studio 2005 Professional et utilise les MFC. Il utilise aussi la bibliothèque Winlog.

N'hésitez pas à aller sur la page WWW de Wi-FiScanner pour voir si de nouvelles versions sont disponibles et n'hésitez pas non plus à laisser un avis ou une remarque au sujet de ce programme sur le post dédié à cet effet : Commentez . Ce document évoluera aussi en fonction de vos remarques.

Je tiens à remercier Melem pour ses conseils avisés lors de la relecture de ce tutoriel.