WiFi Audio Streaming
(WFAS)
Streaming audio sulla rete locale. Sperimentale, open source, senza audit di sicurezza.
WFAS è un progetto personale che trasmette l'audio del PC a uno smartphone, a una Smart TV o a un Raspberry Pi tramite la rete Wi-Fi locale, e permette anche di usare un dispositivo Android come microfono wireless. È gratuito e open source. Sono uno studente di ingegneria e ci lavoro nel tempo libero, quindi aspettati qualche imperfezione.
Come funziona
Installa
Installa l'app sul dispositivo che invia l'audio (server) e su quello che lo riceve (client). Su Android l'app può fare entrambi i ruoli.
Connetti
I dispositivi sulla stessa rete si trovano automaticamente, oppure puoi inserire l'IP manualmente.
Ascolta
L'audio viene trasmesso in tempo reale, con qualità configurabile. La latenza dipende dalla rete e dall'hardware.
Cosa fa
Nessun driver audio di terze parti
Su Windows e macOS la cattura dell'audio di sistema è affidata a un motore nativo integrato nell'app, quindi non serve alcun driver audio virtuale di terze parti. Su Linux viene creato automaticamente un sink virtuale PulseAudio/PipeWire.
Gratuito
Nessun livello a pagamento, nessun limite di tempo, nessuna pubblicità. Il codice è open source.
Il codice è pubblico
Il codice sorgente è su GitHub: puoi leggerlo, compilarlo e verificare cosa fa. Revisioni e segnalazioni di bug sono benvenute.
Sicurezza sperimentale
Autenticazione a chiave e cifratura ChaCha20-Poly1305 opzionali, descritte in una specifica di protocollo pubblica. È un'implementazione mia e non è stata sottoposta ad audit.
Modalità a riga di comando
Una modalità a riga di comando con visualizzatore dello spettro e, su Android, automazione tramite URI, broadcast intent e ADB.
Quattro piattaforme
Windows, macOS, Linux e Android, ciascuna con l'API audio nativa della piattaforma. Il comportamento può variare da una piattaforma all'altra.
Sicurezza
Le funzioni di sicurezza fanno parte del protocollo e sono tutte opzionali. Sono un'implementazione sperimentale scritta da uno studente e non sono state sottoposte ad audit: leggi il disclaimer qui sotto prima di farvi affidamento.
- Autenticazione a chiave: i dispositivi dimostrano di conoscere la stessa chiave senza inviare la chiave stessa sulla rete.
- Cifratura ChaCha20-Poly1305: cifratura opzionale del flusso audio. Non sottoposta ad audit.
- Specifica pubblica: la specifica del protocollo è su GitHub, aperta a revisioni e critiche.
WFAS è un progetto personale di uno studente di ingegneria. Le sue funzioni di sicurezza (autenticazione a chiave, cifratura ChaCha20-Poly1305, controlli anti-replay) sono un'implementazione sperimentale che ho scritto io stesso mentre imparavo. Non sono mai state sottoposte ad alcun audit di sicurezza formale né a una revisione indipendente.
- Ti chiedo di non fare affidamento su WFAS per proteggere audio o dati sensibili, riservati o critici per la sicurezza.
- Ti chiedo di non usarlo su reti pubbliche, aziendali, scolastiche o comunque non fidate.
- La cifratura è una misura "best effort" pensata per una rete domestica di cui ti fidi. Non sostituisce una soluzione verificata e sottoposta ad audit.
- Potrebbero esserci vulnerabilità o errori di progettazione di cui non sono a conoscenza.
Il software è fornito "così com'è", senza garanzie di alcun tipo, secondo i termini delle sue licenze. Se trovi un problema, ti sarei grato se lo segnalassi su GitHub.
Modalità CLI
È disponibile anche una modalità da riga di comando, con un visualizzatore dello spettro in tempo reale nel terminale.
Changelog
Note di rilascio delle app Desktop e Android.
Per sviluppatori
La libreria del protocollo è separata dalle app e rilasciata con licenza MIT. È scritta in C99 pensando ai sistemi embedded, evita l'allocazione dinamica e le sue primitive crittografiche sono verificate con i vettori di test pubblicati negli RFC. Superare i vettori di test non rende sicuro il progetto nel suo insieme.