Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
wave-share — Condivisione di file locale peer-to-peer senza server tramite suono | Kitploit
Strumenti/GitHubGitHub/ggerganov/wave-share
Esfiltrazione DatiSicurezza WirelessUtilità e FrameworkApprendimento e Formazione
GitHubggerganov/wave-share

wave-share

Condivisione di file locale peer-to-peer senza server tramite suono

Vedi Repository
2.3k1485 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web

wave-share

Una prova di concetto per la segnalazione WebRTC tramite suono. Funziona con tutti i dispositivi che hanno microfono + altoparlanti. Viene eseguito nel browser.

I dispositivi vicini negoziano la connessione WebRTC scambiando i dati necessari del Session Description Protocol (SDP) tramite una sequenza di toni audio. Dopo una negoziazione riuscita, viene stabilita una connessione WebRTC locale tra i browser, permettendo lo scambio di dati tramite LAN.

Vedilo in azione (video di 2 minuti):

CG++ Dati tramite suono

Provalo tu stesso: ggerganov.github.io/wave-share

Ultime notizie:
Ho estratto l'algoritmo dati-su-suono in una libreria standalone chiamata ggwave.
Può essere facilmente integrata in altri progetti.

Come funziona

La tecnologia WebRTC consente a due browser in esecuzione su dispositivi diversi di connettersi tra loro e scambiare dati. Non è necessario installare plugin o scaricare applicazioni. Per avviare la connessione, i peer si scambiano informazioni di contatto (indirizzo IP, porte di rete, ID di sessione, ecc.). Questo processo è chiamato "signaling". La specifica WebRTC non definisce alcuno standard per il signaling - lo scambio di contatti può essere realizzato con qualsiasi protocollo o tecnologia.

In questo progetto il signaling viene eseguito tramite suono. La sequenza di signaling è la seguente:

  • Il peer A trasmette un'offerta per una connessione WebRTC codificando i dati di sessione in toni audio
  • I peer vicini catturano il suono emesso dal peer A e decodificano i dati di sessione WebRTC
  • Il peer B, che vuole stabilire una connessione con il peer A, risponde con una risposta audio. La risposta contiene le informazioni di contatto del peer B codificate. Inoltre, il peer B inizia a tentare di connettersi al peer A
  • Il peer A riceve la risposta dal peer B, decodifica i dati di contatto trasmessi e permette al peer B di connettersi
  • La connessione è stabilita

La sequenza di signaling descritta non coinvolge un server di signaling. Pertanto, un'applicazione che utilizza il signaling tramite suono può essere servita, ad esempio, da una pagina web statica. L'unico requisito è avere il controllo sui dispositivi di uscita/cattura audio.

Un'ovvia limitazione (caratteristica) dell'approccio attuale è che solo i dispositivi vicini (ad esempio nella stessa stanza) possono stabilire una connessione tra loro. Inoltre, i dispositivi devono essere connessi nella stessa rete locale, poiché NAT non è disponibile.

Suono Tx/Rx

I dati comunicati tramite suono contengono le informazioni di contatto necessarie per inizializzare la connessione WebRTC. Questi dati sono memorizzati nel formato Session Description Protocol (SDP). Poiché i dati-su-suono hanno limitazioni significative in termini di larghezza di banda e robustezza, è desiderabile trasmettere il minor numero possibile di dati. Pertanto, l'SDP viene privato di tutte le informazioni irrilevanti e vengono trasmessi solo i dati essenziali necessari per stabilire la connessione. Attualmente, il pacchetto audio contenente i dati SDP minimi richiesti ha il seguente formato:

La dimensione totale del pacchetto audio è di 112 byte. Con l'attuale algoritmo di codifica audio, il pacchetto SDP può essere trasmesso in 5-10 secondi (a seconda del protocollo Tx utilizzato). L'uso di protocolli più lenti offre una trasmissione più affidabile in ambienti rumorosi o se i dispositivi comunicanti sono lontani tra loro.

Codifica da dati a suono

L'approccio attuale utilizza uno schema di modulazione a Frequency-Shift Keying (FSK) multifrequenza. I dati da trasmettere vengono prima suddivisi in blocchi di 4 bit. In ogni momento, vengono trasmessi 3 byte utilizzando 6 toni - un tono per ogni blocco di 4 bit. I 6 toni vengono emessi in un intervallo di 4,5 kHz suddiviso in 96 frequenze equispaziate:

Per tutti i protocolli: dF = 46.875 Hz. Per i protocolli non ultrasonici: F0 = 1875.000 Hz. Per i protocolli ultrasonici: F0 = 15000.000 Hz.

Ottenere l'indirizzo IP locale

Per comodità, viene utilizzato un semplice hack WebRTC per rilevare automaticamente l'indirizzo IP locale della tua macchina, così non devi fornirlo manualmente. Tuttavia, l'ultima specifica WebRTC impedisce ciò per motivi di sicurezza, quindi a un certo punto questa "funzionalità" smetterà di funzionare in tutti i browser. Ad esempio, non funziona più su Safari.

Compilazione

Modulo Web Assembly wave.wasm

Avrai bisogno di un compilatore Emscripten. Esegui lo script compile.sh.

Strumento CLI wave-share


Importante: Questo strumento CLI è stato il prototipo per l'ora libreria standalone ggwave. Assicurati di darle un'occhiata, poiché contiene esempi più aggiornati per l'applicazione di questo tipo di comunicazione dati-su-suono.


Questo è un semplice strumento che riceve e invia dati utilizzando il protocollo suono tx/rx wave-share spiegato. Digita del testo sull'input standard e premi Invio per trasmettere.

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

# running
./wave-share

Ecco un breve video che dimostra come usare lo strumento CLI:

Wave-share: strumento da riga di comando

Problemi noti / cose da migliorare

  • Non funziona con: IE, IE Edge, Chrome/Firefox su iOS, Safari su macOS
  • La trasmissione sonora ultrasonica non funziona sulla maggior parte dei dispositivi. Probabilmente limitazioni hardware?
  • In presenza di più reti locali, al momento non è possibile selezionare quale utilizzare. Viene sempre utilizzata la prima
  • Occasionalmente si verificano crepitii sonori durante la trasmissione. Necessario ottimizzare il codice Tx
  • La dimensione del file .js generato da emscripten è troppo grande (~1MB). Riscrivere in JS puro?
  • Su mobile, con Firefox, la pagina può rimanere in esecuzione in background anche dopo aver chiuso la scheda
Scarica lo strumento
Dimensione, [B]Descrizione
1Tipo di SDP - Offerta o Risposta
1Dimensione del pacchetto in byte (esclusi i byte ECC)
4Indirizzo IP del peer trasmittente
2Porta di rete che verrà utilizzata per la comunicazione
32Impronta digitale SHA-256 dei dati di sessione
40Credenziali ICE - 16 byte username + 24 byte password
32Byte di correzione ECC utilizzati per correggere errori durante la Tx
Freq, [Hz]Valore, [bit]Freq, [Hz]Valore, [bit]...Freq, [Hz]Valore, [bit]
F0 + 00*dFChunk 0: 0000F0 + 16*dFChunk 1: 0000...F0 + 80*dFChunk 5: 0000
F0 + 01*dFChunk 0: 0001F0 + 17*dFChunk 1: 0001...F0 + 81*dFChunk 5: 0001
F0 + 02*dFChunk 0: 0010F0 + 18*dFChunk 1: 0010...F0 + 82*dFChunk 5: 0010
.....................
F0 + 14*dFChunk 0: 1110F0 + 30*dFChunk 1: 1110...F0 + 94*dFChunk 5: 1110
F0 + 15*dFChunk 0: 1111F0 + 31*dFChunk 1: 1111...F0 + 95*dFChunk 5: 1111