tcpdump zeigt RSSI nicht an

tcpdump zeigt RSSI nicht an

Ich überwache Wi-Fi-Testanfragen über tcpdump unter Debian und versuche, die RSSI (Signalstärke) jedes Testanfrageelements zu erfassen. Derzeit sieht die Ausgabe von tcpdump für jede Testanfrage folgendermaßen aus:

09:13:17.663057 BSSID:Broadcast DA:Broadcast SA:04:fe:31:67:32:a0 (oui Unknown) Probe Request () [1.0 2.0 5.5 11.0 Mbit]

Es fehlt an der Signalstärke und einigen anderen Elementen.

Bei Verwendung einer anderen Maschine mit derselben Version von tcpdump/libpcap und denselben Argumenten für tcpdump enthält die Ausgabe die Signalstärke (siehe unten).

09:14:51.673753 6.0 Mb/s 2412 MHz 11g -71dB signal antenna 1 BSSID:Broadcast DA:Broadcast SA:b2:b2:b2:b2:b2:b2 (oui Unknown) Probe Request (11n-AP) [1.0* 2.0* 5.5* 11.0* 9.0 18.0 36.0 54.0 Mbit]

Kann jemand erklären, warum der RSSI in der Datennutzlast auf dem ersten Gerät fehlt, und gibt es eine Möglichkeit, ihn zu erfassen?

Auf Anfrage von @Spiff finden Sie hier einen Hex-Dump einer der Paketerfassungen.

12:44:40.226564 BSSID:Broadcast DA:Broadcast SA:00:1e:8f:93:3f:60 (oui Unknown) Probe Request (pagefarm) [1.0 2.0 5.5 11.0 6.0 9.0 12.0 18.0 Mbit]
        0x0000:  4400 0000 9000 0000 7261 3000 0000 0000  D.......ra0.....
        0x0010:  0000 0000 0000 0000 4400 0100 0000 0400  ........D.......
        0x0020:  c79d 0300 4400 0200 0000 0000 0000 0000  ....D...........
        0x0030:  4400 0300 0000 0400 0300 0000 4400 0400  D...........D...
        0x0040:  0000 0400 b1ff ffff 0000 0000 0000 0000  ................
        0x0050:  0000 0000 4400 0600 0000 0400 0000 0000  ....D...........
        0x0060:  4400 0700 0000 0400 0000 0000 4400 0800  D...........D...
        0x0070:  0000 0400 0200 0000 4400 0900 0000 0000  ........D.......
        0x0080:  0000 0000 4400 0a00 0000 0400 3500 0000  ....D.......5...
        0x0090:  4000 0000 ffff ffff ffff 001e 8f93 3f60  @.............?`
        0x00a0:  ffff ffff ffff 4022 0008 7061 6765 6661  ......@"..pagefa
        0x00b0:  726d 0108 0204 0b16 0c12 1824 0301 0332  rm.........$...2
        0x00c0:  0430 4860 6c                             .0H`l

Antwort1

[Aktualisiert mit allen Erkenntnissen aus unserer Fehlerbehebung.
Vielen Dank an den außergewöhnlichen tcpdump/libpcap/Wireshark-Betreuer Guy Harris.]

tcpdumpversteht nur den Datenverbindungstyp „Radiotap“ (auch bekannt als LINKTYPE_IEEE802_11_RADIOTAP, auch bekannt als ) im Radio-Metadaten-Header-Format für den 802.11-Monitormodus.DLT_IEEE802_11_RADIO

Das IEEE802_11_RADIODLT weist die Karte/den Treiber an, jedem empfangenen Frame einen zusätzlichen „falschen“ Header voller Radio-Metadaten voranzustellen. Dabei handelt es sich um Dinge, die nicht als Bits über die Luft übertragen wurden, sondern aus dem Zustand des Radios zum Zeitpunkt des Empfangs des Frames gelesen wurden. Zu diesen Informationen gehören der RSSI, der Kanal, auf den das Radio eingestellt war, die Datenrate/MCS des Pakets und möglicherweise noch viel mehr.

Wenn Ihre Karte und Ihr Treiber Radiotap unterstützen, können Sie angeben, dass Sie in diesem Modus erfassen möchten, indem Sie -y IEEE802_11_RADIOIhren tcpdumpArgumenten hinzufügen. Sie können eine Liste der unterstützten Datenverbindungstypen für Ihre ra0Schnittstelle mit tcpdump -i ra0 -ILoder möglicherweise mit abrufen tcpdump -i ra0 -D. Beachten Sie, dass die DLTs im Monitormodus möglicherweise nicht angezeigt werden, wenn Sie nicht die angeben, -Ium den Monitormodus anzugeben. Beachten Sie auch, dass das Hinzufügen, -Ium die Schnittstelle in den Monitormodus zu versetzen, möglicherweise nicht auf allen Systemen funktioniert. Sie müssen daher möglicherweise das airmon-ngSkript im aircrack-ngOpen-Source-Softwarepaket verwenden, um den Monitormodus einzuschalten.

Es sieht so aus, als ob der Ralink-Treiber/Chipsatz auf der nicht funktionierenden Maschine keine Radiotap-Header unterstützt. Er unterstützt anscheinend nur das veraltete Prism-Headerformat und eine weniger bekannte Variante von Prism-Headern.

Sie können diese Theorie bestätigen, indem Sie das DLT der Schnittstelle auf dem Arbeitscomputer (im Monitormodus) mit den obigen Befehlen überprüfen und bestätigen, dass es sich um … handelt IEEE802_11_RADIO.

Wenn dies bestätigt wird, haben Sie folgende Optionen:

  • Aktualisieren Sie den Treiber auf Ihrem nicht funktionierenden Computer, damit er mit dem Treiber auf Ihrem funktionierenden Computer übereinstimmt. Anscheinend unterstützt der Treiber auf dem funktionierenden Computer Radiotap-Header. Da Sie sagen, dass beide Computer dasselbe Modell eines USB-WLAN-Adapters haben, ist hoffentlich in beiden Adaptern tatsächlich der gleiche WLAN-Chipsatz verbaut, sodass der bessere Treiber funktioniert.
  • Verwenden Sie Wireshark (oder das mitgelieferte Befehlszeilentool tshark), um Ihre Paketerfassungen im Monitormodus auf dem Computer mit dem Problem durchzuführen. Wireshark und Tshark sollten wissen, wie die unterschiedlichen Prism-Header analysiert werden, die der „schlechte“ Treiber unterstützt.
  • Erfassen Sie die Link-Layer-Header mit tcpdumpund analysieren Sie den RSSI des Prism-Headers selbst. Es wird höchstwahrscheinlich der Little-Endian-SInt32 bei Offset 0x44 (Dezimalzahl 68) sein. Es wäre zuverlässiger, nach der Sequenz zu suchen 4400 0400 0000 0400und dann die nächsten 4 Bytes zu nehmen und sie als SInt32 zu betrachten. In Ihrem Beispiel des erfassten Headers sieht der RSSI-Wert folgendermaßen aus: b1ff ffff. Das wäre 0xffffffb1, die 32-Bit-Zweierkomplement-Ganzzahldarstellung mit Vorzeichen von -79, was ein gültiger RSSI für eine schwache, aber immer noch brauchbare Signalstärke ist.
  • Verwenden Sie es tcpdumpzum Erfassen in einer Datei auf dem Problemcomputer, analysieren Sie sie jedoch anschließend mit Wireshark oder tsharkauf einem anderen Computer.
  • usw.

verwandte Informationen