Как получить список всех устройств, подключенных к WiFi — Python — Ответ 14665410
Сообщение от Hyppoprogramm 
ip = response.text;
Ха-ха, а теперь прочитайте про серые адреса. IP и маску нужно брать из настроек сетевого интерфейса.
Добавлено через 5 минут
https://scapy.net/ — правда требует админа для некоторых вещей.
Добавлено через 39 секунд
1 2 3 4 5 6 7
for ip in range(0, 256): packet = IP(dst="192.168.0." + str(ip), ttl=20)/ICMP() reply = sr1(packet, timeout=TIMEOUT) if not (reply is None): print reply.dst, "is online" else: print "Timeout waiting for %s" % packet[IP].dst
Добавлено через 39 секунд
ans, unans = sr(IP(dst="192.169.0.1-255")/ICMP(), timeout=2)
Как узнать SSID подключённого WI-FI с помощью Python?
Нужно узнать SSID WIFI, к которому подключён компьютер и сделать это на языке Python. Пробовал с помощью subprocess.check_output() :
import subprocess Interfaces = str(subprocess.check_output('netsh wlan show interfaces')) print(Interfaces)
И при выводе получается строка, в которой и содержится SSID, то есть выходит строка с определёнными данными о подключении, и в этой строке есть пункт: «SSID: «Сам SSID»\r\n» . Исходя из этого, SSID можно получить, просто «выловив» от туда этот пункт, но есть несколько нюансов и трудностей, что делает этот способ не практичным. Если кто-нибудь знает методы лучше — будьте добры поделитесь опытом. Если не знаете — помогите со способом, указанном выше. Заранее спасибо.
Как извлечь сохраненные пароли WiFi в Python

Как вы, возможно, уже знаете, Wi-Fi એ используется в разных местах для подключения к нескольким сетям, и на вашем компьютере определенно есть способ где-то хранить пароль Wi‑Fi, поэтому при следующем подключении вам не приходится повторно вводить его снова.
Здесь вы узнаете, как быстро создать скрипт Python для извлечения сохраненного пароля Wi‑Fi на компьютерах с Windows или Linux.
Нам не потребуется установка какой-либо сторонней библиотеки, так как мы будем использовать netsh в Windows и анализ папки NetworkManager в Linux. Импорт библиотек:
import subprocess import os import re from collections import namedtuple import configparser
Получение паролей Wi‑Fi в Windows
В Windows, чтобы получить все имена Wi‑Fi (ssids), используем команду ОС netsh wlan show profiles, функция ниже использует subprocess() для вызова этой команды и анализирует результат её выполнения в Python:
def get_windows_saved_ssids(): """Возвращает список сохраненных SSID на машине Windows с помощью команды netsh""" # получить все сохраненные профили на ПК output = subprocess.check_output("netsh wlan show profiles").decode() ssids = [] profiles = re.findall(r"Весь профиль пользователя\s(.*)", output) for profile in profiles: # для каждого SSID удалите пробелы и двоеточие ssid = profile.strip().strip(":").strip() # добавить в список ssids.append(ssid) return ssids
Используем регулярные выражения для поиска сетевых профилей. Затем можно использовать show profile [ssid] key = clear для получения пароли сети:
def get_windows_saved_wifi_passwords(verbose=1): """Извлекает сохраненные пароли Wi‑Fi на машине Windows, эта функция извлекает данные с помощью netsh команды в Windows Аргументы: verbose (int, optional): whether to print saved profiles real-time. Defaults to 1. Результат: [list]: list of extracted profiles, a profile has the fields ["ssid", "ciphers", "key"] """ ssids = get_windows_saved_ssids() Profile = namedtuple("Profile", ["ssid", "ciphers", "key"]) profiles = [] for ssid in ssids: ssid_details = subprocess.check_output(f"""netsh wlan show profile "" key=clear""").decode() # получить шифры ciphers = re.findall(r"Cipher\s(.*)", ssid_details) # очистить пробелы и двоеточие ciphers = "/".join([c.strip().strip(":").strip() for c in ciphers]) # получить пароль Wi‑Fi key = re.findall(r"Key Content\s(.*)", ssid_details) # очистить пробелы и двоеточие try: key = key[0].strip().strip(":").strip() except IndexError: key = "None" profile = Profile(ssid=ssid, ciphers=ciphers, key=key) if verbose >= 1: print_windows_profile(profile) profiles.append(profile) return profiles def print_windows_profile(profile): """Печать одного профиля в Windows""" print(f"")
Сначала вызываем наш get_windows_saved_ssids() , чтобы получить все SSID, к которым мы подключались ранее, затем инициализируем наш namedtuple , чтобы включить ssid , ciphers и key . Вызываем show profile [ssid] key=clear для каждого извлеченного SSID и анализируем шифры и ключ (пароль), распечатываем его с помощью простой функции print_windows_profile() .
Сейчас запишем эту функцию:
def print_windows_profiles(verbose): """Печатает все извлеченные SSID вместе с ключом в Windows""" print("SSID CIPHER(S) KEY") print("-"*50) get_windows_saved_wifi_passwords(verbose)
Итак, print_windows_profiles() печатает все SSID вместе с шифром и ключом (паролем).
Получение паролей Wi‑Fi в Linux
В Linux все по-другому, информация о всех ранее подключенных сетях находится в каталоге /etc/NetworkManager/system-connections/ в виде файлов INI, нам просто нужно прочитать эти файлы и распечатать их в удобном формате:
def get_linux_saved_wifi_passwords(verbose=1): """Извлекает сохраненные пароли Wi‑Fi на машине Linux, эта функция извлекает данные в каталоге `/etc/NetworkManager/system-connections/` Аргументы: verbose (int, optional): whether to print saved profiles real-time. Defaults to 1. Результат: [list]: list of extracted profiles, a profile has the fields ["ssid", "auth-alg", "key-mgmt", "psk"] """ network_connections_path = "/etc/NetworkManager/system-connections/" fields = ["ssid", "auth-alg", "key-mgmt", "psk"] Profile = namedtuple("Profile", [f.replace("-", "_") for f in fields]) profiles = [] for file in os.listdir(network_connections_path): data = < k.replace("-", "_"): None for k in fields >config = configparser.ConfigParser() config.read(os.path.join(network_connections_path, file)) for _, section in config.items(): for k, v in section.items(): if k in fields: data[k.replace("-", "_")] = v profile = Profile(**data) if verbose >= 1: print_linux_profile(profile) profiles.append(profile) return profiles def print_linux_profile(profile): """Печатает один профиль в Linux""" print(f"")
Как уже упоминалось, мы вызываем os.listdir() в этом каталоге для вывода списка всех файлов, затем используем configparser для чтения файла INI и перебираем элементы, если мы находим поля, которые нам интересны, просто добавляем их в наши данные.
В файлах INI есть и другая информация, но нас интересует только SSID , auth-alg , key-mgmt и psk(password) . Далее запишем функцию печати:
def print_linux_profiles(verbose): """Печатает все извлеченные SSID вместе с ключом (PSK) в Linux""" print("SSID AUTH KEY-MGMT PSK") print("-"*50) get_linux_saved_wifi_passwords(verbose)
Наконец, запишем функцию, которая вызывает print_linux_profiles() или print_windows_profiles() в зависимости от нашей ОС:
def print_profiles(verbose=1): if os.name == "nt": print_windows_profiles(verbose) elif os.name == "posix": print_linux_profiles(verbose) else: raise NotImplemented("Код работает только для ОС Linux или Windows") if __name__ == "__main__": print_profiles()
$ python get_wifi_passwords.py
Вывод на моей машине с Windows:
SSID CIPHER(S) KEY -------------------------------------------------- OPPO F9 CCMP/GCMP 0120123489@ TP-Link_83BE_5G CCMP/GCMP 0xxxxxxx Access Point CCMP/GCMP super123 HUAWEI P30 CCMP/GCMP 00055511 ACER CCMP/GCMP 20192019 HOTEL VINCCI MARILLIA CCMP 01012019 Bkvz-U01Hkkkkkzg CCMP/GCMP 00000011 nadj CCMP/GCMP burger010 Griffe T1 CCMP/GCMP 110011110111111 BIBLIO02 None None AndroidAP CCMP/GCMP 185338019mbs ilfes TKIP 25252516 Point CCMP/GCMP super123
И это результат на Linux:
SSID AUTH KEY-MGMT PSK -------------------------------------------------- KNDOMA open wpa-psk 5060012009690 TP-LINK_C4973F None None None None None None None Point open wpa-psk super123 Point None None None
Заключение
Хорошо, и всё на сегоня. Я уверен, что для вас это полезный код и вы сможете быстро получить сохраненные пароли Wi‑Fi на своём компьютере.
Посмотрие полный код.
import subprocess import os import re from collections import namedtuple import configparser def get_windows_saved_ssids(): """Возвращает список сохраненных SSID на машине Windows с помощью команды netsh""" # получить все сохраненные профили на ПК output = subprocess.check_output("netsh wlan show profiles").decode() ssids = [] profiles = re.findall(r"Весь профиль пользователя\s(.*)", output) for profile in profiles: # для каждого SSID удалите пробелы и двоеточие ssid = profile.strip().strip(":").strip() # добавить в список ssids.append(ssid) return ssids def get_windows_saved_wifi_passwords(verbose=1): """Извлекает сохраненные пароли Wi‑Fi на машине Windows, эта функция извлекает данные с помощью netsh команды в Windows Аргумены: verbose (int, optional): whether to print saved profiles real-time. Defaults to 1. Результат: [list]: list of extracted profiles, a profile has the fields ["ssid", "ciphers", "key"] """ ssids = get_windows_saved_ssids() Profile = namedtuple("Profile", ["ssid", "ciphers", "key"]) profiles = [] for ssid in ssids: ssid_details = subprocess.check_output(f"""netsh wlan show profile "" key=clear""").decode() # получить шифры ciphers = re.findall(r"Cipher\s(.*)", ssid_details) # убрать пробелы и двоеточие ciphers = "/".join([c.strip().strip(":").strip() for c in ciphers]) # получить пароль Wi‑Fi key = re.findall(r"Key Content\s(.*)", ssid_details) # убрать пробелы и двоеточие try: key = key[0].strip().strip(":").strip() except IndexError: key = "None" profile = Profile(ssid=ssid, ciphers=ciphers, key=key) if verbose >= 1: print_windows_profile(profile) profiles.append(profile) return profiles def print_windows_profile(profile): """Печать одного профиля в Windows""" print(f"") def print_windows_profiles(verbose): """Печатает все извлеченные SSID вместе с ключом в Windows""" print("SSID CIPHER(S) KEY") get_windows_saved_wifi_passwords(verbose) def get_linux_saved_wifi_passwords(verbose=1): """Извлекает сохраненные пароли Wi‑Fi на машине Linux, эта функция извлекает данные в каталоге `/etc/NetworkManager/system-connections/` Аргументы: verbose (int, optional): whether to print saved profiles real-time. Defaults to 1. Результат: [list]: list of extracted profiles, a profile has the fields ["ssid", "auth-alg", "key-mgmt", "psk"] """ network_connections_path = "/etc/NetworkManager/system-connections/" fields = ["ssid", "auth-alg", "key-mgmt", "psk"] Profile = namedtuple("Profile", [f.replace("-", "_") for f in fields]) profiles = [] for file in os.listdir(network_connections_path): data = < k.replace("-", "_"): None for k in fields >config = configparser.ConfigParser() config.read(os.path.join(network_connections_path, file)) for _, section in config.items(): for k, v in section.items(): if k in fields: data[k.replace("-", "_")] = v profile = Profile(**data) if verbose >= 1: print_linux_profile(profile) profiles.append(profile) return profiles def print_linux_profile(profile): """Печатает один профиль в Linux""" print(f"") def print_linux_profiles(verbose): """Печатает все извлеченные SSID вместе с ключом (PSK) в Linux""" print("SSID AUTH KEY-MGMT PSK") get_linux_saved_wifi_passwords(verbose) def print_profiles(verbose=1): if os.name == "nt": print_windows_profiles(verbose) elif os.name == "posix": print_linux_profiles(verbose) else: raise NotImplemented("Код работает только для ОС Linux or Windows") if __name__ == "__main__": print_profiles()

Как извлечь сохраненные пароли WiFi в Python , опубликовано К ВВ, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.
Респект и уважуха
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Ограничение ответственности
Информация на сайте предоставляется «как есть», без всяких гарантий, включая гарантию применимости в определенных целях, коммерческой пригодности и т.п. В текстах могут быть технические неточности и ошибки. Автор не может гарантировать полноты, достоверности и актуальности всей информации, не несет ответственности за последствия использования сайта третьими лицами. Автор не делает никаких заявлений, не дает никаких гарантий и оценок относительно того, что результаты, размещенные на сайте и описанные в заявлениях относительно будущих результатов, будут достигнуты. Автор не несет ответственности за убытки, возникшие у пользователей или третьих лиц в результате использования ими сайта, включая упущенную выгоду. Автор не несет ответственности за убытки, возникшие в результате действий пользователей, явно не соответствующих обычным правилам работы с информацией в сети Интернет. Пользуясь сайтом, вы принимаете и соглашаетесь со всеми нашими правилами, включая «Ограничение ответственности».
Извлечение сохраненных паролей Wi-Fi на Python
В предыдущей статье я показал, как вытащить пароли из Chrome на Python. Сейчас покажу, как написать небольшой скрипт на Python для извлечения сохраненных паролей Wi-Fi Windows и Linux.
Извлечение сохраненных паролей Wi-Fi на Python
Нам не потребуется устанавливать сторонние библиотеки, так как мы будем взаимодействовать с командой netsh в Windows и папкой NetworkManager в дистрибутивах Linux.
Статья в образовательных целях, для обучения этичных хакеров. Несанкционированный доступ к чужой информации является незаконным и рассматривается как уголовное преступление. Ни редакция spy-soft.net, ни автор не несут ответственности за ваши действия.
Мы напишем скрипт, который будет обрабатывать разный код для разных сред, так что если вы используете любую из этих платформ, он автоматически определит это и выведет сохраненные пароли соответствующим образом.
Я назвал файл extract_wifi_passwords.py.
