web-dev-qa-db-ja.com

PowerShellを使用した802.1xPEAP資格情報ワイヤレスWi-Fiの構成

テスト目的でWi-Fi接続を自動化しようとしています。 PowerShellでnetshコマンドを使用して、xmlファイルを生成し、任意のパーソナルWi-Fiに接続できます。

しかし、エンタープライズ(802.1X)で問題が発生します。初期設定でxmlファイルを生成できます。ただし、ユーザー名とパスワードは保存されません。 HKCU\Software\Microsoft\Wlansvc\UserData\Profiles {GUID}に保存および暗号化されていることがわかりました。どうやら、CryptProtectDataを使用して暗号化されているようです。

802.1Xを使用して現在のユーザーに接続されている1つのSSIDからキーをアップロードし、それを復号化して、暗号化する必要のある文字列を特定しようとしています。これまでのスクリプトは次のとおりです。

Add-Type -AssemblyName System.Security

$HEXA ='01 00 00 00 d0 8c 9d df 01 15 d1 11 8c 7a 00 c0 4f c2 97 eb 01 00 00 
00 a8 55 8d b0 1a c5 48 4e 8e 35 ff...'

##hexa to byte
$HEXA_array= $HEXA.split(" ")
$bytes_object = $HEXA_array | FOREACH {[BYTE][CHAR]
([CONVERT]::toint16($_,16))}

##Create an array of Byte
$i=0
foreach ($element in $bytes_object){$i++}
$Byte_Array = New-Object Byte[] $i

#system.object to system.byte
$i=0
foreach ($element in $bytes_object)
{
$Byte_Array[$i]=$element
$i++
}

write-Host "Type of Byte_Array: " $Byte_Array.getType().FullName #

#decrypt
$bytes2 = [System.Security.Cryptography.ProtectedData]::Unprotect(
    $Byte_Array, 
    $null, 
    [System.Security.Cryptography.DataProtectionScope]::CurrentUser)

しかし、私は以下のエラーを受け取ります:「3」引数で「Unprotect」を呼び出す例外:「パラメータが正しくありません」

[〜#〜] edit [〜#〜]:ローカルシステムユーザーでスクリプトを起動すると、エラーは表示されません。ユーザー名は表示されますが、その後に判読できない文字が続きます。エントロピーが$ null(2番目のパラメーター)に設定されており、問題が発生する可能性があるかどうか疑問に思っています

ありがとうございました、

1
NicolasL

WPA-Enterpriseのユーザー/パスワードは、2人のユーザーを使用して暗号化されます。最初に、ローカルシステムを使用して文字列全体を復号化しました。次に、現在のユーザーを使用して再度復号化します。どちらの場合も、エントロピーは$ Nullに設定されます。 3番目のパラメーターは、システムOSによって異なります。

1
NicolasL

WPA2-MSMUserDataのエンタープライズ資格情報暗号化スキームの詳細については、「ワイヤレスの保護されたEAP資格情報を見つける方法を教えてください」に対する私の回答 https://superuser.com/a/1259271/7805 を参照してください。 Windows 7に保存されているネットワーク?」質問。特に、復号化されたMSMUserDataのユーザー名に続く「読み取り不可能な文字」(01 00 00 00 d0 8c 9d df ...で始まることに注意)は暗号化されたパスワードであるため、CryptProtectDataを使用して再度復号化する必要があります。