Le projet comprend à la fois une application côté serveur et une application Web conçue pour communiquer avec des montres intelligentes pour enfants équipées d'un traceur GPS de différents modèles et connues sous différentes marques. Par exemple, il peut fonctionner avec Q50, Q60, Q80, Q90, Q100, Q360, Q523, Q730, Q750, Q8, GW100, GW100S, GW200, GW200S, GW300, GW300S, GW400S, GW400X, GW500S, GW600S, GW700, GW800, GW900, GW900S, GW1000, GW1000S, EW100, EW100S, EW200, K911, W8, W9, W10, Y3, G36 GARDIEN SÛR, DS18, T58, T100, I8, G10, G100, D99, D100, D100S et bien d'autres. En gros, il fait la même chose que des applications telles que SeTracker, FindMyKids, etc. La principale différence est que toutes les données personnelles, telles que les contacts, les positions, l'historique des communications, etc., deviennent véritablement privées, car elles sont stockées sur du matériel contrôlé par l'utilisateur.
Un autre problème qui a été abordé est le modèle de sécurité des applications de communication et de suivi des montres intelligentes pour enfants. Par défaut, toute personne peut prendre le contrôle de l’appareil à condition que l’identifiant de l’appareil soit connu, sans aucune autre confirmation d’être propriétaire de l’appareil. L'identifiant, à son tour, peut être facilement obtenu en envoyant un message texte à l'appareil si le numéro de téléphone portable de l'appareil est connu. Il y a un mot de passe, bien sûr, mais tous les appareils ont exactement le même mot de passe d'usine et il n'y a pas de notifications ennuyeuses demandant de le changer, donc personne ne le fait.
Dans cette application, les scénarios de sécurité suivants ont été implémentés :
Et enfin, c'est gratuit et sans publicité :).
Construire le projet est aussi simple que
docker compose -f docker-builder.yml run --rm builder
Lors de la construction, un certificat SSL requis pour les connexions https
est créé. Il est possible de spécifier un domaine et/ou une adresse IP à l'aide des variables d'environnement DOMAIN
et IP
docker compose -f docker-builder.yml run --rm -e DOMAIN=example.com -e IP=123.45.67.89 builder
L'application peut être adossée à différentes bases de données, au choix. Le scénario le plus léger consiste à utiliser une base de données H2 intégrée. Dans ce cas, l'application peut être démarrée avec la commande
docker compose --profile h2 up -d
Il est également possible d'utiliser PostreSQL, soit en conteneur, soit en autonome. Dans le premier cas, vous pouvez démarrer l'application avec la commande
docker compose --profile pg up -d
Dans ce dernier cas, vous devez compléter le fichier db.env
avec l'URL de la base de données et les informations d'identification, puis exécuter la commande
docker compose --profile pg_ext up -d
Si votre version de compose ne prend pas en charge les profils, vous pouvez utiliser des fichiers de composition dédiés pour chaque scénario
docker compose -f h2.yml up -d
docker compose -f pg.yml up -d
docker compose -f pg_ext.yml up -d
Dans le dernier cas, vous devez toujours compléter le fichier db.env
avec l'URL de la base de données et les informations d'identification.
Il est également possible de sauter la phase ennuyeuse de construction et d'exécuter le binaire joint à la version (Java 8 ou supérieur est censé être installé)
java -jar kidtracker.jar
Le binaire est configuré pour utiliser la base de données H2 intégrée. Trois dossiers sont créés au premier démarrage dans le répertoire de travail :
data
contiennent des enregistrements de base de données pour les emplacements des appareils, les numéros de téléphone, etc., cette date est confidentielle, alors gardez-la en sécurité !logs
sont suffisamment descriptifs, contiennent des journaux, à la fois pour l'application elle-même et pour les appareils lorsque le débogage des appareils est actif,media
ce dossier est utilisé pour convertir l'audio entrant au format amr en mp3 L'interface utilisateur Web est disponible sur https://<hostname>:8003
. Pour vous connecter, utilisez les informations d'identification par défaut admin
/ password
.
Pour attribuer un appareil à un utilisateur enregistré sur l'application, celle-ci doit être disponible sur les réseaux publics, c'est-à-dire qu'elle doit avoir une adresse IP publique et, probablement, un nom de domaine associé. Par défaut, l'application écoute les appareils sur le port 8001
, supposons que le même port soit mappé au réseau public. Ensuite, le message texte suivant envoyé à l'appareil lui permet de commencer à se connecter à l'application :
pw,123456,ip,<public IP address or domain>,8001#
Ici, 123456
est le mot de passe par défaut, qui est très probablement défini sur l'appareil. Les autres mots de passe par défaut connus sont 523681
, 54321
et 654321
. Toutefois, si le mot de passe a été modifié, le nouveau mot de passe doit être utilisé à la place de celui par défaut.
Il est fortement recommandé de changer le mot de passe par défaut !
Cliquez ensuite sur le bouton à droite de la barre de navigation, puis cliquez sur le bouton en pied de page. L'identifiant de l'appareil est requis pour que l'appareil soit attribué. Une fois l'appareil connecté à l'application, un jeton de confirmation à quatre chiffres est envoyé à l'appareil. Pour confirmer que l'utilisateur possède l'appareil, ce jeton doit être saisi dans le formulaire contextuel au cours des 5 prochaines minutes, après l'expiration de ce délai.
Tout utilisateur enregistré sur l'application peut être soit un utilisateur régulier, soit un administrateur. Les administrateurs peuvent enregistrer d'autres utilisateurs, contrairement aux utilisateurs réguliers, c'est la seule différence. Les administrateurs peuvent créer à la fois des utilisateurs réguliers et d'autres administrateurs. Pour un utilisateur existant, le privilège d'administrateur ne peut être ni accordé ni révoqué, la seule façon de le modifier est de supprimer le compte utilisateur et de le recréer.
Pour des raisons de sécurité, le numéro de téléphone portable de l'utilisateur ne peut pas non plus être modifié. Encore une fois, pour le modifier, le compte utilisateur doit être supprimé et recréé. Pour supprimer un compte utilisateur, tous les appareils doivent en être désattribués.
Lors de la toute première exécution, il existe un compte utilisateur par défaut avec des privilèges d'administrateur avec connexion admin
et password
passe password . Il est recommandé soit de supprimer ce compte lorsque d'autres comptes d'utilisateurs sont créés, soit de modifier le mot de passe par défaut. S'il n'existe qu'un seul compte doté de privilèges d'administrateur, il ne peut pas être supprimé. Le compte administrateur par défaut n'a pas de numéro de téléphone portable valide et aucun appareil ne peut lui être attribué.
Les appareils communiquent avec l'application au moyen de messages. Il existe plusieurs types de messages, certains peuvent fournir des informations sur l'emplacement de l'appareil et des alertes, d'autres contiennent la charge réelle de la batterie et la valeur du podomètre.
Certains messages peuvent également être envoyés par l'application à un appareil pour lui faire effectuer plusieurs actions ou modifier ses paramètres. Pour garantir que l'appareil a reçu le message, il renvoie un message de confirmation à l'application. En attendant le message de confirmation, l'interface utilisateur reste bloquée. Si aucune confirmation n'est reçue dans un délai de 10 secondes (paramétrable), le message initial est considéré comme non confirmé.
Les marqueurs de position de tous les appareils attribués ainsi que le marqueur de position utilisateur partagent la même carte. Les marqueurs de l'appareil contiennent des informations sur l'heure du dernier emplacement connu, la charge de la batterie, la valeur du podomètre et éventuellement l'alerte de décollage de l'appareil, l'alerte de batterie faible, l'alerte de perte de connexion et l'alerte de localisation obsolète. L'appareil est considéré comme perdu si le dernier message de l'appareil a été reçu il y a plus de 15 minutes.
L'appareil peut fournir sa position réelle, sur la base de données GPS directes, lorsqu'elle est disponible, ainsi que la dernière position détectée, lorsque l'observation GPS directe n'est pas disponible, principalement à l'intérieur de bâtiments ou en présence de bruit électromagnétique, dans de tels cas, les données GPS
est considéré comme obsolète. Lorsque les données de localisation reçues sont obsolètes, l'alerte de données obsolètes s'affiche.
Notez que l'alerte de batterie faible et la valeur de charge réelle se présentent sous différents types de messages. Les messages avec facturation réelle arrivent plus fréquemment (toutes les 5 minutes) que les messages avec localisation et alertes, qui peuvent ne pas être envoyés pendant des heures. Par conséquent, il n’est pas rare qu’un marqueur affiche 100 % de charge de la batterie ainsi qu’une alerte de batterie faible. Dans ce cas, la priorité est donnée à la valeur numérique de la charge de la batterie et l'alerte de batterie faible peut être ignorée.
L'appareil envoie des messages d'alarme lorsque le bouton SOS est enfoncé. Le marqueur de l'appareil devient rouge dans ce cas et un son de sirène est émis jusqu'à ce que le marqueur soit cliqué. Le clic du marqueur entraîne son déplacement vers le haut et le changement de sélection des enfants. Lorsque la sélection d'enfant est commutée, le marqueur de l'appareil sélectionné apparaît en haut.
L'appareil peut envoyer des messages audio et (s'il est équipé d'une caméra) des instantanés à l'application. Lorsqu'un nouveau message de ce type arrive, le marqueur de l'appareil devient bleu et la sonnerie du téléphone vintage est jouée jusqu'à ce que vous cliquiez sur le marqueur. Comme dans le cas de l'alarme, le clic du marqueur entraîne son déplacement vers le haut et le changement de sélection des enfants.
N'importe où dans l'interface utilisateur, les horodatages sont cliquables et, d'un simple clic, ils peuvent basculer entre la valeur absolue de la date et de l'heure et l'intervalle de temps à partir de maintenant.
Il y a deux icônes qui ont deux états, rempli et câblé. Le premier est rempli lorsque la vue de la carte suit le marqueur de périphérique sélectionné. Son état peut être basculé en cliquant dessus. Un autre se remplit lorsque la vue de la carte suit le marqueur de position de l'utilisateur. Son état peut également être modifié en cliquant dessus. Lorsqu'une icône se remplit, une autre devient filaire et vice-versa. Les deux icônes deviennent filaires lorsque la carte est déplacée.
En cliquant sur une commande pour réveiller le GPS et fournir la position actuelle est envoyée à l'appareil. La vue cartographique commence à suivre le marqueur de l'appareil, l'icône de suivi de l'appareil se remplit.
Le chat avec l'appareil est asymétrique. Les messages de chat texte peuvent être envoyés à l'appareil avec le bouton , tandis que l'appareil peut envoyer de courts messages audio et, si l'appareil est équipé d'une caméra, des instantanés. L'appareil peut également être forcé à prendre un instantané avec le bouton ou à réaliser un enregistrement audio de 15 secondes avec le bouton .
La boîte de dialogue Historique permet de choisir l'intervalle de temps dans deux modes, la date, d'un minuit au suivant, et général, où le début et la fin de l'intervalle peuvent être choisis par l'utilisateur. Pour basculer entre les modes, cliquez sur les étiquettes du sélecteur de date et d'heure.
Lorsque l'intervalle de temps est choisi, l'historique des discussions ou le podomètre et le graphique de charge de la batterie peuvent être affichés. La trace de l'appareil pour l'intervalle de temps choisi peut également être placée sur la carte. Un curseur apparaît dans le coin supérieur droit, il est utilisé pour déplacer le marqueur de périphérique le long de la piste. Lorsque la piste historique est inspectée, l'icône de la boîte de dialogue historique devient . Pour supprimer la piste et revenir aux positions des marqueurs en ligne, cliquez dessus.
La boîte de dialogue Contacts permet de modifier l'administrateur de l'appareil principal et secondaire, les numéros SOS, les contacts de l'appareil, les numéros autorisés à passer des appels vers l'appareil et les numéros d'appel rapide attribués aux boutons de l'appareil. Pour toutes les catégories de contacts, il existe un nombre fixe de créneaux pouvant être pourvus. Par défaut, les emplacements vides sont masqués, mais peuvent être affichés en cliquant sur le bouton en bas de la boîte de dialogue.
La boîte de dialogue Enfants permet à l'utilisateur d'attribuer et de désattribuer des appareils pour enfants, de changer de pouce et d'obtenir des informations générales sur l'appareil et son état réel. Dans la colonne de gauche, un pouce cliquable est placé, en cliquant dessus, vous obtenez la boîte de dialogue d'édition pour enfants. Dans la colonne du milieu se trouve l'identifiant de l'appareil. Si l'appareil est en ligne, son identifiant est en vert, sinon il est en rouge. Sous l'identifiant de l'appareil se trouve l'heure à laquelle le dernier message a été reçu de l'appareil. Tous les utilisateurs ayant accès à l'appareil sont répertoriés dans la colonne la plus à droite avec leur téléphone portable.