Как найти сохранённые пароли WIFI сетей с помощью .bat файла
Есть код который ищет все профили, перебирает их, а потом для каждого ищет пароль.
@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 "Содержимое ключа :"`) do (
set wifi_pwd=%%F
)
echo %%a : !wifi_pwd!
)
pause
Но он срабатывает не во всех случаях из-за того, что во многих именах вайфай содержатся пробелы, поэтому когда этот профиль записывается в командную строку он не работает. Я пробовал изменить: (netsh wlan show profile name="%%a" ...) но оно вообще переставало показывать пароли.
А также, нужно чтобы после завершения поиска все данные записывались в txt файл, например wlan_passwords.txt
Ответы (1 шт):
Автор решения: Nikita
→ Ссылка
Проблема была в пробеле, который идет после двоеточия в выводе команды.
Вот доработанный код:
@echo off
chcp 1251 > nul
setlocal EnableExtensions, EnableDelayedExpansion
set nextStr=0
for /f "tokens=1,2 skip=2 delims=:" %%i in ('netsh wlan show profile') do (
if !nextStr!==2 (
set "name=%%j"
set "name=!name:~1!"
for /f "tokens=1,2 delims=:" %%k in ('netsh wlan show profile "!name!" key^=clear ^| find "Содержимое ключа"') do (
set "key=%%l"
set "key=!key:~1!"
echo !name! : !key! >> wlan_passwords.txt
)
)
if !nextStr!==1 set nextStr=2
if "%%i"=="Профили пользователей" set nextStr=1
)
endlocal
exit /b
Сохранять нужно обязательно в кодировке Windows-1251, иначе не сработает.