begin process at 2012 05 28 22:25:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Autre

 > 

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


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

samedi 18 décembre 2010 à 18:51:25 | Se connecter à un réseau WIFI en ligne de commande

thenaoh

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 !
lundi 20 décembre 2010 à 03:44:03 | Re : Se connecter à un réseau WIFI en ligne de commande
lundi 20 décembre 2010 à 19:17:53 | Re : Se connecter à un réseau WIFI en ligne de commande

thenaoh

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 *) :

Code C/C++ :
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 !
lundi 20 décembre 2010 à 22:13:59 | Re : Se connecter à un réseau WIFI en ligne de commande

patatalo

Membre Club Administrateur CodeS-SourceS
re,

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

@++
lundi 20 décembre 2010 à 22:18:47 | Re : Se connecter à un réseau WIFI en ligne de commande
lundi 20 décembre 2010 à 22:31:35 | Re : Se connecter à un réseau WIFI en ligne de commande

patatalo

Membre Club Administrateur CodeS-SourceS
Il semblerait bien que ce soit cela:
Version Xml
lundi 20 décembre 2010 à 23:32:12 | Re : Se connecter à un réseau WIFI en ligne de commande

patatalo

Membre Club Administrateur CodeS-SourceS
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
mardi 21 décembre 2010 à 15:54:39 | Re : Se connecter à un réseau WIFI en ligne de commande

thenaoh

Réponse acceptée !
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 *) :

Code C/C++ :
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
mardi 21 décembre 2010 à 17:38:46 | Re : Se connecter à un réseau WIFI en ligne de commande

thenaoh

La suite dans un nouveau post : http://www.cppfrance.com/forum/sujet-API-MICROSOFT-WIFI-QUEL-PROFIL-QUELLE-CONNEXION_1487594.aspx


Cette discussion est classée dans : ligne, code, connecter, réseau, wifi


Répondre à ce message

Sujets en rapport avec ce message

intercepter un overflow [ par dfrag ] bonjour je cherche a intercepter un depassement de buffer lors de la lecture d'un fichier ligne a ligne(cf code ci dessous)mais ca marche pas !!!!# de retour à la ligne [ par msoin ] 'jour, je debute en c++ et je fais quelques petits programmes pour voir comment ça marche.en l'occurence, celui ci:int main(){int loopcount;cout &lt Problème de lecture [ par Hades53 ] Voila, j'ai fait un code pour lire des fichiers qui marche, mais il y a un petit problème avec la dernière ligne du fichier qu'on veut lire:si la dern Editeur de code VS .NET VC++ [ par Koryn38 ] Hi, je cherche à comprendre pourquoi sous VStudio .NET, VC++, j'ai d'importants décalages, en mode debug notamment, entre la véritable ligne executée Incomprehension d'une ligne de code [ par LordBob ] Bonjour a tous,voila je regardais une source du site, une de Brunews sur les boites de dialogue de type login/pass... et il y a une partie de la sour Erreur C++ [ par LordBob ] bonjours a tous,je suis en train de faire un programme, mais j'ai un probleme, une ligne de code qui bug, mais je n'arrive pas a savoir pourquoi... je effacer une ligne de l'ecran [ par amin79 ] Bonjour, Est ce qu'il y a une commende qui permet d'effacer une ligne de l'ecran ou une partie de la ligne. La commande delline(); ne marche pas avec Pb de structures, listes chainees !!! [ par flopflopp ] C encore moi , au vu de qq problème j'ai changé mes structures pour mon éditeur de texte :ma structure ligne est devenu la suivante :Code:struct ligne Je ne comprend pas l'usage '*' dans une ligne de code [ par kerberosca ] Je ne comprend pas la présence des '*' dans le code suivantstatic CPUProcessOutput* out[] = __gc new CPUProcessOutput*[1];surtout celui dans : CPUProc Fichier TXT dans textbox [ par nerone21 ] Bonjour a tt les codeurs...Lors voila mon probleme, je code avec visual C++ 2005 express et quel fut mon desarroi lorsque je me suis appercu ke nos ch


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,154 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales