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

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

Votre réponse

8 réponses

Meilleure réponse
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Dernière intervention
14 février 2014
3
Merci
Peut-être WlanSetProfile()

Merci cs_patatalo 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de cs_patatalo
Messages postés
111
Date d'inscription
dimanche 28 septembre 2003
Dernière intervention
24 juin 2015
3
Merci
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

Merci thenaoh 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de thenaoh
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Dernière intervention
14 février 2014
Commenter la réponse de cs_patatalo
Messages postés
111
Date d'inscription
dimanche 28 septembre 2003
Dernière intervention
24 juin 2015
0
Merci
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
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Dernière intervention
14 février 2014
0
Merci
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
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Dernière intervention
14 février 2014
0
Merci
Il semblerait bien que ce soit cela:
Version Xml
Commenter la réponse de cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Dernière intervention
14 février 2014
0
Merci
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
Messages postés
111
Date d'inscription
dimanche 28 septembre 2003
Dernière intervention
24 juin 2015
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.