none
Récupération adresse MAC RRS feed

  • Question

  • Bonjour, je code actuellement un scanner Wifi, et j'utilise donc wlan_available_network, j'arrive à récupérer toute les informations désirées, mais le problème étant que je voulais aussi récupérer l'adresse MAC du point d'accès. Or dans la structure de wlan_available_network impossible de trouver la MAc adresse :/

    Quelqu'un saurait-il comment faire ?

     

    Merci


    vendredi 17 juin 2011 15:09

Réponses

Toutes les réponses

  • A en croire la conversation suivante http://www.developpez.net/forums/d141890/general-developpement/programmation-systeme/windows/developper-application-capable-lister-reseaux-wifi-disponibles/

    Il faut utiliser WlanGetNetworkBssList au lieu de WlanGetAvailableNetworkList.


    Paul Bacelar, Ex - MVP VC++
    lundi 20 juin 2011 09:28
    Modérateur
  • J'ai lu la conversation suivante et tenté d'accéder aux données voulues, RSSI MAC@ channel SSID

    mais j'ai rencontré beaucoup de mal.

     

    J'ai ce morceau de code 

     

    DWORD serviceVersion = 0;

    HANDLE client = 0;

    DWORD result = 0;

     

    result = WlanOpenHandle(WLAN_API_VERSION, NULL, &serviceVersion, &client);

    if(result != ERROR_SUCCESS) {

    // exit

    }

     

    // Sanity check.

    if(client == 0) {

    // exit

    }

     

    PWLAN_INTERFACE_INFO_LIST wlanInterfaceInfoList = 0;

    result = WlanEnumInterfaces(client, 0, &wlanInterfaceInfoList);

    if(result != ERROR_SUCCESS) {

    // Clean up.

    if(client != 0) {

    WlanCloseHandle(client, 0);

    client = 0;

    }

    // This might not be needed.

    if(wlanInterfaceInfoList != 0) {

    WlanFreeMemory(wlanInterfaceInfoList);

    wlanInterfaceInfoList = 0;

    }

    // exit

    }

     

    PVOID data = 0;

    DWORD size = 0;

     

    for(unsigned int i = 0; i < wlanInterfaceInfoList->dwNumberOfItems; ++i) {

    result = WlanQueryInterface(

    client, 

    &wlanInterfaceInfoList->InterfaceInfo[i].InterfaceGuid,

    wlan_intf_opcode_current_connection,

    0,

    &size,

    &data,

    0

    );

     

    if(result != ERROR_SUCCESS) {

    break;

    }

     

    PWLAN_CONNECTION_ATTRIBUTES wlanConnectionAttributes = 0;

    wlanConnectionAttributes = (PWLAN_CONNECTION_ATTRIBUTES)data;

    if(wlanConnectionAttributes->isState != wlan_interface_state_connected) {

    continue;

    }

    char ssidName[33];

    memset(ssidName, 0, 33);

     

    memcpy(

    ssidName, 

    wlanConnectionAttributes->wlanAssociationAttributes.dot11Ssid.ucSSID,

    wlanConnectionAttributes->wlanAssociationAttributes.dot11Ssid.uSSIDLength);

    if (wlanConnectionAttributes->wlanAssociationAttributes.dot11Ssid.uSSIDLength == 0)

            wprintf(L"\n");

        else {   

            for (int k = 0; k < wlanConnectionAttributes->wlanAssociationAttributes.dot11Ssid.uSSIDLength; k++) {

                wprintf(L"%c", (int) wlanConnectionAttributes->wlanAssociationAttributes.dot11Ssid.ucSSID[k]);

            }

            wprintf(L"\n");

        }

     

     

    qui me permet d'afficher le SSID du réseau sur lequel je suis connecté, or je voudrais moi recuperer les données de tout les points d'accès autour de moi.

     

    Quelqu'un aurtait-il une idée ? ou un morceau de code explicatif ? 

     

    Merci

    vendredi 24 juin 2011 09:19
  • Bonjour,

     

    Je reviens vers vous car après quelques recherches, j'ai une question qui reste en suspend. 

    Je commence donc mon application par WlanOpenHandle(), puis j'initialise la carte réseau WlanEnumInterfaces() jusqu'ici tout ce déroule bien. Par contre je voulais maintenant récupérer les Adresses MAC, le SSID, le channel et le rssi des points d'accès.

    Ma question étant, est ce qu'il faudrait établir un envoi de probe request sur chaque AP avec WlanGetAvailableNetworkList() puis dans chaque réseau qui peut etre construit avec un ou plusieurs point d'accès utiliser WlanGetNetworkBssList() pouvoir récuperer toutes les données voulues (mac, ssid,channel, rssi).

    ce qui donnerait une encapsulation   WlanGetAvailableNetworkList() -> WlanGetNetworkBssList()

    Mais je ne trouve aucun moyen de "joindre" les deux pourtant c'est ce que j'ai compris sur les différents tutoriaux 

    cf:http://ram-0000.developpez.com/tutoriels/Programme/WifiScanner/

     

    Est-ce ainsi que l'on doit procéder ?

     

    Merci

    lundi 27 juin 2011 12:53
  • Le champs pDot11Ssid de  WlanGetNetworkBssList() n'est pas là pour ça ???


    Paul Bacelar, Ex - MVP VC++
    mercredi 27 juillet 2011 09:40
    Modérateur