Je remercie ce site (allemand) conscient de la commande batch
netsh wlan show profile <Name> key=clear
pour afficher les noms de tous les réseaux WiFi sécurisés comme ceci:
... Benutzerprofile --------------- Profil fr alle Benutzer : <wifi network name 1> Profil fr alle Benutzer : <wifi network name 2> ...
Après cela, on peut utiliser p>
netsh wlan show profile
où
représente le nom du réseau respectif obtenu par exemple ci-dessus.
Est-il possible de combiner automatiquement les deux?
3 Réponses :
Pour le pour un peu ci-dessous et la partie : Trim
( merci à 1 ou 2 ), une expansion différée est nécessaire pour que les variables de ce fichier de commandes soient développées au moment de l'exécution plutôt qu'à temps d'analyse. Utilisation: les variables délimitées par des points d'exclamation (!) Sont évaluées à l'exécution.
Cela garantira le bon comportement dans ce cas.
echo | set / p = "test text"
donne un texte sans nouvelle ligne ( merci ).
for / F" tokens = 2 delims =: "%% i in (SavedNetworks.temp) do (...) vous donne le deuxième jeton de chaque ligne, séparé par un
:
( source ).
SetLocal EnableDelayedExpansion @echo|set /p="Lese die existierenden Netzwerke ein:" netsh wlan show profile > SavedNetworks.temp @echo|set /p="Verarbeite die eingelesenen Netzwerke (1):" @echo off for /F "tokens=2 delims=:" %%i in (SavedNetworks.temp) do ( call :Trim Actual %%i netsh wlan show profile "!Actual!" key=clear >> SavedNetworks2.temp ) @echo on move SavedNetworks2.temp SavedNetworks.temp @echo|set /p="Verarbeite die eingelesenen Netzwerke (2):" findstr "SSID-Name Sicherheitsschlssel Schlsselinhalt" SavedNetworks.temp >> SavedNetworks.txt ::notepad SavedNetworks.temp del SavedNetworks.temp notepad SavedNetworks.txt ::pause exit /b :Trim ::Line below already at the top. ::SetLocal EnableDelayedExpansion set Params=%* for /f "tokens=1*" %%a in ("!Params!") do EndLocal & set %1=%%b exit /b
Malheureusement, ce script ne fonctionne pas pour toutes les langues, à savoir ici: findstr "SSID-Name Sicherheitsschlssel Schlsselinhalt" SavedNetworks.temp >> SavedNetworks.txt
(trouvé ici , la commande et la sortie sont en version allemande). Pour trouver les bons mots pour votre langue, décommentez :: notepad SavedNetworks.temp
et placez un ::
devant la ligne suivante. Exécutez-le et remplacez correctement "SSID-Name Sicherheitsschlssel Schlsselinhalt"
.
Il manque tous les SSID avec un point d'exclamation! C'est tout le WiFi de FRITZ! Box ...
Voici comment je l'ai écrit:
C:\>ShowWiFi Fiber5G : SomePassword Courtyard_GUEST : redroof : Axon : Password2 Taco Bell WiFi : abelenkWiFi : January SPS Internal : C:\>
@echo off setlocal enabledelayedexpansion for /F "tokens=2 delims=:" %%a in ('netsh wlan show profile') do ( set wifi_pwd= for /F "tokens=2 delims=: usebackq" %%F IN (`netsh wlan show profile %%a key^=clear ^| find "Key Content"`) do ( set wifi_pwd=%%F ) echo %%a : !wifi_pwd! )
Ceci n'a pas montré tous les mots de passe pour une raison quelconque, mais en a montré plusieurs.
Cela échoue pour les SSID avec des espaces, comme le montre votre propre exemple pour Taco Bell WiFi
. Vous devez utiliser nestsh wlan show profile name = "%% a" key = clear
. Il échoue toujours pour les SSID avec des points d'exclamation
@jeb Merci pour la modification, mon fichu clavier met toujours en majuscule stand alone I :)
Fonctionne pour tous mes Wifi avec des noms étranges, mais ce n'est pas indépendant de la langue. Le premier FIND
peut être changé en findstr ":"
, qui devrait fonctionner avec la plupart des langues. Seul le second semble être un peu délicat
@jeb ouais vrai, laissez-moi penser à des moyens indépendants de la langue
Votre appel: getpwd %% ssid: ~ 1 %%
semble être risqué pour du contenu comme &|<>
et ainsi de suite. Et il semble être autorisé dans les noms SSID ! Heureusement, je n'ai pas de tels noms, jusqu'à présent
@jeb a fait le changement pour les caractères spéciaux possibles. Passera un peu de temps plus tard pour rendre cette langue indépendante.
Essayez ce lot testé sur des machines françaises Wifi Passwords Recovery.bat