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

thenaoh 111 Messages postés dimanche 28 septembre 2003Date d'inscription 24 juin 2015 Dernière intervention - 18 déc. 2010 à 18:51 - Dernière réponse : thenaoh 111 Messages postés dimanche 28 septembre 2003Date d'inscription 24 juin 2015 Dernière intervention
- 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 !
Afficher la suite 

8 réponses

Répondre au sujet
cs_patatalo 1466 Messages postés vendredi 2 janvier 2004Date d'inscription 14 février 2014 Dernière intervention - 20 déc. 2010 à 22:18
+3
Utile
Peut-être WlanSetProfile()
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_patatalo
thenaoh 111 Messages postés dimanche 28 septembre 2003Date d'inscription 24 juin 2015 Dernière intervention - 21 déc. 2010 à 15:54
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de thenaoh
cs_patatalo 1466 Messages postés vendredi 2 janvier 2004Date d'inscription 14 février 2014 Dernière intervention - 20 déc. 2010 à 03:44
Commenter la réponse de cs_patatalo
thenaoh 111 Messages postés dimanche 28 septembre 2003Date d'inscription 24 juin 2015 Dernière intervention - 20 déc. 2010 à 19:17
0
Utile
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 !
Commenter la réponse de thenaoh
cs_patatalo 1466 Messages postés vendredi 2 janvier 2004Date d'inscription 14 février 2014 Dernière intervention - 20 déc. 2010 à 22:13
0
Utile
re,

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

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.