
Un numéro de téléphone peut révéler si un appareil est actif, en veille ou hors ligne (et plus encore). Cette POC démontre comment les accusés de réception + le timing RTT divulguent des modèles sensibles d'activité de l'appareil. (WhatsApp / Signal)
Tracker d'Activité WhatsApp et Signal via Analyse RTT
⚠️ AVERTISSEMENT : Preuve de concept à des fins éducatives et de recherche en sécurité uniquement. Démontre des vulnérabilités de confidentialité dans WhatsApp et Signal.
Ce projet implémente les recherches de l'article « Careless Whisper: Exploiting Silent Delivery Receipts to Monitor Users on Mobile Instant Messengers » par Gabriel K. Gegenhuber, Maximilian Günther, Markus Maier, Aljosha Judmayer, Florian Holzbauer, Philipp É. Frenzel et Johanna Ullrich (Université de Vienne & SBA Research).
Ce qu'il fait : En mesurant le temps aller-retour (Round-Trip Time, RTT) des accusés de réception de messages WhatsApp, cet outil peut détecter :
Implications en matière de sécurité : Cela démontre une vulnérabilité significative de la vie privée dans les applications de messagerie qui peut être exploitée à des fins de surveillance.
![]()
L'interface web affiche les mesures RTT en temps réel, la détection de l'état de l'appareil et les schémas d'activité.
# Clone repository
git clone https://github.com/gommzystudio/device-activity-tracker.git
cd device-activity-tracker
# Install dependencies
npm install
cd client && npm install && cd ..
Prérequis : Node.js 20+, npm, compte WhatsApp
La façon la plus simple d'exécuter l'application est d'utiliser Docker :
# Copy environment template
cp .env.example .env
# (Optional) Customize ports in .env file
# BACKEND_PORT=3001
# CLIENT_PORT=3000
# Build and start containers
docker compose up --build
L'application sera accessible à :
CLIENT_PORT configuré)BACKEND_PORT configuré)Pour arrêter les conteneurs :
docker compose down
# Terminal 1: Start backend
npm run start:server
# Terminal 2: Start frontend
npm run start:client
Ouvrez http://localhost:3000, scannez le code QR avec WhatsApp, puis saisissez le numéro de téléphone à suivre (par exemple, 491701234567).
npm start
Suivez les invites pour vous authentifier et saisir le numéro cible.
Exemple de sortie :
╔════════════════════════════════════════════════════════════════╗
║ 🟡 Device Status Update - 09:41:51 ║
╠════════════════════════════════════════════════════════════════╣
║ JID: ***********@lid ║
║ Status: Standby ║
║ RTT: 1104ms ║
║ Avg (3): 1161ms ║
║ Median: 1195ms ║
║ Threshold: 1075ms ║
╚════════════════════════════════════════════════════════════════╝
Le tracker envoie des messages de sonde et mesure le temps aller-retour (RTT) pour détecter l'activité de l'appareil. Deux méthodes de sonde sont disponibles :
| Méthode | Description |
|---|---|
| Suppression (par défaut) | Envoie une requête de « suppression » pour un ID de message inexistant. |
| Réaction | Envoie un emoji de réaction à un ID de message inexistant. |
Le temps entre l'envoi du message de sonde et la réception du CLIENT ACK (Statut 3) est mesuré comme RTT. L'état de l'appareil est détecté à l'aide d'un seuil dynamique calculé comme 90 % du RTT médian : les valeurs inférieures au seuil indiquent une utilisation active, les valeurs supérieures indiquent un mode veille. Les mesures sont stockées dans un historique et la médiane est mise à jour en continu pour s'adapter aux différentes conditions réseau.
Dans l'interface web, vous pouvez changer de méthode de sonde à l'aide du menu déroulant dans le panneau de contrôle. En mode CLI, la méthode de suppression est utilisée par défaut.
auth_info_baileys/ et rescannenez le code QR.device-activity-tracker/
├── src/
│ ├── tracker.ts # WhatsApp RTT analysis logic
│ ├── signal-tracker.ts # Signal RTT analysis logic
│ ├── server.ts # Backend API server (both platforms)
│ └── index.ts # CLI interface
├── client/ # React web interface
└── package.json
L'atténuation la plus efficace consiste à activer « Bloquer les messages de comptes inconnus » dans WhatsApp sous Paramètres → Confidentialité → Paramètres avancés.
Ce paramètre peut réduire la capacité d'un attaquant à envoyer des réactions de sonde depuis des numéros inconnus, car WhatsApp bloque les messages à volume élevé provenant de comptes inconnus. Cependant, WhatsApp ne divulgue pas ce que signifie « volume élevé », donc cela n'empêche pas complètement un attaquant d'envoyer un nombre significatif de réactions de sonde avant que le limiteur de débit n'agisse.
La désactivation des accusés de réception de lecture aide pour les messages normaux, mais ne protège pas contre cette attaque spécifique. En décembre 2025, cette vulnérabilité reste exploitable dans WhatsApp et Signal.
⚠️ À des fins de recherche et d'éducation uniquement. Ne suivez jamais des personnes sans leur consentement explicite – cela peut violer les lois sur la vie privée. Les données d'authentification (auth_info_baileys/) sont stockées localement et ne doivent jamais être soumises au contrôle de version.
Basé sur les recherches de Gegenhuber et al., Université de Vienne & 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}
}
Licence MIT – Voir le fichier LICENSE.
Construit avec @whiskeysockets/baileys
Utilisez de manière responsable. Cet outil démontre des vulnérabilités de sécurité réelles qui affectent des millions d'utilisateurs.