commit c11c094d25d3166f6aa382249ded019d87993e09 Author: antitbone Date: Fri May 29 02:51:28 2026 +0200 Téléverser les fichiers vers "/" diff --git a/FMD-doc.md b/FMD-doc.md new file mode 100644 index 0000000..c441685 --- /dev/null +++ b/FMD-doc.md @@ -0,0 +1,261 @@ +# FindMyDevice (FMD) — Documentation + +Alternative open source et auto-hébergeable à Google Find My Device, conçue pour fonctionner **sans Google Play Services**. Idéale pour GrapheneOS. + +- **Licence** : GPLv3 +- **Source** : [gitlab.com/fmd-foss/fmd-android](https://gitlab.com/fmd-foss/fmd-android) +- **Serveur** : [gitlab.com/fmd-foss/fmd-server](https://gitlab.com/fmd-foss/fmd-server) +- **F-Droid** : [de.nulide.findmydevice](https://f-droid.org/packages/de.nulide.findmydevice/) + +--- + +## Fonctionnalités + +| Fonction | Description | +|---|---| +| Localisation | GPS, cellules, ou dernière position connue | +| Sonnerie | Faire sonner le téléphone à distance | +| Verrouillage | Verrouiller l'écran avec un message personnalisé | +| Photos | Capturer une photo avec la caméra avant ou arrière | +| Audio | Enregistrer un son ambiant | +| Réseau | Voir les Wi-Fi visibles, infos cellules | +| Effacement | Réinitialisation usine à distance | +| GPS/BT/DND | Activer/désactiver le GPS, Bluetooth, Ne pas déranger | + +--- + +## Canaux de communication + +### 1. SMS (fonctionne sans internet) + +Envoyer un SMS au téléphone avec une commande : + +``` +fmd locate +fmd ring +fmd camera front +``` + +**Modes d'authentification :** +- **Contacts de confiance** : numéros whitelistés, pas besoin de PIN +- **PIN** : pour les numéros inconnus, inclure le PIN : `fmd 1234 locate` +- Le PIN accorde une fenêtre de 10 minutes après utilisation + +### 2. Applications de messagerie (Telegram, WhatsApp) + +Via le service d'écoute des notifications. Le PIN est obligatoire pour chaque commande : + +``` +fmd 1234 locate +fmd 1234 ring +``` + +### 3. FMD Server (interface web auto-hébergée) + +- Carte avec position en temps réel +- Visualisation des photos capturées +- Envoi de commandes à distance +- Notifications push via ntfy/UnifiedPush + +--- + +## Commandes SMS complètes + +| Commande | Action | +|---|---| +| `fmd locate` | Position GPS + cellules | +| `fmd locate last` | Dernière position connue | +| `fmd locate gps` | Position GPS uniquement | +| `fmd locate cell` | Position par cellules uniquement | +| `fmd ring` | Sonner pendant 15 secondes | +| `fmd ring long` | Sonner pendant 3 minutes | +| `fmd lock` | Verrouiller l'écran | +| `fmd lock ton message` | Verrouiller avec un message | +| `fmd camera front` | Photo avec la caméra avant | +| `fmd camera back` | Photo avec la caméra arrière | +| `fmd stats` | Infos réseau et Wi-Fi visibles | +| `fmd bluetooth` | Activer/désactiver le Bluetooth | +| `fmd gps` | Activer/désactiver le GPS | +| `fmd nodisturb` | Activer/désactiver Ne pas déranger | +| `fmd delete` | Réinitialisation usine (PIN requis + activation manuelle dans les paramètres) | +| `fmd help` | Afficher la liste des commandes | + +Le préfixe `fmd` est personnalisable dans les paramètres de l'application. + +--- + +## Installation sur GrapheneOS + +### 1. Installer depuis F-Droid + +L'application est disponible directement dans F-Droid. Rechercher « Find My Device ». + +### 2. Accorder les permissions via ADB + +Certaines permissions ne peuvent pas être accordées depuis l'interface Android et nécessitent ADB : + +```bash +# Permissions critiques +adb shell pm grant de.nulide.findmydevice android.permission.READ_SMS +adb shell pm grant de.nulide.findmydevice android.permission.RECEIVE_SMS +adb shell pm grant de.nulide.findmydevice android.permission.SEND_SMS +adb shell pm grant de.nulide.findmydevice android.permission.ACCESS_BACKGROUND_LOCATION +adb shell pm grant de.nulide.findmydevice android.permission.RECORD_AUDIO +adb shell pm grant de.nulide.findmydevice android.permission.READ_PHONE_STATE + +# Permet à FMD d'activer le GPS à distance même s'il est désactivé +adb shell pm grant de.nulide.findmydevice android.permission.WRITE_SECURE_SETTINGS +``` + +### 3. Configurer dans l'application + +- Définir un **PIN** dans les paramètres FMD +- Ajouter les **contacts de confiance** (numéros autorisés sans PIN) +- Activer **l'optimisation batterie ignorée** pour FMD +- Activer **l'accès aux notifications** (pour les commandes via Telegram/WhatsApp) +- Configurer le **serveur FMD** si vous utilisez l'interface web + +### 4. Désactiver l'optimisation batterie + +```bash +adb shell dumpsys deviceidle whitelist +de.nulide.findmydevice +``` + +--- + +## Installation du serveur FMD + +### Docker (recommandé) + +```bash +docker run -d \ + --name fmd-server \ + -p 8080:8080 \ + -v fmd-data:/data \ + registry.gitlab.com/fmd-foss/fmd-server:0.15.0 +``` + +### Docker Compose + +```yaml +version: "3" +services: + fmd-server: + image: registry.gitlab.com/fmd-foss/fmd-server:0.15.0 + ports: + - "8080:8080" + volumes: + - fmd-data:/data + restart: unless-stopped + +volumes: + fmd-data: +``` + +### Construction depuis les sources + +```bash +# Compiler le frontend React +cd web && npm install && npm run build + +# Compiler et lancer le serveur Go +go run . serve +``` + +--- + +## Sécurité + +| Mécanisme | Description | +|---|---| +| Chiffrement E2E | RSA-2048 + AES-256-GCM entre le téléphone et le serveur | +| PIN | Obligatoire pour les numéros non whitelistés | +| Whitelist | Contacts de confiance sans besoin de PIN | +| Préfixe personnalisable | Remplacer `fmd` par un mot de votre choix pour masquer les commandes | +| Effacement distant | `fmd delete` nécessite un PIN ET une activation manuelle dans les paramètres | + +--- + +## Flux de commande typique + +``` +Téléphone perdu + │ + ▼ +Envoyer SMS : "fmd 1234 locate" + │ + ▼ +FMD reçoit le SMS ──► Vérifie PIN/whitelist + │ + ▼ +Active le GPS (WRITE_SECURE_SETTINGS) + │ + ▼ +Récupère la position + │ + ▼ +Répond par SMS avec les coordonnées + │ + ▼ +(optionnel) Envoie aussi au serveur FMD +``` + +--- + +## Dépannage + +### Les commandes SMS ne fonctionnent pas + +- Vérifier que `RECEIVE_SMS` et `SEND_SMS` sont accordées +- Vérifier que l'appli est exemptée de l'optimisation batterie +- Vérifier que les notifications sont activées pour FMD + +### La localisation ne fonctionne pas + +```bash +# Vérifier les permissions +adb shell dumpsys package de.nulide.findmydevice | grep -E "LOCATION|WRITE_SECURE" + +# Accorder si nécessaire +adb shell pm grant de.nulide.findmydevice android.permission.ACCESS_BACKGROUND_LOCATION +adb shell pm grant de.nulide.findmydevice android.permission.WRITE_SECURE_SETTINGS +``` + +### Les photos ne se prennent pas + +- Vérifier que `CAMERA` est accordée +- Sur GrapheneOS, vérifier que l'appli a accès aux capteurs : Paramètres → Apps → Find My Device → Capteurs + +### Le GPS ne s'active pas à distance + +La permission `WRITE_SECURE_SETTINGS` est obligatoire. Sans elle, FMD ne peut pas activer le GPS quand il est éteint : + +```bash +adb shell pm grant de.nulide.findmydevice android.permission.WRITE_SECURE_SETTINGS +``` + +--- + +## Comparaison avec Google Find My Device + +| Critère | Google FMD | FMD (open source) | +|---|---|---| +| Dépendance Google | Oui | Non | +| Fonctionne sur GrapheneOS | Non (Play Integrity requis) | Oui | +| Localisation SMS | Non | Oui | +| Photos à distance | Non | Oui | +| Serveur auto-hébergé | Non | Oui | +| Chiffrement E2E | Non documenté | Oui (RSA-256 + AES-256) | +| Effacement à distance | Oui | Oui | +| Code source | Fermé | Ouvert (GPLv3) | +| Coût | Gratuit (avec compte Google) | Gratuit | + +--- + +## Références + +- [FMD Android — GitLab](https://gitlab.com/fmd-foss/fmd-android) +- [FMD Server — GitLab](https://gitlab.com/fmd-foss/fmd-server) +- [FMD sur F-Droid](https://f-droid.org/packages/de.nulide.findmydevice/) +- [Documentation FMD — rigacci.org](https://rigacci.org/wiki/doku.php/doc/appunti/android/android_findmydevice_fdroid) +- [Serveur FMD — Installation](https://fmd-foss.org/docs/fmd-server/installation/overview) \ No newline at end of file