Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
wave-share — Partage de fichiers local, pair-à-pair, sans serveur, via le son. | Kitploit
Outils/GitHubGitHub/ggerganov/wave-share
Exfiltration de DonnéesSécurité Sans FilUtilitaires et FrameworksApprentissage et Éducation
GitHubggerganov/wave-share

wave-share

Partage de fichiers local, pair-à-pair, sans serveur, via le son.

Voir le dépôt
2.3k1483il y a 5 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

wave-share

Une preuve de concept pour la signalisation WebRTC via le son. Fonctionne avec tous les appareils dotés d'un microphone + haut-parleurs. S'exécute dans le navigateur.

Les appareils à proximité négocient la connexion WebRTC en échangeant les données nécessaires du protocole de description de session (SDP) via une séquence de tonalités audio. Après une négociation réussie, une connexion WebRTC locale est établie entre les navigateurs, permettant l'échange de données via le réseau local.

Voir en action (vidéo de 2 minutes) :

CG++ Données par le son

Essayez par vous-même : ggerganov.github.io/wave-share

Dernières nouvelles :
J'ai extrait l'algorithme de transmission de données par le son dans une bibliothèque autonome appelée ggwave.
Elle peut être facilement intégrée dans d'autres projets.

Comment ça fonctionne

La technologie WebRTC permet à deux navigateurs s'exécutant sur des appareils différents de se connecter l'un à l'autre et d'échanger des données. Il n'est pas nécessaire d'installer des plugins ou de télécharger des applications. Pour initier la connexion, les pairs échangent des informations de contact (adresse IP, ports réseau, identifiant de session, etc.). Ce processus est appelé "signalisation". La spécification WebRTC ne définit aucune norme pour la signalisation - l'échange de contacts peut être réalisé par n'importe quel protocole ou technologie.

Dans ce projet, la signalisation est effectuée via le son. La séquence de signalisation se présente comme suit :

  • Le pair A diffuse une offre de connexion WebRTC en encodant les données de session en tonalités audio
  • Le(s) pair(s) à proximité capture(nt) le son émis par le pair A et décode(nt) les données de session WebRTC
  • Le pair B, qui souhaite établir une connexion avec le pair A, répond avec une réponse audio. La réponse contient les informations de contact du pair B encodées. De plus, le pair B commence à essayer de se connecter au pair A
  • Le pair A reçoit la réponse du pair B, décode les données de contact transmises et autorise le pair B à se connecter
  • La connexion est établie

La séquence de signalisation décrite n'implique pas de serveur de signalisation. Par conséquent, une application utilisant la signalisation par le son peut être, par exemple, servie par une page web statique. La seule exigence est de contrôler les périphériques de sortie/capture audio.

Une limitation évidente (fonctionnalité) de l'approche actuelle est que seuls les appareils à proximité (par exemple dans la même pièce) peuvent établir une connexion entre eux. De plus, les appareils doivent être connectés au même réseau local, car le NAT n'est pas disponible.

Émission/Réception sonore

Les données communiquées par le son contiennent les informations de contact nécessaires pour initialiser la connexion WebRTC. Ces données sont stockées au format Session Description Protocol (SDP). Étant donné que la transmission de données par le son a des limitations importantes en termes de bande passante et de robustesse, il est souhaitable de transmettre le moins de données possible. Par conséquent, le SDP est dépouillé de toutes les informations non pertinentes et seules les données essentielles nécessaires à l'établissement de la connexion sont transmises. Actuellement, le paquet sonore contenant les données SDP minimales requises a le format suivant :

La taille totale du paquet audio est de 112 octets. Avec l'algorithme d'encodage audio actuel, le paquet SDP peut être transmis en 5 à 10 secondes (selon le protocole Tx utilisé). L'utilisation de protocoles plus lents permet une transmission plus fiable dans des environnements bruyants ou si les appareils de communication sont éloignés les uns des autres.

Encodage données-vers-son

L'approche actuelle utilise un schéma de modulation multi-fréquence Frequency-Shift Keying (FSK). Les données à transmettre sont d'abord divisées en morceaux de 4 bits. À chaque instant, 3 octets sont transmis en utilisant 6 tonalités - une tonalité pour chaque morceau de 4 bits. Les 6 tonalités sont émises dans une plage de 4,5 kHz divisée en 96 fréquences régulièrement espacées :

Pour tous les protocoles : dF = 46.875 Hz. Pour les protocoles non ultrasoniques : F0 = 1875.000 Hz. Pour les protocoles ultrasoniques : F0 = 15000.000 Hz.

Obtention de l'adresse IP locale

Pour plus de commodité, un simple hack WebRTC est utilisé pour détecter automatiquement l'adresse IP locale de votre machine, afin que vous n'ayez pas à la fournir manuellement. Cependant, la dernière spécification WebRTC empêche cela pour des raisons de sécurité, donc à un moment donné, cette « fonctionnalité » cessera de fonctionner dans tous les navigateurs. Par exemple, elle ne fonctionne plus sur Safari.

Compilation

Module Web Assembly wave.wasm

Vous aurez besoin d'un compilateur Emscripten. Exécutez le script compile.sh.

Outil CLI wave-share


Important : Cet outil CLI était le prototype de la bibliothèque désormais autonome ggwave. Assurez-vous de la consulter, car elle contient des exemples plus récents pour l'application de ce type de communication par données sonores.


Il s'agit d'un outil simple qui reçoit et envoie des données en utilisant le protocole d'émission/réception sonore wave-share expliqué. Saisissez du texte dans l'entrée standard et appuyez sur Entrée pour transmettre.

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

# running
./wave-share

Voici une courte vidéo montrant comment utiliser l'outil CLI :

Wave-share : outil en ligne de commande

Problèmes connus / choses à améliorer

  • Ne fonctionne pas avec : IE, IE Edge, Chrome/Firefox sur iOS, Safari sur macOS
  • La transmission sonore ultrasonique ne fonctionne pas sur la plupart des appareils. Limitations matérielles probablement ?
  • En présence de plusieurs réseaux locaux, impossible de choisir lequel utiliser actuellement. Toujours le premier est utilisé
  • Il y a parfois des craquements sonores pendant la transmission. Besoin d'optimiser le code Tx
  • La taille du .js généré par Emscripten est trop grande (~1 Mo). Réécrire en pur JS ?
  • Sur mobile, avec Firefox, la page peut rester en arrière-plan même après la fermeture de l'onglet
Télécharger l’outil
Taille, [B]Description
1Type du SDP - Offre ou Réponse
1Taille du paquet en octets (sans les octets ECC)
4Adresse IP du pair émetteur
2Port réseau qui sera utilisé pour la communication
32Empreinte SHA-256 des données de session
40Identifiants ICE - 16 octets nom d'utilisateur + 24 octets mot de passe
32Octets de correction ECC utilisés pour corriger les erreurs lors de la Tx
Fréq, [Hz]Valeur, [bits]Fréq, [Hz]Valeur, [bits]...Fréq, [Hz]Valeur, [bits]
F0 + 00*dFMorceau 0 : 0000F0 + 16*dFMorceau 1 : 0000...F0 + 80*dFMorceau 5 : 0000
F0 + 01*dFMorceau 0 : 0001F0 + 17*dFMorceau 1 : 0001...F0 + 81*dFMorceau 5 : 0001
F0 + 02*dFMorceau 0 : 0010F0 + 18*dFMorceau 1 : 0010...F0 + 82*dFMorceau 5 : 0010
.....................
F0 + 14*dFMorceau 0 : 1110F0 + 30*dFMorceau 1 : 1110...F0 + 94*dFMorceau 5 : 1110
F0 + 15*dFMorceau 0 : 1111F0 + 31*dFMorceau 1 : 1111...F0 + 95*dFMorceau 5 : 1111