Se connecter à un réseau WIFI en ligne de commande

Résolu
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015 - 18 déc. 2010 à 18:51
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015 - 21 déc. 2010 à 17:38
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

cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
20 déc. 2010 à 22:18
3
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
21 déc. 2010 à 15:54
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
3
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
20 déc. 2010 à 03:44
0
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
20 déc. 2010 à 19:17
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
20 déc. 2010 à 22:13
re,

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

@++
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
20 déc. 2010 à 22:31
Il semblerait bien que ce soit cela:
Version Xml
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
20 déc. 2010 à 23:32
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
0
thenaoh Messages postés 111 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 24 juin 2015
21 déc. 2010 à 17:38
0
Rejoignez-nous