Comment remplacer le mot de passe WiFi sur des ordinateurs Windows par GPO
- Mise à jour le 01 déc. 2024
De nos jours il est fréquent que les entreprises utilisent le WiFi pour connecter les utilisateurs au réseau de l'entreprise. Les protocoles de protection comme WPA2 et plus récemment WPA3 offrent aujourd'hui une sécurité plutôt correcte mais que faire si le mot de passe venait à être compromis ou si l'on souhaite tout simplement le renouveler de temps en temps? Cela peut vite devenir un casse tête, encore plus lorsque l'on doit gérer un parc de plusieurs centaines de machines.
Il n'y a, à ma connaissance, pas d'outil natif dans les GPO pour gérer cela. Nous allons donc devoir ruser. En effet nous allons voir ici comment changer le code WiFi associé à un SSID en utilisant un script batch. Ce script sera exécuté au démarrage de la machine (et géré par GPO).
- Ce que nous allons faire :
- Préparation :
- Créer un nouvel SSID avec un nouveau mot de passe
- Connecter un ordinateur à ce nouvel SSID et extraire la configuration WiFi dans un fichier xml
- Créer un script qui sera exécuté au démarrage par une GPO, ce dernier :
- Connectera l'ordinateur sur le nouvel SSID avec le nouveau mot de passe
- Supprimera l'ancien SSID avec l'ancien mot de passe
- Une fois tous les utilisateurs migré sur le nouvel SSID et avec le nouveau mot de passe, l'ancien SSID pourra être supprimé.
- Préparation :
Les commandes pour gérer le WiFi en ligne de commande
Dans le but de correctement comprendre le script, il peut être utile de parcourir rapidement les principales commandes de gestion du WiFi dans Windows.
- Lister les commandes WiFi :
C:\WINDOWS\system32>netsh wlan
The following commands are available:
Commands in this context:
? - Displays a list of commands.
add - Adds a configuration entry to a table.
connect - Connects to a wireless network.
delete - Deletes a configuration entry from a table.
disconnect - Disconnects from a wireless network.
dump - Displays a configuration script.
export - Saves WLAN profiles to XML files.
help - Displays a list of commands.
IHV - Commands for IHV logging.
refresh - Refresh hosted network settings.
reportissues - Generate WLAN smart trace report.
set - Sets configuration information.
show - Displays information.
start - Start hosted network.
stop - Stop hosted network.
To view help for a command, type the command, followed by a space, and then type ?.
- Afficher les informations complètes de tous les périphériques et réseaux wifi :
C:\WINDOWS\system32>netsh wlan show all
- Afficher les profils Wi-Fi :
C:\WINDOWS\system32>netsh wlan show profiles
Profiles on interface Wi-Fi:
Group policy profiles (read only)
---------------------------------
<None>
User profiles
-------------
All User Profile : FFBOXE
All User Profile : STD_ROCKS
- Afficher le profil STD_ROCKS :
C:\WINDOWS\system32>netsh wlan show profiles "STD_ROCKS"
Profile STD_ROCKS on interface Wi-Fi:
=======================================================================
Applied: All User Profile
Profile information
-------------------
Version : 1
Type : Wireless LAN
Name : STD_ROCKS
Control options :
Connection mode : Connect automatically
Network broadcast : Connect only if this network is broadcasting
AutoSwitch : Do not switch to other networks
MAC Randomization : Disabled
Connectivity settings
---------------------
Number of SSIDs : 1
SSID name : "STD_ROCKS"
Network type : Infrastructure
Radio type : [ Any Radio Type ]
Vendor extension : Not present
Security settings
-----------------
Authentication : WPA2-Personal
Cipher : CCMP
Authentication : WPA2-Personal
Cipher : GCMP
Security key : Present
Cost settings
-------------
Cost : Unrestricted
Congested : No
Approaching Data Limit : No
Over Data Limit : No
Roaming : No
Cost Source : Default
- Exporter le profil WiFi dans
c:\Users\user\Desktop\Wi-Fi-STD_ROCKS.xml
:
C:\WINDOWS\system32>netsh wlan Export Profile Name="STD_ROCKS" key=clear folder=c:\Users\user\Desktop\
- Importer le profil WiFi pour tous les utilisateurs depuis le fichier
c:\Users\user\Desktop\STD_ROCKS.xml
:
C:\WINDOWS\system32>netsh add profile filename="c:\Users\user\Desktop\STD_ROCKS.xml" user=all
- Définir l'ordre de préférence du réseau STD_ROCKS à la priorité la plus élevé :
C:\WINDOWS\system32>netsh wlan set profileorder name="STD_ROCKS" interface="Wi-Fi" priority=1
- Supprimer le profil Wi-Fi STD_ROCKS :
C:\WINDOWS\system32>netsh wlan delete profile name="STD_ROCKS" interface="Wi-Fi"
Création d'un nouveau SSID
Afin d'éviter que les utilisateurs subissent des coupures de connexion nous allons faire cohabiter le temps de la migration deux SSID. L'ancien («STD_ROCKS_OLD» dans le diagramme ci-dessous) avec le mot de passe que l'on souhaite modifier et le nouveau («STD_ROCKS_NEW» dans le diagramme ci-dessous) avec le nouveau mot de passe. Une fois que tous les utilisateurs auront migré vers le nouveau réseau, l'ancien pourra être supprimé.

Exporter le profil Wi-Fi vers un fichier xml
- Se connecter manuellement sur le nouveau Wi-Fi («STD_ROCKS_NEW» dans le diagramme ci-dessus) depuis un ordinateur Windows.

- Une fois connecté, exporter le profil Wi-Fi vers un fichier xml :
C:\WINDOWS\system32>netsh wlan Export Profile Name="STD_ROCKS_NEW" key=clear folder=c:\Users\user\Desktop\
- Le fichier xml devrait apparaitre sur le Bureau :

- Ouvrir le fichier xml et vérifier les informations suivantes :
- Réseau Wi-Fi : STD_ROCKS_NEW (ici)
- Mot de passe : P@WD2000 (ici)
<?xml version="1.0"?>
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1">
<name>STD_ROCKS_NEW</name>
<SSIDConfig>
<SSID>
<hex>535444524F434B5342414259</hex>
<name>STD_ROCKS_NEW</name>
</SSID>
</SSIDConfig>
<connectionType>ESS</connectionType>
<connectionMode>auto</connectionMode>
<MSM>
<security>
<authEncryption>
<authentication>WPA2PSK</authentication>
<encryption>AES</encryption>
<useOneX>false</useOneX>
</authEncryption>
<sharedKey>
<keyType>passPhrase</keyType>
<protected>false</protected>
<keyMaterial>P@WD2000</keyMaterial>
</sharedKey>
</security>
</MSM>
<MacRandomization xmlns="http://www.microsoft.com/networking/WLAN/profile/v3">
<enableRandomization>false</enableRandomization>
<randomizationSeed>1592637002</randomizationSeed>
</MacRandomization>
</WLANProfile>
Script Batch
- Ce que le script fait :
- Créer un fichier
C:\WirelessSet.txt
lors de la première exécution, supprimer l'ancien profil (STD_ROCKS_OLD) si le fichier existe (car cela veut dire que le script a déjà été exécuté au moins une fois) - Ajouter un nouveau profil WiFi
- Définir le nouveau profil comme profil par défaut
- Créer un fichier
- Créer le fichier
wifi.bat
:
REM Remove REM if you want to reset GPO :
REM DEL C:\WirelessSet.txt
REM If the file C:\WirelessSet.txt exists, it means the script has already been executed once, so jump to _END switch
IF EXIST C:\WirelessSet.txt GOTO _END
REM Otherwise add wireless profile from STD_ROCKS_NEW.xml file
netsh wlan add profile filename="\\std.local\netlogon\Wi-Fi-STD_ROCKS_NEW.xml" user=all >> C:\WirelessSet.txt
REM Set new profile (STD_ROCKS_NEW) with best priority
netsh wlan set profileorder name="STD_ROCKS_NEW" interface="Wi-Fi" priority=1
REM exit script
GOTO :EOF
REM _END SWITCH
:_END
REM Delete old (STD_ROCKS_OLD) wireless profile
netsh wlan delete profile name="STD_ROCKS_OLD" interface="Wi-Fi"
- Puis depuis un serveur Active Directory, copier les fichiers xml et
wifi.bat
dansC:\Windows\SYSVOL\sysvol\YOUR_DOMAIN\scripts
:

Création d'une GPO
Nous pouvons maintenant créer une GPO qui exécutera le script lorsque les ordinateurs démarreront.
- Ouvrir la console de gestion Group Policy Manager :

- Créer une nouvelle GPO et la lier dans l'OU où se trouvent les objets ordinateurs :

- Donner un nom à la GPO :

- Éditer la GPO :

- Aller dans Configuration ordinateur > Stratégies > Paramètres Windows > Scripts (Démarrage/Arrêt). Faire un clic droit sur Démarrage > Propriétés

- Cliquer sur Ajouter… et Parcourir pour sélectionner le script :

- Une fois que les ordinateurs auront redémarré ils se connecteront automatiquement sur le nouveau SSID, l'ancien pourra être supprimé :
