Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/ggerganov/wave-share
DatenexfiltrationDrahtlose SicherheitDienstprogramme & FrameworksLernen & Bildung
GitHubggerganov/wave-share

wave-share

Serverlos, Peer-to-Peer, lokales Dateiteilen durch Ton

Repository anzeigen
2.3k1483vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

wave-share

Ein Proof-of-Concept für WebRTC-Signalisierung mittels Ton. Funktioniert mit allen Geräten, die Mikrofon + Lautsprecher haben. Läuft im Browser.

Nahegelegene Geräte handeln die WebRTC-Verbindung aus, indem sie die notwendigen Session Description Protocol (SDP)-Daten über eine Folge von Tönen austauschen. Nach erfolgreicher Aushandlung wird eine lokale WebRTC-Verbindung zwischen den Browsern hergestellt, die den Datenaustausch über LAN ermöglicht.

Sehen Sie es in Aktion (2-Minuten-Video):

CG++ Data over sound

Probieren Sie es selbst aus: ggerganov.github.io/wave-share

Aktuelles:
Ich habe den Data-over-Sound-Algorithmus in eine eigenständige Bibliothek namens ggwave extrahiert.
Sie kann problemlos in andere Projekte eingebettet werden.

Wie es funktioniert

Die WebRTC-Technologie ermöglicht es zwei Browsern auf verschiedenen Geräten, sich miteinander zu verbinden und Daten auszutauschen. Es ist nicht erforderlich, Plugins zu installieren oder Anwendungen herunterzuladen. Um die Verbindung zu initiieren, tauschen die Peers Kontaktinformationen aus (IP-Adresse, Netzwerkports, Sitzungs-ID usw.). Dieser Prozess wird als "Signalisierung" bezeichnet. Die WebRTC-Spezifikation definiert keinen Standard für die Signalisierung – der Kontaktaustausch kann über jedes Protokoll oder jede Technologie erfolgen.

In diesem Projekt erfolgt die Signalisierung über Ton. Der Signalisierungsablauf sieht wie folgt aus:

  • Peer A sendet ein Angebot für eine WebRTC-Verbindung aus, indem er die Sitzungsdaten in Töne kodiert.
  • Nahegelegene Peers erfassen den von Peer A ausgesendeten Ton und decodieren die WebRTC-Sitzungsdaten.
  • Peer B, der eine Verbindung mit Peer A herstellen möchte, antwortet mit einer Audio-Antwort. Die Antwort enthält die Kontaktinformationen von Peer B. Zusätzlich beginnt Peer B, eine Verbindung zu Peer A herzustellen.
  • Peer A empfängt die Antwort von Peer B, decodiert die übertragenen Kontaktdaten und erlaubt Peer B, sich zu verbinden.
  • Verbindung wird hergestellt.

Die beschriebene Signalisierungssequenz beinhaltet keinen Signalisierungsserver. Daher kann eine Anwendung, die Signalisierung über Ton verwendet, beispielsweise von einer statischen Webseite bereitgestellt werden. Die einzige Voraussetzung ist die Kontrolle über die Audio-Ausgabe-/Aufnahmegeräte.

Eine offensichtliche Einschränkung (Funktion) des aktuellen Ansatzes ist, dass nur nahegelegene Geräte (z.B. im selben Raum) eine Verbindung miteinander herstellen können. Darüber hinaus müssen die Geräte im selben lokalen Netzwerk verbunden sein, da NAT nicht verfügbar ist.

Sound Tx/Rx

Die über Ton übertragenen Daten enthalten die Kontaktinformationen, die zur Initialisierung der WebRTC-Verbindung erforderlich sind. Diese Daten werden im Session Description Protocol (SDP)-Format gespeichert. Da Data-over-Sound erhebliche Einschränkungen in Bezug auf Bandbreite und Robustheit aufweist, ist es wünschenswert, so wenig Daten wie möglich zu übertragen. Daher wird das SDP von allen irrelevanten Informationen befreit und nur die wesentlichen Daten, die zum Aufbau der Verbindung benötigt werden, übertragen. Derzeit hat das Tonpaket, das die minimal erforderlichen SDP-Daten enthält, das folgende Format:

Die Gesamtgröße des Audiopakets beträgt 112 Bytes. Mit dem aktuellen Audio-Codierungsalgorithmus kann das SDP-Paket in 5-10 Sekunden übertragen werden (abhängig vom verwendeten Sende-Protokoll). Die Verwendung langsamerer Protokolle bietet eine zuverlässigere Übertragung in lauten Umgebungen oder wenn die kommunizierenden Geräte weit voneinander entfernt sind.

Daten-zu-Ton-Codierung

Der aktuelle Ansatz verwendet ein mehrfrequentes Frequency-Shift-Keying (FSK)-Modulationsschema. Die zu übertragenden Daten werden zunächst in 4-Bit-Blöcke aufgeteilt. Zu jedem Zeitpunkt werden 3 Bytes mit 6 Tönen übertragen – ein Ton für jeden 4-Bit-Block. Die 6 Töne werden in einem 4,5-kHz-Bereich emittiert, der in 96 gleichmäßig verteilte Frequenzen unterteilt ist:

Für alle Protokolle: dF = 46.875 Hz. Für nicht-ultraschall Protokolle: F0 = 1875.000 Hz. Für Ultraschallprotokolle: F0 = 15000.000 Hz.

Abrufen der lokalen IP-Adresse

Der Einfachheit halber wird ein einfacher WebRTC-Hack verwendet, um automatisch die lokale IP-Adresse Ihres Computers zu erkennen, sodass Sie sie nicht manuell angeben müssen. Allerdings verhindert die neueste WebRTC-Spezifikation dies aus Sicherheitsgründen, sodass dieses "Feature" irgendwann in allen Browsern nicht mehr funktionieren wird. Beispielsweise funktioniert es auf Safari nicht mehr.

Erstellen

Web Assembly-Modul wave.wasm

Sie benötigen einen Emscripten-Compiler. Führen Sie das Skript compile.sh aus.

CLI-Tool wave-share


Wichtig: Dieses CLI-Tool war der Prototyp für die inzwischen eigenständige Bibliothek ggwave. Schauen Sie sich diese unbedingt an, da sie aktuellere Beispiele für die Anwendung dieser Art der Daten-über-Ton-Kommunikation enthält.


Dies ist ein einfaches Tool, das Daten mit dem erklärten wave-share-Ton-Sende-/Empfangsprotokoll empfängt und sendet. Geben Sie etwas Text in die Standardeingabe ein und drücken Sie die Eingabetaste, um zu senden.

root@kitploit:~
# build
git clone https://github.com/ggerganov/wave-share
cd wave-share && mkdir build && cd build
cmake ..
make

# running
./wave-share

Hier ist ein kurzes Video, das die Verwendung des CLI-Tools zeigt:

Wave-share: command line tool

Bekannte Probleme / Dinge zu verbessern

  • Funktioniert nicht mit: IE, IE Edge, Chrome/Firefox auf iOS, Safari auf macOS
  • Ultraschall-Tonübertragung funktioniert auf den meisten Geräten nicht. Wahrscheinlich Hardware-Einschränkungen?
  • Bei mehreren lokalen Netzwerken kann derzeit nicht ausgewählt werden, welches verwendet werden soll. Es wird immer das erste verwendet.
  • Es kommt gelegentlich zu Tonstörungen während der Übertragung. Der Sendecode muss optimiert werden.
  • Die Größe der von Emscripten generierten .js ist zu groß (~1 MB). In reinem JS neu schreiben?
  • Auf mobilen Geräten kann die Seite bei Verwendung von Firefox auch nach dem Schließen des Tabs im Hintergrund weiterlaufen.
Tool herunterladen
Größe, [B]Beschreibung
1Typ des SDP – Angebot oder Antwort
1Paketgröße in Bytes (ohne ECC-Bytes)
4IP-Adresse des sendenden Peers
2Netzwerkport, der für die Kommunikation verwendet wird
32SHA-256-Fingerabdruck der Sitzungsdaten
40ICE-Anmeldedaten – 16 Bytes Benutzername + 24 Bytes Passwort
32ECC-Korrekturbytes zur Fehlerkorrektur während des Sendens
Freq, [Hz]Wert, [Bits]Freq, [Hz]Wert, [Bits]...Freq, [Hz]Wert, [Bits]
F0 + 00*dFBlock 0: 0000F0 + 16*dFBlock 1: 0000...F0 + 80*dFBlock 5: 0000
F0 + 01*dFBlock 0: 0001F0 + 17*dFBlock 1: 0001...F0 + 81*dFBlock 5: 0001
F0 + 02*dFBlock 0: 0010F0 + 18*dFBlock 1: 0010...F0 + 82*dFBlock 5: 0010
.....................
F0 + 14*dFBlock 0: 1110F0 + 30*dFBlock 1: 1110...F0 + 94*dFBlock 5: 1110
F0 + 15*dFBlock 0: 1111F0 + 31*dFBlock 1: 1111...F0 + 95*dFBlock 5: 1111