Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
wave-share — Sem servidor, ponto a ponto, compartilhamento de arquivos local através de som. | Kitploit
Ferramentas/GitHubGitHub/ggerganov/wave-share
Exfiltração de DadosSegurança Sem FioUtilitários e FrameworksAprendizado e Educação
GitHubggerganov/wave-share

wave-share

Sem servidor, ponto a ponto, compartilhamento de arquivos local através de som.

Ver Repositório
2.3k148há 5 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site

wave-share

Uma prova de conceito para sinalização WebRTC usando som. Funciona com todos os dispositivos que possuem microfone + alto-falantes. Roda no navegador.

Dispositivos próximos negociam a conexão WebRTC trocando os dados necessários do Session Description Protocol (SDP) por meio de uma sequência de tons de áudio. Após a negociação bem-sucedida, uma conexão WebRTC local é estabelecida entre os navegadores, permitindo a troca de dados via LAN.

Veja em ação (vídeo de 2 minutos):

CG++ Dados sobre som

Experimente você mesmo: ggerganov.github.io/wave-share

Novidades:
Extraí o algoritmo de dados sobre som em uma biblioteca independente chamada ggwave.
Ela pode ser incorporada facilmente em outros projetos.

Como funciona

A tecnologia WebRTC permite que dois navegadores rodando em dispositivos diferentes se conectem e troquem dados. Não é necessário instalar plugins ou baixar aplicativos. Para iniciar a conexão, os pares trocam informações de contato (endereço IP, portas de rede, ID de sessão, etc.). Esse processo é chamado de "sinalização". A especificação WebRTC não define um padrão para sinalização – a troca de contatos pode ser feita por qualquer protocolo ou tecnologia.

Neste projeto, a sinalização é realizada via som. A sequência de sinalização é a seguinte:

  • O Par A transmite uma oferta para uma conexão WebRTC codificando os dados da sessão em tons de áudio
  • O(s) par(es) próximo(s) capturam o som emitido pelo Par A e decodificam os dados da sessão WebRTC
  • O Par B, que deseja estabelecer conexão com o Par A, responde com uma resposta em áudio. A resposta contém as informações de contato do Par B codificadas. Além disso, o Par B começa a tentar se conectar ao Par A
  • O Par A recebe a resposta do Par B, decodifica os dados de contato transmitidos e permite que o Par B se conecte
  • A conexão é estabelecida

Diagrama do esquema do wave-share

A sequência de sinalização descrita não envolve um servidor de sinalização. Portanto, uma aplicação que usa sinalização através de som pode, por exemplo, ser servida por uma página web estática. O único requisito é ter controle sobre os dispositivos de saída/captura de áudio.

Uma limitação (característica) óbvia da abordagem atual é que apenas dispositivos próximos (por exemplo, na mesma sala) podem estabelecer conexão entre si. Além disso, os dispositivos precisam estar conectados na mesma rede local, pois o NAT não está disponível.

Transmissão/Recepção de Som

Os dados comunicados através do som contêm as informações de contato necessárias para inicializar a conexão WebRTC. Esses dados são armazenados no formato Session Description Protocol (SDP). Como a transmissão de dados sobre som tem limitações significativas em termos de largura de banda e robustez, é desejável transmitir o mínimo possível de dados. Portanto, o SDP é limpo de todas as informações irrelevantes e apenas os dados essenciais para estabelecer a conexão são transmitidos. Atualmente, o pacote de som contendo os dados mínimos do SDP tem o seguinte formato:

O tamanho total do pacote de áudio é 112 bytes. Com o algoritmo de codificação de áudio atual, o pacote SDP pode ser transmitido em 5 a 10 segundos (dependendo do protocolo de Tx utilizado). O uso de protocolos mais lentos proporciona uma transmissão mais confiável em ambientes ruidosos ou se os dispositivos comunicantes estiverem distantes um do outro.

Codificação de dados para som

A abordagem atual utiliza um esquema de modulação Frequency-Shift Keying (FSK) multifrequencial. Os dados a serem transmitidos são primeiro divididos em blocos de 4 bits. Em cada momento, 3 bytes são transmitidos usando 6 tons – um tom para cada bloco de 4 bits. Os 6 tons são emitidos em uma faixa de 4,5 kHz dividida em 96 frequências igualmente espaçadas:

Para todos os protocolos: dF = 46,875 Hz. Para protocolos não ultrassônicos: F0 = 1875,000 Hz. Para protocolos ultrassônicos: F0 = 15000,000 Hz.

Obtendo o endereço IP local

Por conveniência, um simples hack WebRTC é usado para detectar automaticamente o endereço IP local da sua máquina, para que você não precise fornecê-lo manualmente. No entanto, a especificação WebRTC mais recente impede que isso seja possível por razões de segurança, então em algum momento esse "recurso" deixará de funcionar em todos os navegadores. Por exemplo, não funciona mais no Safari.

Compilação

Módulo Web Assembly wave.wasm

Você precisará de um compilador Emscripten. Execute o script compile.sh.

Ferramenta CLI wave-share


Importante: Esta ferramenta CLI foi o protótipo para a agora biblioteca independente ggwave. Certifique-se de conferi-la, pois possui exemplos mais atualizados para a aplicação deste tipo de comunicação de dados sobre som.


Esta é uma ferramenta simples que recebe e envia dados usando o protocolo tx/rx de som wave-share explicado. Digite algum texto na entrada padrão e pressione Enter para transmitir.

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

# execução
./wave-share

Aqui está um pequeno vídeo demonstrando como usar a ferramenta CLI:

Wave-share: ferramenta de linha de comando

Problemas conhecidos / coisas a melhorar

  • Não funciona com: IE, IE Edge, Chrome/Firefox no iOS, Safari no macOS
  • A transmissão de som ultrassônico não funciona na maioria dos dispositivos. Provavelmente limitações de hardware?
  • Na presença de várias redes locais, atualmente não é possível selecionar qual usar. Sempre a primeira é usada
  • Ocasionalmente há ruídos de estalo durante a transmissão. Precisa otimizar o código de Tx
  • O tamanho do .js gerado pelo emscripten é muito grande (~1MB). Reescrever em JS puro?
  • Em dispositivos móveis, usando Firefox, a página pode continuar rodando em segundo plano mesmo após fechar a aba
Baixar ferramenta
Tamanho, [B]Descrição
1Tipo do SDP – Oferta ou Resposta
1Tamanho do pacote em bytes (não incluindo bytes de ECC)
4Endereço IP do par transmissor
2Porta de rede que será usada para a comunicação
32Impressão digital SHA-256 dos dados da sessão
40Credenciais ICE – 16 bytes de nome de usuário + 24 bytes de senha
32Bytes de correção ECC usados para corrigir erros durante a Tx
Freq, [Hz]Valor, [bits]Freq, [Hz]Valor, [bits]...Freq, [Hz]Valor, [bits]
F0 + 00*dFBloco 0: 0000F0 + 16*dFBloco 1: 0000...F0 + 80*dFBloco 5: 0000
F0 + 01*dFBloco 0: 0001F0 + 17*dFBloco 1: 0001...F0 + 81*dFBloco 5: 0001
F0 + 02*dFBloco 0: 0010F0 + 18*dFBloco 1: 0010...F0 + 82*dFBloco 5: 0010
.....................
F0 + 14*dFBloco 0: 1110F0 + 30*dFBloco 1: 1110...F0 + 94*dFBloco 5: 1110
F0 + 15*dFBloco 0: 1111F0 + 31*dFBloco 1: 1111...F0 + 95*dFBloco 5: 1111