Instant Wi‑Fi Audit: Export všech SSID i hesel z Group Policy do 30 sekund
„Kdo sakra zná heslo k Warehouse‑2G a proč to pořád visí v Group Policy?“ Když potřebuješ vyčistit Wi‑Fi nastavení nebo ověřit, že všichni používají WPA2‑Enterprise, sáhni po tomto PowerShell skriptu. Za půl minuty zjistíš, jaké SSID distribuují GPO, jaké PSK mají uživatelé v profilech, kde leží slabá šifra a kolik duplikátů klíčů koluje po firmních laptopech.
1 · Proč Wi‑Fi audit
- Bezpečnost. Staré PSK = bývalý zaměstnanec = otevřené dveře.
- Správa. Zjistíš, kolik SSID vlastně žije a kým jsou distribuovány.
- Compliance. PCI‑DSS, ISO 27001 vyžadují řízené klíče a evidence.
- UX. Méně SSID = rychlejší roaming, méně rušení.
2 · Odkud čteme data
- GPO Wireless Policies –
\\SYSVOL\...\MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.inf - WLAN profiles v systému –
netsh wlan show profile - Registry –
HKLM\SOFTWARE\Microsoft\Wlansvc\Interfaces
3 · Skript Get‑WifiAudit.ps1
param(
[string]$OutPath = "C:\WifiAudit",
[switch]$DecryptPSK,
[switch]$ReportOnly
)
function Get‑LocalProfiles {
netsh wlan show profile | Select‑String 'All User Profile' | ForEach‑Object {
($_ -split ':')[1].Trim()
} | ForEach‑Object {
$xml = netsh wlan show profile name="$_" key=clear
$ssid = $_
$psk = ($xml | Select‑String 'Key Content').Line.Split(':')[1].Trim()
[pscustomobject]@{Source='Local';SSID=$ssid;PSK=$psk}
}
}
function Get‑GpoProfiles {
Get‑GPO -All | ForEach‑Object {
$path="\\$env:USERDNSDOMAIN\SYSVOL\$env:USERDNSDOMAIN\Policies\{$($_.Id)}\MACHINE\Microsoft\Wifi\"
if(Test‑Path $path){
Get‑ChildItem $path -Filter *.xml | ForEach‑Object {
[xml]$x = Get‑Content $_.FullName
[pscustomobject]@{
Source = "GPO-$($_.BaseName)"
SSID = $x.WLANProfile.SSIDConfig.SSID.name
PSK = if($DecryptPSK){$x.WLANProfile.MSM.Security.sharedKey.keyMaterial}else{'***'}
}
}
}
}
}
$profiles = Get‑GpoProfiles + Get‑LocalProfiles
$profiles | Export‑Csv "$OutPath\wifi_$((Get-Date).ToString('yyyyMMdd_HHmm')).csv" -NoTypeInformation
Parametr -DecryptPSK vyžaduje lokální práva a zobrazí klíč (dbejte na GDPR).
4 · HTML report + CSV pro SIEM
Import-Module PSWriteHTML
New‑HTML -FilePath "$OutPath\wifi_report.html" -Title "Wi‑Fi Audit" {
New‑HTMLTable -DataTable $profiles
} -Show:$false
CSV putuje do ELK Splunk index=wifi_audit.
5 · Analytika
- Duplicitní PSK:
$profiles | Group PSK | Where { $_.Count -gt 1 } - Slabé šifry: v GPO XML hledej
authenticationMode="open"nebowep". - Age klíčů: z file timestampu GPO nebo
netsh wlan show profileLastModified.
6 · Rychlá náprava – úprava GPO skriptem
function Update‑GpoPsk($GpoName,$Ssid,$NewPsk){
$gpo = Get‑GPO -Name $GpoName
$xmlPath = "\\$env:USERDNSDOMAIN\SYSVOL\$env:USERDNSDOMAIN\Policies\{$($gpo.Id)}\MACHINE\Microsoft\Wifi\profile.xml"
[xml]$xml = Get‑Content $xmlPath
$xml.WLANProfile.MSM.Security.sharedKey.keyMaterial = $NewPsk
$xml.Save($xmlPath)
Invoke‑GpUpdate -Target Computer
}
7 · Automatizuj a spouštěj měsíčně
$act = New‑ScheduledTaskAction -Execute 'pwsh' `
-Argument '-File C:\Scripts\Get‑WifiAudit.ps1 -DecryptPSK'
$trg = New‑ScheduledTaskTrigger -Monthly -DaysOfMonth 1 -At 04:00
Register‑ScheduledTask -TaskName 'WifiAudit' -Action $act -Trigger $trg -RunLevel Highest
8 · Bezpečnost: dešifrování PSK a GDPR
- Dešifrované PSK uchovávej max 24 h v NTFS složce s ACL Admins only.
- HTML report bez hesel (maskuj
PSKslovem ***). - Audit event ID 8003 (WLAN profile) forward do SIEM.
9 · Case study: 22 SSID → 6, PSK stáří –80 %
| Metrika | Před audit | Po úklidu | Zlepšení |
|---|---|---|---|
| Počet SSID v GPO | 22 | 6 | ‑73 % |
| Klíče starší 2 let | 15 | 3 | ‑80 % |
| Slabá šifra (WEP) | 2 | 0 | ‑100 % |
10 · FAQ
- Zobrazí skript Wi‑Fi profily z Intune?
- Intune profily nejsou v GPO, ale
Get‑IntuneWiFiConfigurationpřes Graph API. - Lze klíče rovnou zašifrovat jako WPA‑Enterprise?
- Pro WPA‑EAP není PSK, ale certifikáty/NPS. Audit script označí SSID bez EAP.
- Funguje na Windows 11?
- Ano, netsh a registry cesty zůstaly. Pro ARM/Surface stačí správný PS.
11 · Závěr
Wi‑Fi profily v doméně žijí vlastním životem. S PowerShellem je zkrotíš za 30 sekund – zjistíš, co kde visí, jaké klíče jsou staré a kde číhá WEP dinosaurus. Následný úklid GPO je pak otázkou pár řádků XML. Instantní audit = klidný spánek admina.
Klíčová slova
wifi audit, powershell wlan, group policy wireless, export ssid, pre‑shared key decrypt, wlan profile xml, security compliance, gpo wireless settings, wifi governance




