Se connecter à un réseau WIFI en ligne de commande [Résolu]

Signaler
Messages postés
111
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
24 juin 2015
-
Messages postés
111
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
24 juin 2015
-
Bonjour,

Je cherche à réaliser une application simple en mode console me permettant de lister les réseaux WIFI disponibles et de me connecter à l'un d'entre eux. J'utilise pour cela l'API Microsoft Native WIFI.

M'étant inspiré de plusieurs codes trouvés ça et là, je parviens bien à lister les réseaux disponibles, mais je n'arrive pas à me connecter, ne serait-ce qu'à ma propre freebox. Je suis d'ailleurs surpris qu'on ne précise nulle part dans le code la clé WEP ou WPA pour se connecter au réseau ...

Mon code est dispo ici : http://www.classemix.fr/test/ConnexionWIFI.zip (dans cet exemple, j'essaie de me connecter au premier réseau disponible, vu que je ne détecte chez moi qu'un seul réseau, celui de ma freebox. Dans ce code, la fonction WlanConnect semble ne pas vouloir fonctionner.)

Si quelqu'un sait comment je peux me connecter au réseau WIFI de mon choix grâce à l'API WIFI, ça m'intéresse

Merci par avance pour votre aide !

8 réponses

Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
Messages postés
111
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
24 juin 2015

Merci patatalo !

Alors effectivement, en se servant de WlanSetProfile(), j'arrive maintenant à me connecter d'un coup à ma Freebox, sans aucune saisie de clé (je l'ai mise en dur dans le xml du profil pour mon test).

Pour celles et ceux que ça intéresse, en gros, ça donne ça (avec "strProfileXML" le contenu XML de mon profil, et "info" de type WLAN_AVAILABLE_NETWORK *) :

DWORD dwReason;
DWORD retour = WlanSetProfile(clientHandle, guid, 0, strProfileXML, NULL, TRUE, NULL, &dwReason);

WLAN_CONNECTION_PARAMETERS connect;
memset(&connect, 0, sizeof(WLAN_CONNECTION_PARAMETERS));

connect.wlanConnectionMode = wlan_connection_mode_temporary_profile;
connect.strProfile = strProfileXML;
connect.dwFlags = WLAN_CONNECTION_IGNORE_PRIVACY_BIT;
connect.pDot11Ssid = &info->dot11Ssid;
connect.pDesiredBssidList = 0;
connect.dot11BssType = dot11_BSS_type_infrastructure;

DWORD retour2 = WlanConnect(clientHandle, guid, &connect, NULL);


Reste maintenant que je veux pouvoir me connecter à n'importe quel réseau WIFI, comme on le fait habituellement d'un pc portable via l'interface Windows. De ce que je peux voir ici : http://msdn.microsoft.com/en-us/library/aa369853(v=vs.85).aspx , plusieurs types de profil sont possibles. Et comment savoir lequel employer dans quel cas ...

Merci en tout cas pour le coup de main
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
Messages postés
111
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
24 juin 2015

Merci !

Alors pour info, avec le code suivant, je parviens (presque) maintenant à me connecter au réseau WIFI de mon choix (avec "info" de type WLAN_AVAILABLE_NETWORK *) :

WLAN_CONNECTION_PARAMETERS connect;
memset(&connect, 0, sizeof(WLAN_CONNECTION_PARAMETERS));

connect.wlanConnectionMode = wlan_connection_mode_discovery_secure;
connect.strProfile = NULL;
connect.pDot11Ssid = &info->dot11Ssid;
connect.pDesiredBssidList = 0;
connect.dot11BssType = dot11_BSS_type_infrastructure;
connect.dwFlags = NULL;

DWORD retour = WlanConnect(clientHandle, guid, &connect, NULL);


Le seul hic est que Windows m'affiche un message me demandant de saisir la clé (WEP ou WPA ou autre) via son interface habituelle.

Y a-t-il un moyen simple de faire cette saisie par programmation afin d'éviter ce message ?

Merci !
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
re,

Je n'ai pas trouvé mais je pense que regmon pourrait t'aider à regler ce problème.

@++
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
Il semblerait bien que ce soit cela:
Version Xml
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
Peut-être que cela ne permet que de definir les profiles et non la clefs.

J'ai vu une fonction WlanSetSecondSecurityKey().

Si tu as un petit exe qui peut faire le boulot, essaie de le passer là dedans pour voir: Tracelog
Messages postés
111
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
24 juin 2015