Téléverser les fichiers vers "/"
This commit is contained in:
261
FMD-doc.md
Normal file
261
FMD-doc.md
Normal file
@ -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)
|
||||
Reference in New Issue
Block a user