Ich habe versucht, WIFI-Pakete unter Linux zu erfassen und die Frequenz / den Kanal zu ermitteln, mit dem / dem das Paket erfasst wurde. Ich habe es mit Wireshark versucht und es gab kein Glück und keine Hilfe . Obwohl ich ein Beispielpaket von Wireshark verwende, kann ich die Frequenz / den Kanal sehen.
Jetzt experimentiere ich mit Scapy. Ich wollte die Frequenz / den Kanal eines beschnüffelten Pakets herausfinden, hatte aber immer noch kein Glück. Gibt es eine Möglichkeit, dies mit Scapy zu tun?
PS Wenn es ein besseres Tool als Scapy oder Python gibt, freue ich mich über Kommentare
python
python-3.x
wireshark
scapy
Baby desta
quelle
quelle
Antworten:
Ich fand heraus, dass RadioTab-Header nicht Teil eines Dot11-Protokolls sind, sondern lediglich von der Netzwerkschnittstelle hinzugefügt werden. Der Grund, warum ich die RadioTab-Header für Beispielpakete von Wireshark.org und nicht von meiner Live-Wireshark-Erfassung erhalten habe, ist, dass einige Netzwerkadapter kein RadioTap hinzufügen, während andere dies tun, und der Netzwerkadapter meines Laptops keine RadioTab-Header hinzufügt. Ich habe dies mit einem neuen externen WLAN-Adapter überprüft und die RadioTap-Header hinzugefügt.
Also zu meiner Hauptfrage, wie man die Frequenz eines Pakets erhält / einstellt. Ich habe erwartet, dass Scapy diese Option hat, aber das tut es nicht und sollte es auch nicht. Der Grund dafür ist, dass die Frequenz davon abhängt, was am Netzwerkadapter eingestellt ist. Also habe ich die Frequenz / den Kanal meines WiFi-Adapters auf einen anderen eingestellt. Mein externer WiFi-Adapter kann in verschiedenen Kanälen arbeiten, daher habe ich jeden geändert und mit dem RadioTap-Header bestätigt. Es gibt einfache Linux-Befehle / -Tools , mit denen ich die unterstützten Kanäle meiner WiFi-Schnittstelle überprüfen und zu einem bestimmten Kanal wechseln konnte.
EDIT - Andere Probleme und Lösungen:
Wenn Sie unter Linux arbeiten und den Arbeitskanal Ihrer Schnittstelle ändern möchten, müssen Sie den Netzwerkmanager für diese Schnittstelle deaktivieren und dies tun. Fügen Sie zunächst das folgende Snippet hinzu
/etc/network/interfaces
Ersetzen Sie
$iface
durch Ihren Schnittstellennamen. Auf diese Weise können Sie die Schnittstelle selbst steuern. Fügen Sie dann die folgenden Zeilen hinzu/etc/wpa_supplicant/wpa_supplicant.conf
Beachten Sie, dass
2412 2437 2462
die Frequenzen (in diesem Fall Kanal 1, 6, 11) für Ihre Schnittstelle zur Auswahl stehen. Sie können sie auf die gewünschte Frequenz bearbeiten. Quelle . Aber zuerst müssen Sie überprüfen, ob Ihre Schnittstelle diese Frequenzen unterstützt. Um das zu überprüfenEndlich, nachdem alles erledigt ist.
Dadurch erhalten Sie Pakete mit der eingestellten Frequenz
wlp3s0
.quelle
sendp(Ether()/IP(dst="1.2.3.4",ttl=(1,4)), iface="eth1")
Sie Ihre Schnittstelle auf eine bestimmte Frequenz einstellen können, die Sie möchten, wenn sie dies unterstützt.Diese Antwort bezieht sich auf den Titel und den Inhalt der Frage: Bereitstellung von Gettern und Setzern für Frequenz und Kanal eines Pakets.
Verwenden Sie für diese Lösung die Datei wpa-Induction.pcap in Wiresharks Sample Captures .
Stochern
Es ist nützlich, ein Paket zu durchsuchen, um zu sehen, auf welche Felder Scapy im Scapy-Interpreter Zugriff hat.
Während 2412 eine Frequenz und KEIN Kanal ist , sind dies die Daten, die wir wollen. RadioTap ist die Ebene pro
pkts[0].summary()
. Etwas zusammensetzen,Scapy bietet keinen Zugriff auf den Kanal, aber es ist trivial, die Frequenz in einen Kanal umzuwandeln.
Etwas zusammensetzen
Die Frequenz ermitteln
Bei gegebener Datei- und Paketnummer können wir jetzt den Kanal und die Frequenz für ein Paket ermitteln.
Einstellen der Frequenz
Angenommen, wir wollten die Frequenz auf 5300 ändern und speichern. Dies würde nur das Durchlaufen der Paketliste, das Ändern der Häufigkeit für jedes Paket und das Speichern des Ergebnisses erfordern. Im Scapy-Dolmetscher:
quelle