device-activity-tracker README

The project's README from github.com/gommzystudio/device-activity-tracker. As one markdown file: README.md.

Device Activity Tracker

WhatsApp & Signal Activity Tracker via RTT Analysis

Node.js TypeScript React License MIT

⚠️ DISCLAIMER: Proof-of-concept for educational and security research purposes only. Demonstrates privacy vulnerabilities in WhatsApp and Signal.

Overview

This project implements the research from the paper "Careless Whisper: Exploiting Silent Delivery Receipts to Monitor Users on Mobile Instant Messengers" by Gabriel K. Gegenhuber, Maximilian Günther, Markus Maier, Aljosha Judmayer, Florian Holzbauer, Philipp É. Frenzel, and Johanna Ullrich (University of Vienna & SBA Research).

What it does: By measuring Round-Trip Time (RTT) of WhatsApp message delivery receipts, this tool can detect:

Security implications: This demonstrates a significant privacy vulnerability in messaging apps that can be exploited for surveillance.

Example

WhatsApp Activity Tracker Interface

The web interface shows real-time RTT measurements, device state detection, and activity patterns.

Installation

# 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 ..

Requirements: Node.js 20+, npm, WhatsApp account

Usage

The easiest way to run the application is using 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

The application will be available at:

To stop the containers:

docker compose down

Manual Setup

Web Interface

# Terminal 1: Start backend
npm run start:server

# Terminal 2: Start frontend
npm run start:client

Open http://localhost:3000, scan QR code with WhatsApp, then enter phone number to track (e.g., 491701234567).

CLI Interface (only WhatsApp)

npm start

Follow prompts to authenticate and enter target number.

Example Output:

╔════════════════════════════════════════════════════════════════╗
║ 🟡 Device Status Update - 09:41:51                             ║
╠════════════════════════════════════════════════════════════════╣
║ JID:        ***********@lid                                    ║
║ Status:     Standby                                            ║
║ RTT:        1104ms                                             ║
║ Avg (3):    1161ms                                             ║
║ Median:     1195ms                                             ║
║ Threshold:  1075ms                                             ║
╚════════════════════════════════════════════════════════════════╝

How It Works

The tracker sends probe messages and measures the Round-Trip Time (RTT) to detect device activity. Two probe methods are available:

Probe Methods

Method Description
Delete (Default) Sends a "delete" request for a non-existent message ID.
Reaction Sends a reaction emoji to a non-existent message ID.

Detection Logic

The time between sending the probe message and receiving the CLIENT ACK (Status 3) is measured as RTT. Device state is detected using a dynamic threshold calculated as 90% of the median RTT: values below the threshold indicate active usage, values above indicate standby mode. Measurements are stored in a history and the median is continuously updated to adapt to different network conditions.

Switching Probe Methods

In the web interface, you can switch between probe methods using the dropdown in the control panel. In CLI mode, the delete method is used by default.

Common Issues

Project Structure

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

How to Protect Yourself

The most effective mitigation is to enable “Block unknown account messages” in WhatsApp under Settings → Privacy → Advanced.

This setting may reduce an attacker’s ability to spam probe reactions from unknown numbers, because WhatsApp blocks high-volume messages from unknown accounts. However, WhatsApp does not disclose what “high volume” means, so this does not fully prevent an attacker from sending a significant number of probe reactions before rate-limiting kicks in.

Disabling read receipts helps with regular messages but does not protect against this specific attack. As of December 2025, this vulnerability remains exploitable in WhatsApp and Signal.

⚠️ For research and educational purposes only. Never track people without explicit consent - this may violate privacy laws. Authentication data (auth_info_baileys/) is stored locally and must never be committed to version control.

Citation

Based on research by Gegenhuber et al., University of Vienna & 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}
}

License

MIT License - See LICENSE file.

Built with @whiskeysockets/baileys


Use responsibly. This tool demonstrates real security vulnerabilities that affect millions of users.

Star History

Star History Chart

device-activity-tracker (gommzystudio/device-activity-tracker)

Searching Database…

Что это?Это исследовательский инструмент безопасности (proof-of-concept), который следит за пользователями WhatsApp и Signal, измеряя Round-Trip Time (RTT) уведомлений о доставке сообщений, и показывает, активно ли используется устройство цели, простаивает или офлайн.
Как его запустить?Быстрее всего через Docker: выполните 'docker compose up', чтобы поднять и фронтенд, и бэкенд. Для ручной установки нужны Node.js 20+ и npm, затем откройте веб-интерфейс или CLI, отсканируйте QR-код WhatsApp и введите целевой номер телефона.
Нужен ли мой собственный аккаунт WhatsApp для запуска?Да — вы авторизуете свой аккаунт WhatsApp, отсканировав QR-код через библиотеку @whiskeysockets/baileys, затем вводите номер телефона цели, чтобы начать зондирование. Также нужны Node.js 20+ и npm.
Это работает и с Signal или только с WhatsApp?Исследование и дисклеймер охватывают и WhatsApp, и Signal, но поставляемый CLI-интерфейс поддерживает только WhatsApp; зондирование Signal запускается отдельным скриптом 'start:signal-api' и не входит в основной сценарий CLI.
Законно ли отслеживать чужую активность в WhatsApp этим инструментом?Нет — авторы прямо предупреждают, что это только для исследовательских и образовательных целей, что отслеживание людей без явного согласия может нарушать законы о приватности и что данные аутентификации нельзя никогда коммитить в систему контроля версий.
Как он на самом деле определяет, онлайн человек или офлайн?Он отправляет зондирующее сообщение (по умолчанию запрос на удаление несуществующего ID сообщения) и засекает, сколько времени занимает получение CLIENT ACK. Если RTT ниже динамического порога (90% медианного RTT), устройство показывает 'Online', выше — 'Standby', а полное отсутствие ACK означает 'Offline'.
В чём разница между методами зонда Delete и Reaction?Оба пингуют несуществующий ID сообщения, чтобы вызвать уведомление о доставке, не выдав себя: 'Delete' отправляет запрос на удаление (по умолчанию), а 'Reaction' вместо этого шлёт реакцию эмодзи; переключаться между ними можно из панели управления веб-интерфейса.
Могу ли я защититься от такого отслеживания?Включение 'Block unknown account messages' в настройках приватности WhatsApp может снизить способность атакующего засыпать зондовыми сообщениями с неизвестных номеров, хотя WhatsApp не раскрывает точный порог rate-limit, так что это не полное решение. Отключение отчётов о прочтении от этой конкретной атаки не защищает.
Откуда взялось это исследование?Он реализует выводы статьи 'Careless Whisper: Exploiting Silent Delivery Receipts to Monitor Users on Mobile Instant Messengers' авторства Gegenhuber et al. из Венского университета и SBA Research.
Size
0.4 MB
Stars
5.2K
Updated
CommitDec 31
Age
10mo
Commits · 90 Days