#python
#python
Вопрос:
Я хочу создать программу, которая декодирует пароли wifi. Я еще не закончил, но программа должна напечатать имена всех wifi. Но есть эта ошибка, и я не знаю, как ее исправить.
import subprocess
data = subprocess.check_output(["netsh", "wlan", "show", "profiles"]).decode("utf-8").split("n")
wifis = [line.split(":")(1)[1:-1] for line in data if "All User Profile" in line]
print (data)
Ошибка:
data = subprocess.check_output(["netsh", "wlan", "show", "profiles"]).decode("utf-8").split()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x81 in position 76: invalid start byte
Ответ №1:
netsh
это намек на то, что вы используете систему Windows. Консольные приложения часто используют кодировку cp850 для западноевропейских языков. Итак, вы могли бы попробовать :
data = subprocess.check_output(["netsh", "wlan", "show", "profiles"]).decode("cp850").split("n")
Или, чтобы быть в безопасности, вы можете использовать кодировку, способную принимать любой входной байт, например latin1, но она редко возвращает ожидаемые символы в Windows. Но НИКОГДА не используйте utf-8
, если входные данные не закодированы в формате utf-8.