Принудительное сканирование Wi-Fi с использованием WlanScan в Python - PullRequest
1 голос
/ 21 июня 2019

Я хочу знать, как выполнить функцию WlanScan из python для запуска сканирования беспроводной сети. Я использую модуль Python win32wifi . Требуется дескриптор, полученный с использованием WlanOpenHandle и GUID интерфейса pInterfaceGuid. Я понятия не имею, как получить этот GUID. любая помощь будет оценена.

How do I get this pInterfaceGuid

Ответы [ 2 ]

2 голосов
/ 21 июня 2019

Вы получаете Guid с WlanEnumInterfaces , который возвращает структуру WLAN_INTERFACE_INFO_LIST с WLAN_INTERFACE_INFO структурой и InterfaceGuid member

1 голос
/ 21 июня 2019

Я установил модуль Win32WiFi и после краткой проверки URL , предоставленных @Castorix (всю необходимую информацию можно найти по адресу [MS.Docs]: wlanapi.h header ) и исходный код, я смог написать этот небольшой пример.

code.py :

#!/usr/bin/env python3

import sys
from win32wifi import Win32Wifi as ww


def main():
    interfaces = ww.getWirelessInterfaces()
    print("WLAN Interfaces: {:d}".format(len(interfaces)))
    handle = ww.WlanOpenHandle()
    for idx , interface in enumerate(interfaces):
        print("\n  {:d}\n  GUID: [{:s}]\n  Description: [{:s}]".format(idx, interface.guid_string, interface.description))
        try:
            scan_result = ww.WlanScan(handle, interface.guid)
        except:
            print(sys.exc_info())
            continue
        print("\n  Scan result: {:d}".format(scan_result))
    ww.WlanCloseHandle(handle)


if __name__ == "__main__":
    print("Python {:s} on {:s}\n".format(sys.version, sys.platform))
    main()
    print("\nDone.")

Вывод :

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q056701614]> "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" code.py
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32

WLAN Interfaces: 1

  0
  GUID: [{0C58E048-BC0B-4D5F-A21F-FCD4E4B31806}]
  Description: [Intel(R) Dual Band Wireless-AC 8260]

  Scan result: 0

Done.

@ EDIT0 :

Обновлен код в соответствии с [SO]: невозможно получить все доступные сети, используя WlanGetAvailableNetworkList в Python (ответ @ CristiFati) .Теперь он будет работать на компьютерах с более чем одним WLAN адаптером

...