
Um número de telefone pode revelar se um dispositivo está ativo, em espera ou offline (e mais). Esta Prova de Conceito demonstra como recibos de entrega + temporização RTT vazam padrões de atividade sensíveis do dispositivo. (WhatsApp / Signal)
Rastreador de Atividade do WhatsApp e Signal via Análise RTT
⚠️ AVISO: Prova de conceito apenas para fins educacionais e de pesquisa em segurança. Demonstra vulnerabilidades de privacidade no WhatsApp e Signal.
Este projeto implementa a pesquisa do artigo "Careless Whisper: Exploiting Silent Delivery Receipts to Monitor Users on Mobile Instant Messengers" de Gabriel K. Gegenhuber, Maximilian Günther, Markus Maier, Aljosha Judmayer, Florian Holzbauer, Philipp É. Frenzel e Johanna Ullrich (Universidade de Viena & SBA Research).
O que faz: Medindo o Round-Trip Time (RTT) dos recibos de entrega de mensagens do WhatsApp, esta ferramenta pode detectar:
Implicações de segurança: Isso demonstra uma vulnerabilidade significativa de privacidade em aplicativos de mensagens que pode ser explorada para vigilância.
![]()
A interface web mostra medições de RTT em tempo real, detecção do estado do dispositivo e padrões de atividade.
# Clonar repositório
git clone https://github.com/gommzystudio/device-activity-tracker.git
cd device-activity-tracker
# Instalar dependências
npm install
cd client && npm install && cd ..
Requisitos: Node.js 20+, npm, conta WhatsApp
A maneira mais fácil de executar a aplicação é usando Docker:
# Copiar modelo de ambiente
cp .env.example .env
# (Opcional) Personalizar portas no arquivo .env
# BACKEND_PORT=3001
# CLIENT_PORT=3000
# Construir e iniciar containers
docker compose up --build
A aplicação estará disponível em:
CLIENT_PORT configurada)BACKEND_PORT configurada)Para parar os containers:
docker compose down
# Terminal 1: Iniciar backend
npm run start:server
# Terminal 2: Iniciar frontend
npm run start:client
Abra http://localhost:3000, escaneie o código QR com WhatsApp, depois insira o número de telefone a ser rastreado (ex.: 491701234567).
npm start
Siga as instruções para autenticar e inserir o número alvo.
Exemplo de Saída:
╔════════════════════════════════════════════════════════════════╗
║ 🟡 Atualização de Estado do Dispositivo - 09:41:51 ║
╠════════════════════════════════════════════════════════════════╣
║ JID: ***********@lid ║
║ Estado: Em Espera ║
║ RTT: 1104ms ║
║ Média (3): 1161ms ║
║ Mediana: 1195ms ║
║ Limiar: 1075ms ║
╚════════════════════════════════════════════════════════════════╝
O rastreador envia mensagens de prova e mede o Round-Trip Time (RTT) para detectar a atividade do dispositivo. Dois métodos de prova estão disponíveis:
| Método | Descrição |
|---|---|
| Excluir (Padrão) | Envia uma solicitação de "exclusão" para um ID de mensagem inexistente. |
| Reação | Envia um emoji de reação para um ID de mensagem inexistente. |
O tempo entre o envio da mensagem de prova e o recebimento do ACK do CLIENT (Status 3) é medido como RTT. O estado do dispositivo é detectado usando um limiar dinâmico calculado como 90% da mediana do RTT: valores abaixo do limiar indicam uso ativo, valores acima indicam modo de espera. As medições são armazenadas em um histórico e a mediana é continuamente atualizada para se adaptar a diferentes condições de rede.
Na interface web, você pode alternar entre métodos de prova usando o menu suspenso no painel de controle. No modo CLI, o método de exclusão é usado por padrão.
auth_info_baileys/ e escaneie novamente o código QR.device-activity-tracker/
├── src/
│ ├── tracker.ts # Lógica de análise RTT do WhatsApp
│ ├── signal-tracker.ts # Lógica de análise RTT do Signal
│ ├── server.ts # Servidor da API backend (ambas plataformas)
│ └── index.ts # Interface CLI
├── client/ # Interface web React
└── package.json
A mitigação mais eficaz é ativar “Bloquear mensagens de contas desconhecidas” no WhatsApp em Configurações → Privacidade → Avançado.
Essa configuração pode reduzir a capacidade de um invasor de enviar reações de prova de números desconhecidos, pois o WhatsApp bloqueia mensagens de alto volume de contas desconhecidas. No entanto, o WhatsApp não divulga o que significa “alto volume”, portanto, isso não impede completamente que um invasor envie um número significativo de reações de prova antes que a limitação de taxa entre em ação.
Desativar os recibos de leitura ajuda com mensagens comuns, mas não protege contra este ataque específico. Em dezembro de 2025, esta vulnerabilidade permanece explorável no WhatsApp e Signal.
⚠️ Apenas para fins de pesquisa e educacionais. Nunca rastreie pessoas sem consentimento explícito – isso pode violar leis de privacidade. Os dados de autenticação (auth_info_baileys/) são armazenados localmente e nunca devem ser commitados no controle de versão.
Baseado em pesquisa de Gegenhuber et al., Universidade de Viena & SBA Research:
@inproceedings{gegenhuber2024careless,
title={Careless Whisper: Exploiting Silent Delivery Receipts to Monitor Users on Mobile Instant Messengers},
author={Gegenhuber, Gabriel K. and G{\"u}nther, Maximilian and Maier, Markus and Judmayer, Aljosha and Holzbauer, Florian and Frenzel, Philipp {\'E}. and Ullrich, Johanna},
year={2024},
organization={University of Vienna, SBA Research}
}
Licença MIT – Veja o arquivo LICENSE.
Construído com @whiskeysockets/baileys
Use com responsabilidade. Esta ferramenta demonstra vulnerabilidades reais de segurança que afetam milhões de usuários.