+ Reply to Thread
Results 1 to 6 of 6
  1. #1
    Retired Admin
    Join Date
    Feb 2005
    Location
    Norway
    Posts
    1,933

    wireless network scanner

    Author: D-oNe

    wif.c
    Code:
    /* 
       wif.c by D-oNe 
     
       BIG THANKS to GriYo of 29A for his article: 
       "Scanning for Wireless Networks" 
       In 29A Issue 8! 
     
       Feel free to use this code as you want as long as CREDITS are given! 
    */ 
     
    #include <stdio.h> 
    #include <stdlib.h> 
    #include <winsock2.h> 
     
    #define NUMBEROFSSIDS 10 
     
    #define _NDIS_CONTROL_CODE(request, method) \ 
          CTL_CODE(FILE_DEVICE_PHYSICAL_NETCARD, request, method, FILE_ANY_ACCESS) 
    #define IOCTL_NDIS_QUERY_GLOBAL_STATS _NDIS_CONTROL_CODE(0, METHOD_OUT_DIRECT) 
     
    #define OID_802_11_BSSID 0x0D010101 
    #define OID_802_11_SSID 0x0D010102 
    #define OID_802_11_NETWORK_TYPES_SUPPORTED 0x0D010203 
    #define OID_802_11_NETWORK_TYPE_IN_USE 0x0D010204 
    #define OID_802_11_TX_POWER_LEVEL 0x0D010205 
    #define OID_802_11_RSSI 0x0D010206 
    #define OID_802_11_RSSI_TRIGGER 0x0D010207 
    #define OID_802_11_INFRASTRUCTURE_MODE 0x0D010108 
    #define OID_802_11_FRAGMENTATION_THRESHOLD 0x0D010209 
    #define OID_802_11_RTS_THRESHOLD 0x0D01020A 
    #define OID_802_11_NUMBER_OF_ANTENNAS 0x0D01020B 
    #define OID_802_11_RX_ANTENNA_SELECTED 0x0D01020C 
    #define OID_802_11_TX_ANTENNA_SELECTED 0x0D01020D 
    #define OID_802_11_SUPPORTED_RATES 0x0D01020E 
    #define OID_802_11_DESIRED_RATES 0x0D010210 
    #define OID_802_11_CONFIGURATION 0x0D010211 
    #define OID_802_11_STATISTICS 0x0D020212 
    #define OID_802_11_ADD_WEP 0x0D010113 
    #define OID_802_11_REMOVE_WEP 0x0D010114 
    #define OID_802_11_DISASSOCIATE 0x0D010115 
    #define OID_802_11_POWER_MODE 0x0D010216 
    #define OID_802_11_BSSID_LIST 0x0D010217 
    #define OID_802_11_AUTHENTICATION_MODE 0x0D010118 
    #define OID_802_11_PRIVACY_FILTER 0x0D010119 
    #define OID_802_11_BSSID_LIST_SCAN 0x0D01011A 
    #define OID_802_11_WEP_STATUS 0x0D01011B 
    #define OID_802_11_RELOAD_DEFAULTS 0x0D01011C 
     
    typedef enum _NDIS_802_11_NETWORK_TYPE 
    { 
       Ndis802_11FH, 
       Ndis802_11DS, 
       Ndis802_11NetworkTypeMax  
    } NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE; 
     
    typedef LONG NDIS_802_11_RSSI; 
     
    typedef struct _NDIS_802_11_CONFIGURATION_FH 
    { 
       ULONG Length; 
       ULONG HopPattern; 
       ULONG HopSet; 
       ULONG DwellTime; 
    } NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH; 
     
    typedef struct _NDIS_802_11_CONFIGURATION 
    { 
       ULONG Length; 
       ULONG BeaconPeriod; 
       ULONG ATIMWindow; 
       ULONG DSConfig; 
       NDIS_802_11_CONFIGURATION_FH    FHConfig; 
    } NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION; 
     
    typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE 
    { 
       Ndis802_11IBSS, 
       Ndis802_11Infrastructure, 
       Ndis802_11AutoUnknown, 
       Ndis802_11InfrastructureMax 
    } NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE; 
     
    typedef enum _NDIS_802_11_AUTHENTICATION_MODE 
    { 
       Ndis802_11AuthModeOpen, 
       Ndis802_11AuthModeShared, 
       Ndis802_11AuthModeAutoSwitch, 
       Ndis802_11AuthModeMax  
    } NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE; 
     
    typedef UCHAR NDIS_802_11_RATES[8]; 
     
    typedef UCHAR NDIS_802_11_MAC_ADDRESS[6]; 
     
    typedef struct _NDIS_802_11_SSID 
    { 
       ULONG SsidLength; 
       UCHAR Ssid[32]; 
    } NDIS_802_11_SSID, *PNDIS_802_11_SSID; 
     
    typedef struct _NDIS_WLAN_BSSID 
    { 
       ULONG Length; 
       NDIS_802_11_MAC_ADDRESS MacAddress; 
       UCHAR Reserved[2]; 
       NDIS_802_11_SSID Ssid; 
       ULONG Privacy; 
       NDIS_802_11_RSSI Rssi; 
       NDIS_802_11_NETWORK_TYPE NetworkTypeInUse; 
       NDIS_802_11_CONFIGURATION Configuration; 
       NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode; 
       NDIS_802_11_RATES SupportedRates; 
    } NDIS_WLAN_BSSID, *PNDIS_WLAN_BSSID; 
     
    typedef struct _NDIS_802_11_BSSID_LIST 
    { 
       ULONG NumberOfItems; 
       NDIS_WLAN_BSSID Bssid[1]; 
    } NDIS_802_11_BSSID_LIST, *PNDIS_802_11_BSSID_LIST; 
     
    BOOL wif_adapterget(HKEY hKey, char *szPath, char *szKey, char *szBuffer, DWORD dwSize) 
    { 
       HKEY rk = NULL; 
       if (RegOpenKeyEx(hKey, szPath, 0, KEY_READ, &rk) != ERROR_SUCCESS) return FALSE; 
       if (RegQueryValueEx(rk, 
                szKey, 
                NULL, 
                NULL, 
                (unsigned char *)szBuffer, 
                &dwSize) != ERROR_SUCCESS) return FALSE; 
          RegCloseKey(rk); 
          return TRUE; 
    } 
     
    BOOL wif_adapterlist() 
    { 
       char szAdapter[128], szDescription[128], szKey[128], szServiceName[128]; 
       DWORD dwSize = 256; 
       HKEY rk = NULL; 
       int i = 0; 
       if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
                "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards", 
                0, 
                KEY_READ, 
                &rk) == ERROR_SUCCESS) 
       { 
          while (RegEnumKeyEx(rk, 
                   i, 
                   szKey, 
                   &dwSize, 
                   NULL, 
                   NULL, 
                   NULL, 
                   NULL) == ERROR_SUCCESS) 
          { 
                _snprintf(szAdapter, 
                      sizeof(szAdapter) - 1, 
                      "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards\\%s", 
                      szKey); 
                wif_adapterget(HKEY_LOCAL_MACHINE, 
                      szAdapter, 
                      "Description", 
                      szDescription, 
                      sizeof(szDescription)); 
                wif_adapterget(HKEY_LOCAL_MACHINE, 
                      szAdapter, 
                      "ServiceName", 
                      szServiceName, 
                      sizeof(szServiceName)); 
                printf("[+] %s - %s (%s)\n", szKey, szDescription, szServiceName); 
                dwSize = 256; 
                i++; 
          } 
             RegCloseKey(rk); 
       } 
       if (!i) 
             return FALSE; 
          return TRUE; 
    } 
     
    HANDLE wif_adapteropen(char *szAdapterName) 
    { 
       HANDLE hAdapter; 
       char szAdapter[MAX_PATH]; 
          _snprintf(szAdapter, sizeof(szAdapter) - 1, "\\\\.\\%s", szAdapterName); 
          hAdapter = CreateFile(szAdapter, 
                GENERIC_READ, 
                FILE_SHARE_READ | 
                FILE_SHARE_WRITE, 
                NULL, 
                OPEN_EXISTING, 
                0, 
                NULL); 
          return hAdapter; 
    } 
     
    BOOL wif_networkconnect(HANDLE hAdapter, char *szSSID) 
    { 
       DWORD dwBytes, dwOIDCode; 
          dwOIDCode = Ndis802_11Infrastructure; 
    //Dissassociate 
       if (!DeviceIoControl(hAdapter, 
                OID_802_11_INFRASTRUCTURE_MODE, 
                &dwOIDCode, 
                sizeof(dwOIDCode), 
                NULL, 
                0, 
                &dwBytes, 
                NULL)) return FALSE; 
          dwOIDCode = Ndis802_11AuthModeOpen; 
       if (!DeviceIoControl(hAdapter, 
                OID_802_11_AUTHENTICATION_MODE, 
                &dwOIDCode, 
                sizeof(dwOIDCode), 
                NULL, 
                0, 
                &dwBytes, 
                NULL)) return FALSE; 
    //Set SSID 
    // START CODING FROM HERE, NUBZ. -D-oNe 
          return TRUE; 
    } 
     
    BOOL wif_networklist(HANDLE hAdapter) 
    { 
       DWORD dwBytes, dwOIDCode; 
       int i; 
       NDIS_802_11_BSSID_LIST *pList; 
          pList = (NDIS_802_11_BSSID_LIST *)VirtualAlloc(NULL, 
                sizeof(NDIS_802_11_BSSID_LIST) * NUMBEROFSSIDS, 
                MEM_RESERVE | 
                MEM_COMMIT, 
                PAGE_READWRITE); 
       if (!pList) 
             return FALSE; 
       else 
       { 
             memset(pList, 0, sizeof(NDIS_802_11_BSSID_LIST) * NUMBEROFSSIDS); 
             dwOIDCode = OID_802_11_BSSID_LIST_SCAN; 
             DeviceIoControl(hAdapter, 
                   IOCTL_NDIS_QUERY_GLOBAL_STATS, 
                   &dwOIDCode, 
                   sizeof(dwOIDCode), 
                   NULL, 
                   0, 
                   &dwBytes, 
                   NULL); 
             Sleep(2000); 
             memset(pList, 0, sizeof(NDIS_802_11_BSSID_LIST) * NUMBEROFSSIDS); 
             dwOIDCode = OID_802_11_BSSID_LIST; 
          if (!DeviceIoControl(hAdapter, 
                   IOCTL_NDIS_QUERY_GLOBAL_STATS, 
                   &dwOIDCode, 
                   sizeof(dwOIDCode), 
                   pList, 
                   sizeof(NDIS_802_11_BSSID_LIST) * NUMBEROFSSIDS, 
                   &dwBytes, 
                   NULL)) return FALSE; 
       } 
          system("cls"); 
          printf("[+] Found %i network(s)!\n", pList->NumberOfItems); 
       for (i = 0; i < (int)pList->NumberOfItems; i++) 
       { 
                printf("[+] ID: %i - MAC: %02X-%02X-%02X-%02X-%02X-%02X - Signal: %d dBm - SSID: %s - OPEN: %i\n", 
                      i, 
                      pList->Bssid[i].MacAddress[0], 
                      pList->Bssid[i].MacAddress[1], 
                      pList->Bssid[i].MacAddress[2], 
                      pList->Bssid[i].MacAddress[3], 
                      pList->Bssid[i].MacAddress[4], 
                      pList->Bssid[i].MacAddress[5], 
                      pList->Bssid[i].Rssi, 
                      pList->Bssid[i].Ssid.Ssid, 
                      pList->Bssid[i].Privacy); 
       } 
          return TRUE; 
    } 
     
    int main(int argc, char *argv[]) 
    { 
       char szAdapter[128], szDescription[128], szServiceName[128]; 
       HANDLE hAdapter; 
          printf("\nwif by D-oNe\n\n"); 
       if (argc < 2)  
       { 
             printf("usage:\n"); 
             printf("%s <adapter> <filepath>\n", argv[0]); 
             printf("%s -l to list available network adapters.\n", argv[0]); 
             printf("[-] Exiting...\n"); 
             return 0; 
       } 
       if (strcmp(argv[1], "-l") == 0) 
       { 
             wif_adapterlist(); 
             return 0; 
       } 
       if (argc < 3) 
       { 
             printf("usage:\n"); 
             printf("%s <interface> <filepath>\n", argv[0]); 
             printf("%s -l to list network adapters.\n", argv[0]); 
             printf("[-] Exiting...\n"); 
             return 0; 
       } 
          printf("[+] Getting adapter: %s...\n", argv[1]); 
          memset(szDescription, 0, sizeof(szDescription)); 
          memset(szServiceName, 0, sizeof(szServiceName)); 
          _snprintf(szAdapter, 
                sizeof(szAdapter) - 1, 
                "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards\\%s", 
                argv[1]); 
          wif_adapterget(HKEY_LOCAL_MACHINE, 
                szAdapter, 
                "Description", 
                szDescription, 
                sizeof(szDescription) - 1); 
          wif_adapterget(HKEY_LOCAL_MACHINE, 
                szAdapter, 
                "ServiceName", 
                szServiceName, 
                sizeof(szServiceName) - 1); 
          printf("[+] Opening adapter: %s...\n", szDescription); 
          hAdapter = wif_adapteropen(szServiceName); 
       if (hAdapter == INVALID_HANDLE_VALUE) 
       { 
             printf("[+] Failed to open adapter: %s!\n", szDescription); 
             return 0; 
       } 
          printf("[+] Scanning for networks...\n"); 
       if (!wif_networklist(hAdapter)) 
       { 
             printf("[+] No networks found!\n"); 
             return 0; 
       } 
          return 0; 
    }

  2. #2
    Junior Member dll_Thief's Avatar
    Join Date
    Dec 2008
    Posts
    3
    Does this work?

  3. #3
    Senior Member -silent-'s Avatar
    Join Date
    May 2005
    Posts
    1,374
    try it and see
    00101101 01110011 01101001 01101100 01100101 01101110 01110100 00101101


  4. #4
    Senior Member albinoskunk's Avatar
    Join Date
    Jun 2008
    Posts
    566
    Quote Originally Posted by dll_Thief View Post
    Does this work?
    learn to read post dates.

  5. #5
    Retired Admin KriPpLer's Avatar
    Join Date
    Apr 2006
    Location
    \xeb\x06\x90\x90
    Posts
    2,063
    Works fine but you gotta declare some shit correctly or it dont compile. I had to at least. Good stuff

    __________________________________________________ _________________
    I like pie.

  6. #6
    Junior Member
    Join Date
    Feb 2007
    Posts
    10
    Hello

    I have 2 errors and i don't understand why

    error C2017: illegal escape sequence

    DeviceIoControl(hAdapter,IOCTL_NDIS_QUERY_GLOBAL_S TATS,&dwOIDCode,sizeof(dwOIDCode),NULL,0,&dwBytes, NULL);

    if(!DeviceIoControl(hAdapter,IOCTL_NDIS_QUERY_GLOB AL_STATS,&dwOIDCode,sizeof(dwOIDCode),pList,sizeof (NDIS_802_11_BSSID_LIST) * NUMBEROFSSIDS,&dwBytes,NULL))

    Complied with vc++6

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Ip scanner
    By dNs- in forum Malware sources
    Replies: 11
    Last Post: 28-04-2010, 20:50
  2. Network Shutdown 1.0
    By LttCoder in forum Malware sources
    Replies: 3
    Last Post: 15-05-2007, 21:51
  3. [order] Scanner of vulnerabilities - Source Code
    By lhtrojahn in forum General Programming Help
    Replies: 4
    Last Post: 17-02-2007, 08:37
  4. Meliksah Port Scanner v0.1
    By ratws in forum Snippets
    Replies: 1
    Last Post: 01-12-2006, 16:00
  5. Multithreaded IP Scanner
    By ratws in forum Snippets
    Replies: 0
    Last Post: 09-10-2005, 00:12

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 ©2011, Crawlability, Inc.