Frage

Ich mag wissen, wie iwlist Befehl, um die drahtlosen Netzwerke zur Verfügung, unter Linux durchsucht. Ich las seinen Quellcode und es gab einen ioctl Aufruf SIOCSIWSCAN mit Hilfe der Scan und SIOCGIWSCAN auszulösen die Scan-Ergebnisse zu erhalten. Aber wie das Beacon-Frames erfaßt und durch diese Systemaufrufe analysiert?

War es hilfreich?

Lösung

iwlist (8) und die anderen drahtlosen Werkzeuge bieten eine gemeinsame Vorderende an unterschiedlichen wireless-Gerätetreiber, die Linux wireless-Extensions unterstützen ( WEXT). Jeder Fahrer wird registrieren Handler mit WEXT, die die gerätespezifische Operationen, die durch diese Schnittstelle definiert implementieren. Für das Scannen sind die beiden Handler Trigger-Scan (Befehl SIOCSIWSCAN) und steigen Sie Scan-Ergebnisse (Befehl SIOCGIWSCAN). Nachdem das Gerät einen Scan abgeschlossen ist, sendet er ein SIOCGIWSCAN Ereignis WEXT über eine netlink Schnittstelle. Eine Anwendung mit dieser Buchse hören kann dann ausgeben einen SIOCGIWSCAN Befehl, um die Scan-Ergebnisse aus dem Gerät zu bekommen. Beachten Sie, dass das Gerät frei ist, den Scan zu implementieren, wie auch immer es wählt. Zum Beispiel kann es passiv auf Baken hören oder aktiv Scannen von Sondierungsanforderungen aussenden.

Die oben ist absichtlich vage auf der Mechanik der Befehle an ein Gerät zu senden, weil es die traditionelle Art und Weise (ioctl) ist und die neue Art und Weise (netlink - cfg80211). Aber ein konkretes Beispiel zu nehmen, sollten Sie die traditionelle Art und Weise. Die ioctl Anrufe werden in dem WEXT-Modul implementiert, aber der Code, der diesen Befehl behandelt wird in dem Gerätetreiber implementiert. Wenn ein User-Space-Anwendung eine ioctl macht, sucht WEXT die Handler-Gerätetreiber und führt es aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top