Comment puis-je récupérer la résistance du signal des réseaux LAN sans fil proches sur Windows à l'aide de Python? P>
Je voudrais montrer ou graphiquement les valeurs. P>
4 Réponses :
Si vous êtes sur Windows fort>, vous voulez probablement sur linux fort>, vous avez quelques choix: p> < p> Les options standard consistent à analyser la sortie de Si vous avez besoin de plus que cela, le meilleur moyen consiste à interroger le démon Wireless Manager. Sur moderne, Linuxes, c'est généralement NetworkManager , bien que wicd devient de plus en plus populaire. Ces deux gestionnaires peuvent être interrogés à l'aide de wlanapi.dll code> afin que vous puissiez devoir vous envelopper vous-même en utilisant CTTYPES . J'ai un script préliminaire qui le fait ( travaille pour moi em>), mais cela peut être crufty. Vous voudrez lire la documentation pour comprendre la signification de tous les champs:
iwlist -Scan code>. Toutefois, si vous êtes actuellement connecté à un WLAN et non en tant que root, il ne renvoie que le WLAN actuellement connecté. P>
dbus code>. À moins que vous ne puissiez contrôler ce que les clients ont sur leurs systèmes, vous devrez peut-être prendre en charge ces deux options, ou au moins une option et avoir une baisse pour
iwlist code>. P> p>.
Il semble que cela met en cache et ne rafraîchit pas les valeurs. Pour obtenir des données actualisées, voir la réponse associée à partir de @Pedro G, et voir aussi social.msdn.microsoft.com/forums/security/en-us/...
@fmark je voulais juste dire merci beaucoup pour ce post génial. À mon travail, j'ai essayé d'obtenir RSSI à partir de l'AP connecté sous Windows, et vous méritez de nombreux mercis pour moi de le faire enfin. Je répète actuellement tous les AP, mais je travaille à la modifier. Je voulais offrir une recommandation à votre code. Je ne suis pas très expérimenté avec C ou le module Python Ctypes, mais je pense avoir peut-être trouvé un bug possible. Je ne sais vraiment pas quelle différence cela fait, mais j'ai remarqué:
Vous définissez énums comme ceci: p> mais d'autres fois que vous définissez quelque chose de très similaire comme celui-ci : P> DOT11_PHY_TYPE = c_uint
(dot11_phy_type_unknown,
dot11_phy_type_any,
dot11_phy_type_fhss,
dot11_phy_type_dsss,
dot11_phy_type_irbaseband,
dot11_phy_type_ofdm,
dot11_phy_type_hrdsss,
dot11_phy_type_erp,
dot11_phy_type_ht,
dot11_phy_type_IHV_start,
dot11_phy_type_IHV_end) = map(DOT11_PHY_TYPE,
[0,0,1,2,3,4,
5,6,7,0x80000000,
0xffffffff])
Merci! Mais quelqu'un a-t-il une version Python3 de cela?
Alors .. Je me suis fondé sur le code @fmarks (qui était une personne en direct pour moi) et vous devez ajouter la fonction Voici mon code étendu! P> Tous les accessoires à @fmarks! p>
Merci! Qui correspond (et aide à résoudre) la conversation à
Si vous ne voulez pas traiter avec Windows API, vous pouvez utiliser la méthode indiquée Ici avec une légère modification.
Vous pouvez utiliser cette commande: p> Utilisation de ce code P> import subprocess
results = subprocess.check_output(["netsh", "wlan", "show", "network", "mode=Bssid"])
Veuillez spécifier votre plate-forme (Windows, Linux, ...)