IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

API Microsoft WIFI : comment se connecter à un réseau WIFI ?


Sujet :

Windows

  1. #1
    Membre du Club
    Profil pro
    Développeur mobile
    Inscrit en
    Novembre 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Novembre 2007
    Messages : 107
    Points : 58
    Points
    58
    Par défaut API Microsoft WIFI : comment se connecter à un réseau WIFI ?
    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 !

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Regarde dans ce tuto : Découverte de l'API Microsoft Native Wifi pour commencer. Par contre, désolé pour toi, mais il n'y a pas la partie connexion dans ce tuto. Il va falloir fouiller un peu dans l'API Microsoft Native Wifi (probablement avec WlanConnect()).
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre du Club
    Profil pro
    Développeur mobile
    Inscrit en
    Novembre 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Novembre 2007
    Messages : 107
    Points : 58
    Points
    58
    Par défaut
    Merci, mais j'ai déjà regardé ce tuto de long en large et ce qui me manque, c'est précisément la partie connexion et plus particulièrement WlanConnect() dont je n'arrive pas encore à bien comprendre le fonctionnement...

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    D'après ce que je viens de comprendre en lisant rapidement la doc, il faut d'abord créer un profil de connexion (avec WlanSetProfile) et ensuite, récupérer ce profil avec WlanGetProfile() et enfin utiliser WlanConnect() en spécifiant ce profil.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 44
    Points : 59
    Points
    59
    Par défaut
    Je connais pas du tout ces fonctions de l'api, mais en jettant un coup d'oeil rapide (par curiosité) je pese que ram-000 a raison. A tout hasard, j'ai cru comprendre de la doc msdn qu'il faut utiliser un profil de connexion (la structure - WLAN_CONNECTION_PARAMETERS - pointé par le 3eme argument de WlanConnect est constitué entre autre de strProfile qui pointent sur le profil que tu peux récupérer grace à WlanGetProfile()) existant ou en créant (tu dois spécifier la méthode temporaire -volatile- ou a enregistré) grace à WlanSetProfile() et y'a des exemples de profile (format xml) dont le WPA/WPA2 : http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
    Tu peux regarder aussi http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx ou y'a le schéma pour construire des profils, et y'a dans le node security y'a bien un enum WEP, WPA, etc... donc je pense qu'il faut regarder par là.
    Désolé de pas pouvoir aider plus.

  6. #6
    Membre du Club
    Profil pro
    Développeur mobile
    Inscrit en
    Novembre 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Novembre 2007
    Messages : 107
    Points : 58
    Points
    58
    Par défaut
    Merci pour votre aide !

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    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.

    N'y a-t-il donc pas un moyen simple de faire cette saisie par programmation afin d'éviter ce message ? Ou bien faut-il que je passe obligatoirement par cette manip de WlanSetProfile, qui m'a bien l'air d'être une usine à gaz ? (et dans ce cas, si y'a un exemple quelque part, je suis preneur )

    Merci !

  7. #7
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Ben justement, c'est tout l'intéret de WlanSetProfile et WlanGetProfile. La clé est rangée dans le profil (peut être même dans un endroit sécurisé/chiffré).
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 44
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par thenaoh Voir le message
    connect.wlanConnectionMode = wlan_connection_mode_discovery_secure;
    connect.strProfile = NULL;
    avec strProfile (c'est ce que je disais dans mon premier post), tu peux pointer sur un profil crée (WlanSetProfile()) ou déjà enregistré(WlanGetProfile()), c'est peut etre comme ca que tu vas éviter le prompt du mot de passe.
    Faut voir aussi avec wlanConnectionMode, MSDN (entre autre):
    wlan_connection_mode_profile
    A profile will be used to make the connection.

    Peut etre si le profil est déjà enregistré (ou crée par programmation juste avant) tu devrais utiliser wlan_connection_mode_profile a la place de mode_discovery secure.

  9. #9
    Membre du Club
    Profil pro
    Développeur mobile
    Inscrit en
    Novembre 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Novembre 2007
    Messages : 107
    Points : 58
    Points
    58
    Par défaut
    Merci à tous !

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    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/libr...(v=vs.85).aspx , plusieurs types de profil sont possibles. Et comment savoir lequel employer dans quel cas ...

    La suite dans un nouveau post : http://www.developpez.net/forums/d10...fil-connexion/

    Merci en tout cas pour le coup de main

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD12] Comment se connecter à un réseau distant ?
    Par piperblue dans le forum WinDev
    Réponses: 5
    Dernier message: 11/09/2008, 08h24
  2. Portatif refuse de se connecter au réseau wifi
    Par annedeblois dans le forum Windows Vista
    Réponses: 1
    Dernier message: 08/10/2007, 18h35
  3. [KUBUNTU] Comment se connecter via le Wifi
    Par lenul79 dans le forum Ubuntu
    Réponses: 6
    Dernier message: 26/07/2007, 23h38
  4. Réponses: 5
    Dernier message: 28/02/2006, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo