Analysieren von WiFi-Paketen (libpcap)

Ich habe daran gearbeitet, dass ein OpenWRT-Router WiFi-Testanforderungen an eine MySQL-Datenbank protokolliert (darin werden MAC-Adresse und RSSI-Informationen für jedes Testanforderungspaket zusammen mit anderen routerspezifischen Daten gespeichert).

Nachdem ich mich ein bisschen mit libpcap befasst habe, war ich in der Lage, ein einfaches kleines Programm zusammenzusetzen, das einfach Pakete auf einer Monitorschnittstelle (mon0) mit einem Filterausdruck ('wlan subtype probe-req') durchsucht und dann die Rohpakete ausgibt in hex. Mit den Informationen, die online auf libpcap verfügbar sind, war dieser Teil ziemlich einfach.

Hier stecke ich fest:Wie analysiere ich das WLAN-Paket, um die gesuchten Informationen (RSSI und Quell-MAC-Adresse) abzurufen?

Um es klar zu sagen, ich bitte nicht um den Code, um es zu tun (obwohl ich mich nicht beschweren werde, wenn Sie etwas liefern möchten: D). Ich suche nur eine Art Leitfaden, um zu verstehen, welches Byte welches ist - eine WiFi-Paket-Roadmap, wenn Sie so wollen.

Es gibt ein paar gute Tutorials für das Parsen von Paketen, die über Ethernet eingehen, aber ich konnte nichts finden, was beim Parsen von Headern speziell im Zusammenhang mit WiFi helfen könnte. Ich gehe davon aus, dass es ein ziemlich einfacher Prozess sein wird - nur die relevanten Bytes für RSSI und Quell-MAC zu erfassen -, aber auch hier konnte ich keine Dokumentation darüber finden, welches Byte welches ist.

Ich weiß, dass dies bereits getan wurde, aber ich bin ehrlich: Ich bin völlig verloren, wenn ich den Quellcode nach tcpdump durchsuche.

Kennt jemand eine gute Ressource zum Parsen von WiFi-Paketen?

Prost

EDIT: Genauere Antwort

RSSI befindet sich im RadioTap-Header (unter Linux auch). Das Herausziehen des RSSI aus dem Paket ist mit ziemlich einfachradiotap-parser.c zusammen mit den Dateien, von denen es abhängt (im selben Verzeichnis wie die Datei, mit der ich verlinkt bin).Wenn jemand Probleme mit der Verwendung der Funktionen von radiotap-parser.c hat, können Sie sich gerne an uns wenden.

Das Abrufen der Quell-MAC-Adresse wird durch die Radiotap-Funktionen ziemlich einfach, da die Struktur des Radiotap-Headers die Länge des Radiotap-Headers enthält (it_len), die variabel ist. Da ich nur Prüfanforderungen analysiere, die eine feste Länge haben (siehe Seite 17)Hier) Es geht nur darum, einen Zeiger zu erstellen, der aufpacket + it_len + 10 (Die Quell-MAC-Adresse beginnt 10 Byte nach dem Beginn des MAC-Frames, der dort beginnt, wo der Radiotap-Header endet.) Die 6 Bytes, die an diesem Zeiger beginnen, sindaddr2 im 802.11-Frame (siehe auch hier Seite 17)Hier).

Antworten auf die Frage(3)

Ihre Antwort auf die Frage