Расшифровать ключ профиля WEP WLAN с помощью CryptUnprotectData

Я пытаюсь расшифровать ключ профиля WEP, используя CryptUnprotectData. Я получил ключ профиля, экспортировав профиль с помощью netsh.

netsh wlan export profile name="MyWEP" folder="./"

На данный момент я вручную скопировал ключевой материал из файла .xml, сгенерированного командой netsh, в свою программу. И способ, который я расшифровываю, таков:

DATA_BLOB DataOut, DataVerify;
DataOut.cbData = encryptData.length();
DataOut.pbData = (BYTE*)("I_Manually_Copy_The_WEP_Key_Here");

if (CryptUnprotectData( &DataOut,
                        NULL,
                        NULL,
                        NULL,
                        NULL,
                        0,
                        &DataVerify))
{
    printf("The decrypted data is: %s\n", DataVerify.pbData);
}
else
{
    printf("Failed. Error Code: %d", GetLastError());
}

Но я получаю код ошибки 13со ссылкой на неверные данные. Что я делаю неправильно ? В Win 7 и более поздних версиях я могу напрямую использовать WlanGetProfileс параметром WLAN_PROFILE_GET_PLAINTEXT_KEY.Но у меня НЕТ варианта на Vista, чем использовать функцию CryptUnprotectData. Я видел похожие сообщения здесь, здесь, но не получил много полезной информации. Кроме того, я использую ту же систему с теми же учетными данными пользователя. Может ли кто-нибудь предложить мне, как действовать?

PS: я задавал тот же вопрос на форумах Windows Desktop SDK, но пока не получил ответа. Пытаю удачу на SO.

7
задан Mahesh 26 May 2012 в 11:36
поделиться