C
Cobra91151Қыр. 21, 2019, 9:08 Т.Ж.

Ошибка 1168 при подключении к Enteprise сети WiFi

C++, windows-application, wlanapi, qt

Здравствуйте!

Я хочу подключатся к сетям WiFi Enterprise через свою программу. Настроил Radius Server, поключение к сети через Windows работает. Но при подключении через программу пишет: ошибка 1168 (ERROR_NOT_FOUND). Если быть точнее, то такую ошибку возращает функция: WlanSetProfileEapXmlUserData.
Разрабатываю эту программу на Qt 5.9.8 (Windows 10).

Пример кода:

QString xmlProfile = "<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>" + profileName + "</name><SSIDConfig><SSID>"
    "<name>" + apName + "</name></SSID><nonBroadcast>" + checkHiddenAP(hiddenAP) + "</nonBroadcast></SSIDConfig><connectionType>ESS</connectionType><connectionMode>" +
    checkAutoConnection(isAutoConnection) + "</connectionMode><MSM><security><authEncryption><authentication>" + checkAuthentication(authAlgorithm) + "</authentication><encryption>" +
    checkEncryption(encryption) + "</encryption><useOneX>true</useOneX></authEncryption><PMKCacheMode>enabled</PMKCacheMode><PMKCacheTTL>720</PMKCacheTTL><PMKCacheSize>128</PMKCacheSize>"
    "<preAuthMode>disabled</preAuthMode><OneX xmlns=\"http://www.microsoft.com/networking/OneX/v1\"><authMode>user</authMode><EAPConfig><EapHostConfig "
    "xmlns=\"http://www.microsoft.com/provisioning/EapHostConfig\"><EapMethod><Type xmlns=\"http://www.microsoft.com/provisioning/EapCommon\">25</Type><VendorId "
    "xmlns=\"http://www.microsoft.com/provisioning/EapCommon\">0</VendorId><VendorType xmlns=\"http://www.microsoft.com/provisioning/EapCommon\">0</VendorType>"
    "<AuthorId xmlns=\"http://www.microsoft.com/provisioning/EapCommon\">0</AuthorId></EapMethod>"
    "<Config xmlns=\"http://www.microsoft.com/provisioning/EapHostConfig\"><Eap xmlns=\"http://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1\"><Type>25</Type>"
    "<EapType xmlns=\"http://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV1\"><ServerValidation>"
    "<DisableUserPromptForServerValidation>false</DisableUserPromptForServerValidation><ServerNames></ServerNames></ServerValidation>"
    "<FastReconnect>true</FastReconnect><InnerEapOptional>false</InnerEapOptional><Eap xmlns=\"http://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1\"><Type>26</Type>"
    "<EapType xmlns=\"http://www.microsoft.com/provisioning/MsChapV2ConnectionPropertiesV1\"><UseWinLogonCredentials>false</UseWinLogonCredentials></EapType></Eap>"
    "<EnableQuarantineChecks>false</EnableQuarantineChecks><RequireCryptoBinding>false</RequireCryptoBinding><PeapExtensions><PerformServerValidation "
    "xmlns=\"http://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV2\">true</PerformServerValidation><AcceptServerName "
    "xmlns=\"http://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV2\">true</AcceptServerName><PeapExtensionsV2 "
    "xmlns=\"http://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV2\"><AllowPromptingWhenServerCANotFound "
    "xmlns=\"http://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV3\">true</AllowPromptingWhenServerCANotFound></PeapExtensionsV2></PeapExtensions></EapType></Eap></Config>"
    "</EapHostConfig></EAPConfig></OneX><EapHostUserCredentials xmlns=\"http://www.microsoft.com/provisioning/EapHostUserCredentials\" "
    "xmlns:eapCommon=\"http://www.microsoft.com/provisioning/EapCommon\" xmlns:baseEap=\"http://www.microsoft.com/provisioning/BaseEapMethodUserCredentials\"><EapMethod>"
    "<eapCommon:Type>25</eapCommon:Type><eapCommon:AuthorId>0</eapCommon:AuthorId></EapMethod><Credentials xmlns:eapUser=\"http://www.microsoft.com/provisioning/EapUserPropertiesV1\" "
    "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:baseEap=\"http://www.microsoft.com/provisioning/BaseEapUserPropertiesV1\" "
    "xmlns:MsPeap=\"http://www.microsoft.com/provisioning/MsPeapUserPropertiesV1\" xmlns:MsChapV2=\"http://www.microsoft.com/provisioning/MsChapV2UserPropertiesV1\"><baseEap:Eap>"
    "<baseEap:Type>25</baseEap:Type><MsPeap:EapType><MsPeap:RoutingIdentity>" + apName + "</MsPeap:RoutingIdentity><baseEap:Eap><baseEap:Type>26</baseEap:Type><MsChapV2:EapType>"
    "<MsChapV2:Username>" + username + "</MsChapV2:Username><MsChapV2:Password>" + password + "</MsChapV2:Password></MsChapV2:EapType></baseEap:Eap></MsPeap:EapType></baseEap:Eap>"
    "</Credentials></EapHostUserCredentials></security></MSM></WLANProfile>";

LPCWSTR wlanProfile = reinterpret_cast<LPCWSTR>(profileName.utf16()); // profileName - это название Точки Доступа которую получаю через параметр функции.

DWORD dwResult = WlanSetProfileEapXmlUserData(hClient, &adapterGUID, wlanProfile, WLAN_SET_EAPHOST_DATA_ALL_USERS, reinterpret_cast<LPCWSTR(xmlProfile).utf16()), nullptr);
qDebug() << dwResult;

Подключения к персональной сети работают, там использую WlanSetProfile функцию. Проблема только если подключатся к корпоративной сети. Я думаю что проблема с неверным XML профилем. На сайте Microsoft, есть много примеров профилей, к примеру: https://docs.microsoft.com/en-us/windows/win32/nativewifi/wpa2-enterprise-with-peap-mschapv2-profile-sample и https://docs.microsoft.com/en-us/windows/win32/eaphost/peap-ms-chapv2-user-properties Как думаете в чем может быть проблема? Или где можно узнать какой профиль нужен? Спасибо за помощь.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

4
Evgenii Legotckoi
  • Қыр. 27, 2019, 2:42 Т.Ж.

Единственное, что приходит на ум, так то, что конткатенация строк может что-то попортить. Лучше собирать строку с использованием arg()

QString finalString = QString("%1 %1").arg("first", "second");

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

    C
    • Қыр. 27, 2019, 4:10 Т.Ж.

    Хорошо. Я это проверю. Спасибо.

      C
      • Қыр. 29, 2019, 3:18 Т.Қ.
      • (өңделген)

      Здравствуйте!

      Я уже решил эту проблему:

      1. Установите профиль без учетных данных, используя WlanSetProfile (я использовал импортированный профиль из netsh с некоторыми изменениями)
      2. Затем установите ниже профиль xml с вашим именем пользователя и паролем WlanSetProfileEapXmlUserData:
      <?xml version="1.0" ?> 
       <EapHostUserCredentials xmlns="http://www.microsoft.com/provisioning/EapHostUserCredentials" 
         xmlns:eapCommon="http://www.microsoft.com/provisioning/EapCommon" 
         xmlns:baseEap="http://www.microsoft.com/provisioning/BaseEapMethodUserCredentials">
         <EapMethod>
           <eapCommon:Type>26</eapCommon:Type> 
           <eapCommon:AuthorId>0</eapCommon:AuthorId> 
         </EapMethod>
         <Credentials xmlns:eapUser="http://www.microsoft.com/provisioning/EapUserPropertiesV1" 
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
           xmlns:baseEap="http://www.microsoft.com/provisioning/BaseEapUserPropertiesV1" 
           xmlns:MsPeap="http://www.microsoft.com/provisioning/MsPeapUserPropertiesV1" 
           xmlns:MsChapV2="http://www.microsoft.com/provisioning/MsChapV2UserPropertiesV1">
           <baseEap:Eap>
             <baseEap:Type>26</baseEap:Type> 
             <MsChapV2:EapType>
               <MsChapV2:Username>test</MsChapV2:Username> 
               <MsChapV2:Password>test</MsChapV2:Password> 
             </MsChapV2:EapType>
           </baseEap:Eap>
         </Credentials>
       </EapHostUserCredentials>
      
      1. Затем используйте функцию WlanConnect и функцию callback вызова для проверки соединения.

      Это все хорошо, но я получаю еще одну проблему: 229377 («Операция была отменена.»)

      Это был код причины (reason code), который сообщает о коде ошибки 229377. Я думаю, что он вернул такой код, потому что я открыл Windows WiFi Manager из панели задач. Фактически NotificationCode возвращает код 8 (wlan_notification_acm_scan_fail), а затем 11 (wlan_notification_acm_connection_attempt_fail). Я все еще исследую эту проблему. Спасибо.

        C
        • Қаз. 1, 2019, 8:54 Т.Ж.
        • Жауап шешім ретінде белгіленді.

        Здравствуйте!

        Я исправил эту проблему. Проблема заключалась в том, что для PerformServerValidation было задано значение true, и в ОС отображалось диалоговое окно уведомлений для проверки сертификата в Windows, поэтому он вернул wlan_notification_acm_scan_fail «Операция прошла успешно».

        Установка значения параметра PerformServerValidation в значение false устранила проблему (функция WlanSetProfile).

        <PerformServerValidation xmlns=\"http: //www.microsoft.com/provisioning/MsPeapConnectionPropertiesV2\">false</PerformServerValidation>
        

        Также для функции WlanSetProfileEapXmlUserData я предоставил этот профиль:

        <?xml version="1.0" ?>
        <EapHostUserCredentials
        xmlns="http://www.microsoft.com/provisioning/EapHostUserCredentials"
        xmlns:eapCommon="http://www.microsoft.com/provisioning/EapCommon"
        xmlns:baseEap="http://www.microsoft.com/provisioning/BaseEapMethodUserCredentials">
        <EapMethod>
        <eapCommon:Type>25</eapCommon:Type>
        <eapCommon:AuthorId>0</eapCommon:AuthorId>
        </EapMethod>
        <Credentials
        xmlns:eapUser="http://www.microsoft.com/provisioning/EapUserPropertiesV1"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:baseEap="http://www.microsoft.com/provisioning/BaseEapUserPropertiesV1"
        xmlns:MsPeap="http://www.microsoft.com/provisioning/MsPeapUserPropertiesV1"
        xmlns:MsChapV2="http://www.microsoft.com/provisioning/MsChapV2UserPropertiesV1">
        <baseEap:Eap>
        <baseEap:Type>25</baseEap:Type>
        <MsPeap:EapType>
        <baseEap:Eap>
        <baseEap:Type>26</baseEap:Type>
        <MsChapV2:EapType>
        <MsChapV2:Username>username</MsChapV2:Username>
        <MsChapV2:Password>password</MsChapV2:Password>
        </MsChapV2:EapType>
        </baseEap:Eap>
        </MsPeap:EapType>
        </baseEap:Eap>
        </Credentials>
        </EapHostUserCredentials>
        

        Теперь программа успешно подключается к корпоративной сети. Проблема решена. Спасибо.

          Пікірлер

          Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
          Кіріңіз немесе Тіркеліңіз
          AD

          C++ - Тест 004. Указатели, Массивы и Циклы

          • Нәтиже:50ұпай,
          • Бағалау ұпайлары-4
          m
          • molni99
          • Қаз. 26, 2024, 1:37 Т.Ж.

          C++ - Тест 004. Указатели, Массивы и Циклы

          • Нәтиже:80ұпай,
          • Бағалау ұпайлары4
          m
          • molni99
          • Қаз. 26, 2024, 1:29 Т.Ж.

          C++ - Тест 004. Указатели, Массивы и Циклы

          • Нәтиже:20ұпай,
          • Бағалау ұпайлары-10
          Соңғы пікірлер
          ИМ
          Игорь МаксимовҚар. 22, 2024, 11:51 Т.Ж.
          Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
          Evgenii Legotckoi
          Evgenii LegotckoiҚаз. 31, 2024, 2:37 Т.Қ.
          Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
          A
          ALO1ZEҚаз. 19, 2024, 8:19 Т.Ж.
          Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
          ИМ
          Игорь МаксимовҚаз. 5, 2024, 7:51 Т.Ж.
          Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
          d
          dblas5Шілде 5, 2024, 11:02 Т.Ж.
          QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
          Енді форумда талқылаңыз
          m
          moogoҚар. 22, 2024, 7:17 Т.Ж.
          Mosquito Spray System Effective Mosquito Systems for Backyard | Eco-Friendly Misting Control Device & Repellent Spray - Moogo ; Upgrade your backyard with our mosquito-repellent device! Our misters conce…
          Evgenii Legotckoi
          Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
          добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
          t
          tonypeachey1Қар. 15, 2024, 6:04 Т.Ж.
          google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
          NSProject
          NSProjectМаусым 4, 2022, 3:49 Т.Ж.
          Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

          Бізді әлеуметтік желілерде бақылаңыз