#python #networking #wifi
Вопрос:
у меня есть упражнение:
- Показать список всех точек доступа Wi-Fi
- Выделите наилучшую возможную точку подключения (где RSSI ближе всего к нулю).
- Запросите у пользователя пароль для этой точки доступа
- Подключитесь к этой точке доступа
- Покажите, что вы смогли получить доступ к Интернету через эту точку доступа
я хотел бы услышать мнение или какие-либо комментарии для новичка, я думаю, что может быть более официальный способ сделать это ? или чтобы это выглядело лучше
import subprocess import urllib.request import pywifi from pywifi import const import time def look_for(): sid = "SSID" networks = subprocess.check_output(['netsh', 'wlan', 'show', 'network', 'mode=Bssid']) networks = networks.decode('ascii') networks = networks.replace('r', '') networks_list = networks.split('n') ssids = [] for network in networks_list: if sid in network and 'BSSID' not in network: ssids.append(network[9:]) # for ssid in ssids: # print(ssid) res = [] results = [] SSID_list = networks.split("BSSID") counter = 0 for i in range(1, len(SSID_list)): temp = SSID_list[i] if (temp[1] == '1'): counter = 1 results.append([0]) pos = 0 if temp.find('Signal', pos) != -1: pos = temp.find('Signal', pos) val = (temp[pos 6:pos 30].replace(':', '').strip().replace('%', '')) if int(results[-1][0]) lt; int(val): results[-1][0] = val max_val = 0 max_index = 0 for i in range(len(results)): if int(results[i][0]) gt; max_val: max_val = int(results[i][0]) max_index = i print(ssids[max_index], 'is the strongest network around') password = input("Enter the password for " ssids[max_index] ' :') connect_to_wifi(ssids[max_index],password) def check_conection(): try: urllib.request.urlopen('https://google.com') return True except Exception as e: return False def connect_to_wifi(ssid,password): wifi=pywifi.PyWiFi() iface=wifi.interfaces()[0] iface.disconnect() time.sleep(1) assert iface.status() in [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE] profile = pywifi.Profile() profile.ssid = ssid profile.auth = const.AUTH_ALG_OPEN profile.akm.append(const.AKM_TYPE_WPA2PSK) profile.cipher = const.CIPHER_TYPE_CCMP profile.key = password iface.remove_all_network_profiles() tmp_profile = iface.add_network_profile(profile) iface.connect(tmp_profile) time.sleep(30) assert iface.status() == const.IFACE_CONNECTED if __name__ == '__main__': look_for() print('Connected' if check_conection() else 'Not connected')
спасибо за чтение и помощь , любое предложение будет благословлено!
Комментарии:
1. итак, какая помощь вам нужна?