Как узнать имя роутера к которому я подключен?
Смысл программы крайне прост: получить имя сети роутера (SSID) и пароль (WPA-PSK) (если это возможно. В противном случае бду запрашивать у пользователя) и сгенерировать это всё в qr-код. Но я не знаю как получить имя сети и пароль
Ответы (1 шт):
Автор решения: eri
→ Ссылка
Для Линукс
Чуток исправленная библиотека (на гитхабе есть ещё форки, основная не рабочая):
pip3 install git+https://github.com/alex-eri/python-networkmanager.git@master
и сам код:
import dbus.mainloop.glib
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
import NetworkManager
active_connections = NetworkManager.NetworkManager.ActiveConnections
wifi_connections = filter(lambda x: x.Type == '802-11-wireless', active_connections)
print('ssid', 'security', 'password')
for wifi in wifi_connections:
settings = wifi.Connection.GetSettings()
secret = wifi.Connection.GetSecrets('802-11-wireless-security')
print(
settings['802-11-wireless']['ssid'],
settings['802-11-wireless-security']['key-mgmt'],
secret.get('802-11-wireless-security')
)
Или через gi
Мне кажется так перспективней
import gi
gi.require_version("NM", "1.0")
from gi.repository import NM
nm=NM.Client.new()
active_connections = nm.get_active_connections()
wifi_connections = filter(lambda x: x.props.type == '802-11-wireless', active_connections)
print('ssid', 'security', 'password')
for wifi in wifi_connections:
connection = wifi.props.connection
print(
connection.get_setting_wireless().get_ssid().get_data().decode(),
connection.get_setting_wireless_security().props.key_mgmt,
connection.get_secrets('802-11-wireless-security', None)['802-11-wireless-security']['psk']
)
Для Виндовс
Запускай программу netsh и смотри её вывод:
Получить список сетей
list_text = os.popen('NETSH WLAN SHOW PROFILE').read()
Получить пароль от сети
password_text = os.popen('NETSH WLAN SHOW PROFILE '+ name +' KEY=CLEAR').read()
Текст разберешь через сплит или регулярками.