Scanner les Access Point WIFI sous Windows XP

Scanner les Access Point WIFI sous Windows XP - C++ - Programmation

Marsh Posté le 06-10-2005 à 15:05:11    

Bonjour tout le monde,
 
dans le cadre d'un projet je dois scanner les AP Wifi et trouver leur signal sous Windows XP.
 
J'ai vu qu'il existe des librairies mais pr CE.  
 
J'ai donc commencé a écrire du code mais je suis perdu à la premiere ligne lol.
 
En effet pour appeler la fonction CreateFile il faut filer le nom du driver NDIS.
 
Sous Pocket, c'est facile de le voir mais sous Windows XP je suis paumé lol.
 
Comment on récupère le nom du driver NDIS de sa carte WIFI ?? J'ai essayé AR5211.sys mais ça marche pas.
 
Je suis sur un portable T40P ibm avec une carte wifi intégré .b.
 
Voila si quelqu'un a une idée ça serait super sympa :)
 
Merci et à bientot
 

Reply

Marsh Posté le 06-10-2005 à 15:05:11   

Reply

Marsh Posté le 16-10-2005 à 22:43:55    

Salut,
 
Jette un oeil dans cette clef sous XP:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards
 
Les sous clefs sont les Adaptateur. (Le N° est arbitraire)
Ouvre une sous clef:
 
Exemple:
Description: Linksys Wireless-G PCI Network Adapter with SpeedBooster
ServiceName: {66900D82-EA5E-4B21-AAB7-0CA5DFBEF293}
 
Pour le CreateFile donne le nom du service (ServiceName) qui ressemble à ca {66900D82-EA5E-4B21-AAB7-0CA5DFBEF293} (avec les accolades et tous...).
 
j'allais oublier les devices se préfixe par \\.\ donc au CreateFile tu passe en fait:
\\.\{66900D82-EA5E-4B21-AAB7-0CA5DFBEF293}
 
Exemple En C:
hHdl = CreateFile("\\\\.\\{66900D82-EA5E-4B21-AAB7-0CA5DFBEF293}", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE) INVALID_HANDLE_VALUE);
 
 
Ca devrais répondre à ta question...
 
Perso j'ai des probleme avec la structure NDIS_WLAN_BSSID_EX,  
 
un sizeof(NDIS_WLAN_BSSID_EX) me donne 142
un sizeof(NDIS_WLAN_BSSID) me donne 120
 
Alors que le champs Length de NDIS_WLAN_BSSID indique 176. Du coup j'arive à récupérer la liste des point d'acces mais je caste en NDIS_WLAN_BSSID un pointeur qui est incrémenté de Length en Length... bizard...
 
Second probleme j'arrive pas a forcer la reactualisation avec OID_802_11_BSSID_LIST_SCAN.
 
Si je rafreshi avec le soft de ma carte ou Windows Z Config ca réactualise bien...
 
Si tu trouves je suis preuneur..
 
(suis sur XP Pro SP2 + Driver linkSys(Broadcom) )
 
A++


Message édité par hexanium le 17-10-2005 à 01:17:06
Reply

Marsh Posté le 05-11-2005 à 09:48:50    

:hello:  
 
Salut A tous,
voila, j ai aussi un souci de ce cote la : la recuperation des AccessPoint (SSID) pr les reseaux WIFI
Pour le CreateFile je n ai pas de souci, je recois bien un handle valide sur mon device.
par contre, ensuite quand j effectue la Query pour recuperer la list des SSID,  
la fonction DeviceIoControl me renvoie ds ts les cas ERROR_INVALID_FUNCTION.
 
j'ai ajouter la librairie "kernel32.lib" au projet,
j'ai aussi inclus "<windows.h>" dans le code.
 
je ne vois pas du tout ou pourrait s'etre glisser une erreur,  
alors si vous pouvez m'aider je suis preneur.
 
voici le code :  
 
 

Citation :


HANDLE ndisAccess =  CreateFile( deviceName
   , GENERIC_READ|GENERIC_WRITE
   , FILE_SHARE_READ | FILE_SHARE_WRITE
   , NULL  
   , OPEN_EXISTING  
   , FILE_ATTRIBUTE_NORMAL
   , (HANDLE)INVALID_HANDLE_VALUE);
if ( ndisAccess != INVALID_HANDLE_VALUE )  
{    
 UCHAR QueryBuffer[sizeof(NDISUIO_QUERY_OID) + MAC_ADDR_LEN];      
 PNDISUIO_QUERY_OID pQueryOid;
 pQueryOid = (PNDISUIO_QUERY_OID)&QueryBuffer[0];
 pQueryOid->Oid = OID_802_11_BSSID_LIST;
 
 BOOL bRet = DeviceIoControl(
   ndisAccess,
   IOCTL_NDISUIO_QUERY_OID_VALUE,
   (LPVOID) &QueryBuffer[0],
   sizeof(QueryBuffer),          
   (LPVOID) &QueryBuffer[0],
   sizeof(QueryBuffer),
   &dwBytesReturned,
   NULL);
}


 
 
Sinon, pr info je suis sur Xp PRO SP2 + driver D-Link AirPlus

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed