Native wifi setprofile and connecting c++

154
24 октября 2019, 07:50

Мой профиль ( через команду netsh wlan show networks) имеет вот такую кофигурацию:

SSID 1 : UKrtelecom_5E6B80
    Network type            : Infrastructure
    Authentication          : WPA2-Personal
    Encryption              : CCMP

Я пробо вал засетить профиль з разными кофигурациями authentication & encryption ({WPA2PSK, AES}, {WPA2-Personal CCMP}…)

Кусок кода:

void connect_to_rsnapsk(HANDLE wlanClient, WLAN_AVAILABLE_NETWORK & entry, PWLAN_INTERFACE_INFO wlan_interface) {
    const std::string authentication = "WPA2PSK";
    auto profile_xml = get_profile_xml(static_cast<std::string>(reinterpret_cast<char*>(entry.dot11Ssid.ucSSID)), authentication, "CCMP", "pass");//на самом деле тут мой пароль
    //TODO see profile template for appropriate type, reason code return "bad profile"
    DWORD reasonCode;
    const int set_profile_result = WlanSetProfile(wlanClient, &wlan_interface->InterfaceGuid, 0, reinterpret_cast<LPCWSTR>(profile_xml.c_str()), nullptr, true, nullptr, &reasonCode);
    wrap_set_profile_result(set_profile_result, reasonCode);
}

Имея вот такой профиль:

<?xml version="1.0"?>
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1">
    <name>UKrtelecom_5E6B80</name>
    <SSIDConfig>
        <SSID>
            <name>UKrtelecom_5E6B80</name>
        </SSID>
    </SSIDConfig>
    <connectionType>ESS</connectionType>
    <connectionMode>auto</connectionMode>
    <autoSwitch>false</autoSwitch>
    <MSM>
        <security>
            <authEncryption>
                <authentication>WPA2PSK</authentication>
                <encryption>CCMP</encryption>
                <useOneX>false</useOneX>
            </authEncryption>
            <sharedKey>
                <keyType>passPhrase</keyType>
                <protected>false</protected>
                <keyMaterial><myPass></keyMaterial>
            </sharedKey>
        </security>
    </MSM>
</WLANProfile>

Возвращается такой ризон код: WLAN_REASON_CODE_INVALID_PROFILE_SCHEMA.

Я также пробывал конектится через либу NativeWifi в шарпе. Сделал профиль:

<?xml version="1.0"?>
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1">
    <name>UKrtelecom_5E6B80</name>
    <SSIDConfig>
        <SSID>
            <name>UKrtelecom_5E6B80</name>
        </SSID>
    </SSIDConfig>
    <connectionType>ESS</connectionType>
    <connectionMode>manual</connectionMode>
    <MSM>
        <security>
            <authEncryption>
                <authentication>WPA2PSK</authentication>
                <encryption>CCMP</encryption>
                <useOneX>false</useOneX>
            </authEncryption>
            <sharedKey>
                <keyType>passPhrase</keyType>
                <protected>false</protected>
                <keyMaterial><myPass></keyMaterial>
            </sharedKey>
        </security>
    </MSM>
</WLANProfile>

И попробывал за set'ить этот профиль wlanIface.SetProfile(Wlan.WlanProfileFlags.AllUser, profileXml, true); Выкидывает exception «Конфигурация подключения к сети повреждена».

Если что алгоритм авторизации у меня : DOT11_AUTH_ALGO_RSNA_PSK

Что я делаю не так, и как мне за connect'тится через профиль, хотя бы объясните как его set’ить?

READ ALSO
Тип собираемых библиотек по умолчанию

Тип собираемых библиотек по умолчанию

По умолчанию у меня собираются статические библиотеки (если явно не указываю SHARED при создании библиотеки или BUILD_SHARED_LIBS при запуске cmake), а как...

131
C++ и русские символы

C++ и русские символы

Предположим имеется следующий код, почему если его выполнить, и ввести, например ваыёё, то программа завершится, будто бы, пропустив оставшиеся...

144
Проблема с передачей матрицы в функцию

Проблема с передачей матрицы в функцию

В интернет искал ответ на свой вопрос, но не один из способов не работал

101
Как создать дочерний процесс который не зависит от родителя, то есть не умирает при родителе с++

Как создать дочерний процесс который не зависит от родителя, то есть не умирает при родителе с++

У меня есть одна консоль и надо сделать так чтоб мой код создал отдельные процессы и когда его родителя закроют, то дети продолжали работать

111