首页
社区
课程
招聘
[求助]获取无线网络标识,连接无线路由实现
发表于: 2016-9-13 12:18 3658

[求助]获取无线网络标识,连接无线路由实现

2016-9-13 12:18
3658
如题,我想用vc做一个这样的程序,搜索可用的无线网络,然后连接无线网络,请做过的告诉下,给个例子或网址,谢谢啊!

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 171
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
包括如何判断无线网络的信号强弱
2016-9-13 12:24
0
雪    币: 5461
活跃值: (1410)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

下面是关键代码,是编历无线网卡,再打描无线信号;我也是从网上抄的。

BOOL CtzpcDlg::EnumInterface()
{
        // Declare and initialize variables.

        HANDLE hClient = NULL;
        DWORD dwMaxClient = 2;      //   
        DWORD dwCurVersion = 0;
        DWORD dwResult = 0;
        DWORD dwRetVal = 0;
        int iRet = 0;
        TCHAR szTextOut[1024] = _T("\0");

        WCHAR GuidString[39] = {0};

        unsigned int i, j, k;

        //variables used for WlanEnumInterfaces  

        PWLAN_INTERFACE_INFO_LIST pIfList = NULL;
        PWLAN_INTERFACE_INFO pIfInfo = NULL;

        PWLAN_AVAILABLE_NETWORK_LIST pBssList = NULL;
        PWLAN_AVAILABLE_NETWORK pBssEntry = NULL;

        dwResult = WlanOpenHandle(dwMaxClient, NULL, &dwCurVersion, &hClient);
        if (dwResult != ERROR_SUCCESS)
        {
                _stprintf(szTextOut, _T("WlanOpenHandle failed with error: %u"), dwResult);
                TRACE(_T("%s"), szTextOut);
                return 1;
                // You can use FormatMessage here to find out why the function failed
        }

        dwResult = WlanEnumInterfaces(hClient, NULL, &pIfList);
        if (dwResult != ERROR_SUCCESS)
        {
                _stprintf(szTextOut, _T("WlanEnumInterfaces failed with error: %u"), dwResult);
                TRACE(_T("%s"), szTextOut);
                return 1;
                // You can use FormatMessage here to find out why the function failed
        }
        else
        {
                _stprintf(szTextOut, _T("Num Entries: %lu"), pIfList->dwNumberOfItems);
                TRACE(_T("%s"), szTextOut);
                _stprintf(szTextOut, _T("Current Index: %lu"), pIfList->dwIndex);
                TRACE(_T("%s"), szTextOut);
                for (i = 0; i < (int) pIfList->dwNumberOfItems; i++)
                {
                        pIfInfo = (WLAN_INTERFACE_INFO *) &pIfList->InterfaceInfo[i];
                        _stprintf(szTextOut, _T("  Interface Index[%u]:\t %lu"), i, i);
                        //m_edit1.Format(_T("网卡描述:%s,连接状态:%d,%s\n"),pIfInfo->strInterfaceDescription,pIfInfo->isState,szTextOut);
                        TRACE(_T("%s"), szTextOut);
                        iRet = StringFromGUID2(pIfInfo->InterfaceGuid, (LPOLESTR) &GuidString,
                                sizeof(GuidString)/sizeof(*GuidString));
                        // For c rather than C++ source code, the above line needs to be
                        // iRet = StringFromGUID2(&pIfInfo->InterfaceGuid, (LPOLESTR) &GuidString,
                        //     sizeof(GuidString)/sizeof(*GuidString));
                        if (iRet == 0)
                                _stprintf(szTextOut, _T("StringFromGUID2 failed"));
                        else
                        {
                                _stprintf(szTextOut, _T("  InterfaceGUID[%d]: %ws"),i, GuidString);
                        }
                        TRACE(_T("%s"), szTextOut);

                        _stprintf(szTextOut, _T("  Interface Description[%d]: %ws\r"), i,
                                pIfInfo->strInterfaceDescription);
                        TRACE(_T("%s"), szTextOut);

                        //_stprintf(szTextOut, _T(""));
                        _stprintf(szTextOut, _T("  Interface State[%d]:\t "), i);
                        TRACE(_T("%s"), szTextOut);

                        switch (pIfInfo->isState)
                        {
                        case wlan_interface_state_not_ready:
                                _stprintf(szTextOut, _T("Not ready"));
                                break;
                        case wlan_interface_state_connected:
                                _stprintf(szTextOut, _T("Connected"));
                                break;
                        case wlan_interface_state_ad_hoc_network_formed:
                                _stprintf(szTextOut, _T("First node in a ad hoc network"));
                                break;
                        case wlan_interface_state_disconnecting:
                                _stprintf(szTextOut, _T("Disconnecting"));
                                break;
                        case wlan_interface_state_disconnected:
                                _stprintf(szTextOut, _T("Not connected"));
                                break;
                        case wlan_interface_state_associating:
                                _stprintf(szTextOut, _T("Attempting to associate with a network"));
                                break;
                        case wlan_interface_state_discovering:
                                _stprintf(szTextOut, _T("Auto configuration is discovering settings for the network"));
                                break;
                        case wlan_interface_state_authenticating:
                                _stprintf(szTextOut, _T("In process of authenticating"));
                                break;
                        default:
                                _stprintf(szTextOut, _T("Unknown state %ld"), pIfInfo->isState);
                                break;
                        }
                        //        m_ListWifi.InsertItem(0, szTextOut, 1 );
                        TRACE(_T("%s"), szTextOut);
                        _stprintf(szTextOut, _T(""));

                        dwResult = WlanGetAvailableNetworkList(hClient,
                                &pIfInfo->InterfaceGuid,
                                0,
                                NULL,
                                &pBssList);

                        if (dwResult != ERROR_SUCCESS)
                        {
                                _stprintf(szTextOut, _T("WlanGetAvailableNetworkList failed with error: %u"),
                                        dwResult);
                                dwRetVal = 1;
                                // You can use FormatMessage to find out why the function failed
                        }
                        else
                        {
                                _stprintf(szTextOut, _T("  Num Entries: %lu\n"), pBssList->dwNumberOfItems);
                                TRACE(_T("%s"), szTextOut);
                                for (j = 0; j < pBssList->dwNumberOfItems; j++)
                                {
                                        pBssEntry = (WLAN_AVAILABLE_NETWORK *) & pBssList->Network[j];

                                        _stprintf(szTextOut, _T("  Profile Name[%u]:  %ws"), j, pBssEntry->strProfileName);
                                        TRACE(_T("%s"), szTextOut);
                                        _stprintf(szTextOut, _T("  SSID[%u]:\t\t "), j);
                                        TRACE(_T("%s"), szTextOut);
                                        if (pBssEntry->dot11Ssid.uSSIDLength == 0)
                                                _stprintf(szTextOut, _T(""));
                                        else
                                        {
                                                for (k = 0; k < pBssEntry->dot11Ssid.uSSIDLength; k++)
                                                {
                                                        _stprintf(&szTextOut[k], _T("%c"), pBssEntry->dot11Ssid.ucSSID[k]);
                                                        //_tcsncpy(szTextOut, pBssEntry->dot11Ssid.ucSSID, pBssEntry->dot11Ssid.uSSIDLength);
                                                }
                                                TRACE(_T("%s"), szTextOut);
                                                m_list.InsertItem(j, szTextOut, 1 );
                                                if(pBssEntry->dwFlags==3)
                                                m_list.SetItemText(j,1,_T("<--->:3"));
                                                else
                                                {
                                                        TCHAR szBuf[100];
                                                        wsprintf(szBuf, _T("<-/->:%d"), i);
                                                        m_list.SetItemText(j,1,szBuf);
                                                }
                                               
                                        }

                                        _stprintf(szTextOut, _T("  BSS Network type[%u]:\t "), j);
                                        TRACE(_T("%s"), szTextOut);
                                        switch (pBssEntry->dot11BssType)
                                        {
                                        case dot11_BSS_type_infrastructure:
                                                _stprintf(szTextOut, _T("Infrastructure (%u)"), pBssEntry->dot11BssType);
                                                break;
                                        case dot11_BSS_type_independent:
                                                _stprintf(szTextOut, _T("Infrastructure (%u)"), pBssEntry->dot11BssType);
                                                break;
                                        default:
                                                _stprintf(szTextOut, _T("Other (%lu)"), pBssEntry->dot11BssType);
                                                break;
                                        }
                                        TRACE(_T("%s"), szTextOut);
                                        m_list.SetItemText(j, 5,szTextOut);
                                        _stprintf(szTextOut, _T("  Number of BSSIDs[%u]:\t %u"), j, pBssEntry->uNumberOfBssids);
                                        TRACE(_T("%s"), szTextOut);
                                        _stprintf(szTextOut, _T("  Connectable[%u]:\t "), j);
                                        TRACE(_T("%s"), szTextOut);
                                        if (pBssEntry->bNetworkConnectable)
                                                _stprintf(szTextOut, _T("Yes"));
                                        else
                                                _stprintf(szTextOut, _T("No"));
                                        TRACE(_T("%s"), szTextOut);
                                        memset(szTextOut, 0, 1024);
                                        _stprintf(szTextOut, _T("%u"), pBssEntry->wlanSignalQuality);
                                        //_stprintf(szTextOut, _T("%u")), pBssEntry->wlanSignalQuality);
                                        TRACE(_T("%s"), szTextOut);
                                        m_list.SetItemText(j, 2, szTextOut);
                                        _stprintf(szTextOut, _T("  Security Enabled[%u]:\t "), j);
                                        if (pBssEntry->bSecurityEnabled)
                                        {
                                                _stprintf(szTextOut, _T("Yes"));
                                                TRACE(_T("%s"), szTextOut);
                                        }
                                        else
                                        {
                                                _stprintf(szTextOut, _T("No"));
                                                TRACE(_T("%s"), szTextOut);
                                        }

                                        _stprintf(szTextOut, _T("  Default AuthAlgorithm[%u]: "), j);
                                        TRACE(_T("%s"), szTextOut);
                                        switch (pBssEntry->dot11DefaultAuthAlgorithm)
                                        {
                                        case DOT11_AUTH_ALGO_80211_OPEN:
                                                _stprintf(szTextOut, _T("802.11 Open (%u)"), pBssEntry->dot11DefaultAuthAlgorithm);
                                                break;
                                        case DOT11_AUTH_ALGO_80211_SHARED_KEY:
                                                _stprintf(szTextOut, _T("802.11 Shared (%u)"), pBssEntry->dot11DefaultAuthAlgorithm);
                                                break;
                                        case DOT11_AUTH_ALGO_WPA:
                                                _stprintf(szTextOut, _T("WPA (%u)"), pBssEntry->dot11DefaultAuthAlgorithm);
                                                break;
                                        case DOT11_AUTH_ALGO_WPA_PSK:
                                                _stprintf(szTextOut, _T("WPA-PSK (%u)"), pBssEntry->dot11DefaultAuthAlgorithm);
                                                break;
                                        case DOT11_AUTH_ALGO_WPA_NONE:
                                                _stprintf(szTextOut, _T("WPA-None (%u)"), pBssEntry->dot11DefaultAuthAlgorithm);
                                                break;
                                        case DOT11_AUTH_ALGO_RSNA:
                                                _stprintf(szTextOut, _T("RSNA (%u)"), pBssEntry->dot11DefaultAuthAlgorithm);
                                                break;
                                        case DOT11_AUTH_ALGO_RSNA_PSK:
                                                _stprintf(szTextOut, _T("RSNA with PSK(%u)"), pBssEntry->dot11DefaultAuthAlgorithm);
                                                break;
                                        default:
                                                _stprintf(szTextOut, _T("Other (%lu)"), pBssEntry->dot11DefaultAuthAlgorithm);
                                                break;
                                        }
                                        TRACE(_T("%s"), szTextOut);
                                        m_list.SetItemText(j, 3,szTextOut);
                                        _stprintf(szTextOut, _T("  Default CipherAlgorithm[%u]: "), j);
                                        TRACE(_T("%s"), szTextOut);
                                        switch (pBssEntry->dot11DefaultCipherAlgorithm) {
                                        case DOT11_CIPHER_ALGO_NONE:
                                                _stprintf(szTextOut, _T("None (0x%x)"), pBssEntry->dot11DefaultCipherAlgorithm);
                                                break;
                                        case DOT11_CIPHER_ALGO_WEP40:
                                                _stprintf(szTextOut, _T("WEP-40 (0x%x)"), pBssEntry->dot11DefaultCipherAlgorithm);
                                                break;
                                        case DOT11_CIPHER_ALGO_TKIP:
                                                _stprintf(szTextOut, _T("TKIP (0x%x)"), pBssEntry->dot11DefaultCipherAlgorithm);
                                                break;
                                        case DOT11_CIPHER_ALGO_CCMP:
                                                _stprintf(szTextOut, _T("CCMP (0x%x)"), pBssEntry->dot11DefaultCipherAlgorithm);
                                                break;
                                        case DOT11_CIPHER_ALGO_WEP104:
                                                _stprintf(szTextOut, _T("WEP-104 (0x%x)"), pBssEntry->dot11DefaultCipherAlgorithm);
                                                break;
                                        case DOT11_CIPHER_ALGO_WEP:
                                                _stprintf(szTextOut, _T("WEP (0x%x)"), pBssEntry->dot11DefaultCipherAlgorithm);
                                                break;
                                        default:
                                                _stprintf(szTextOut, _T("Other (0x%x)"), pBssEntry->dot11DefaultCipherAlgorithm);
                                                break;
                                        }
                                        TRACE(_T("%s"), szTextOut);
                                        m_list.SetItemText(j, 4,szTextOut);
                                        _stprintf(szTextOut, _T(""));
                                }
                        }
                }
        }
        if (pBssList != NULL) {
                WlanFreeMemory(pBssList);
                pBssList = NULL;
        }

        if (pIfList != NULL) {
                WlanFreeMemory(pIfList);
                pIfList = NULL;
        }

        if(hClient)
        {
                WlanCloseHandle(hClient,NULL);
                hClient = NULL;
        }

        m_list.SetColumnWidth(0, LVSCW_AUTOSIZE_USEHEADER);
        m_list.SetColumnWidth(1, LVSCW_AUTOSIZE_USEHEADER);
        m_list.SetColumnWidth(2, LVSCW_AUTOSIZE_USEHEADER);
        m_list.SetColumnWidth(3, LVSCW_AUTOSIZE_USEHEADER);
        m_list.SetColumnWidth(4, LVSCW_AUTOSIZE_USEHEADER);
        return dwRetVal;
}
上传的附件:
2016-9-13 14:05
0
游客
登录 | 注册 方可回帖
返回
//