Aller au contenu
Prototype Phare

Prey

Anti-vol et surveillance PC

Agent anti-vol et de surveillance à distance pour PC : géolocalisation, capture webcam/écran/audio, détection de mouvement par vision, piloté depuis un dashboard PWA.

~17k lignes · Python + React
10–50 m précision géoloc WiFi
Temps réel flux webcam · WebSocket
agent PC → tunnel chiffré → dashboard mobile PC · AGENT Python · FastAPI · async GÉOLOC WiFi 10–50 m WEBCAM temps réel ÉCRAN capture AUDIO capture VISION OpenCV TUNNEL CHIFFRÉ WSS · AES-256 · JWT Tailscale / Cloudflare DASHBOARD PWA CARTE WEBCAM ⚠ mouvement ● en ligne installable · push
L'agent collecte géoloc WiFi (10–50 m), webcam, écran, audio et détection de mouvement (OpenCV), puis pousse la télémétrie temps réel par un tunnel chiffré (WSS, base SQLite AES, auth JWT) vers un dashboard PWA installable : carte, flux webcam et fil d'alertes.

Le problème

Un PC volé, ce sont des données sensibles dans la nature et, le plus souvent, aucune trace pour le localiser ou identifier le voleur. Les outils existants sont fermés, payants ou limités à une seule fonction. Je voulais un agent complet, que l’on pilote depuis son téléphone, capable à la fois de retrouver la machine et de documenter ce qui s’y passe.

Trois modes

Prey fonctionne selon trois postures. En veille, il reste discret et peu gourmand. En surveillance, il collecte selon des règles définies. En mode volé, il bascule en collecte agressive : position, image, son, tout ce qui peut aider à récupérer la machine et constituer un dossier.

L’agent

Côté PC, l’agent est écrit en Python avec FastAPI (asynchrone, WebSocket). Chaque capacité (géolocalisation, caméra, audio, écran, système) est un module indépendant, orchestré par un bus d’événements et un ordonnanceur. Ce découplage permet d’activer, de planifier ou d’arrêter une source sans toucher aux autres, et d’ajouter une capacité sans réécrire le cœur.

Voir et localiser

La détection de présence repose sur la vision par ordinateur (OpenCV) : différence d’images pour le mouvement, détection de visage (Haar puis DNN), et comparaison de scène par SSIM pour confirmer un déplacement physique réel plutôt qu’un simple changement de lumière. Cette dernière étape est ce qui évite de noyer l’utilisateur sous les fausses alertes.

Un ordinateur n’a pas de GPS. La localisation croise donc plusieurs méthodes : triangulation Wi-Fi par les BSSID environnants (10 à 50 m de précision), avec repli sur l’adresse IP, détection de déplacement par similarité de Jaccard entre relevés, et géofencing par distance de Haversine pour alerter quand la machine quitte une zone.

Le dashboard

Le pilotage se fait depuis un dashboard React livré en PWA : carte Leaflet, flux webcam en temps réel, fil d’alertes. Le choix de la PWA est délibéré : installable sur le téléphone comme une application, notifications push via Service Worker, sans passer par un store. On garde le contrôle de la machine au creux de la main, immédiatement.

Sécurité et accès distant

Les données collectées sont sensibles, donc chiffrées : base SQLite en AES, authentification par JWT. L’agent tourne en service pour survivre aux redémarrages. L’accès à une machine derrière un NAT ou un pare-feu passe par un tunnel (Tailscale ou Cloudflare), sans exposer de port.

État

Prototype abouti (environ 17 000 lignes, Python et React) : géolocalisation, caméra, audio, API et dashboard fonctionnent ensemble, du capteur jusqu’au téléphone. Code public.