- Pour résoudre la lenteur et la complexité du processus d’entrée de l’application PureGym, l’auteur l’a personnellement optimisé avec Apple Wallet
- Le code QR existant impose d’ouvrir l’application et de charger les informations à chaque fois, un mode d’accès inefficace qui prend environ 47 secondes
- Grâce à diverses techniques de reverse engineering, à l’usage de mitmproxy et au framework PassKit, l’auteur a mis en place un pass Wallet à renouvellement automatique
- Au cours de ce processus, il a constaté le fonctionnement interne de PureGym exposé sur le web, notamment une faille de sécurité du code PIN, la structure d’authentification de l’API et les données de localisation des clubs
- Au final, il a créé une expérience permettant d’entrer en 3 secondes, tout en précisant clairement qu’il s’agit d’une expérimentation personnelle et non d’un service officiel
47 secondes : le début de la frustration
- Un jour de semaine à 11 h 15, il a fallu 47 secondes pour ouvrir l’application devant l’entrée de PureGym
- Le signal est faible, il faut passer la connexion Wi‑Fi, le lancement de l’application, diverses notifications push et des offres promotionnelles avant que le code QR n’apparaisse
- Le code QR met longtemps à s’afficher, au point de se sentir observé par les autres membres
- Répétée 6 fois par semaine, cette expérience inefficace fait perdre 282 secondes chaque semaine
- Comparée à l’expérience sans friction d’Amazon Fresh, l’UX d’entrée de PureGym est très en retard
Le mystère d’un PIN vieux de 8 ans
- L’auteur utilise le même code PIN à 8 chiffres depuis 8 ans
- Ce PIN n’expire pas et n’a jamais changé
- À l’inverse, le code QR dans l’application est remplacé par une nouvelle valeur chaque minute
- Il existe donc une contradiction majeure entre le niveau réel de sécurité et son implémentation effective
- La méthode par PIN dure de manière excessivement longue alors que seul le code QR est strictement protégé : une véritable « mise en scène de la sécurité »
Comprendre PureGym avec mitmproxy
- Au départ, l’auteur a essayé d’utiliser dans Apple Wallet une capture d’écran du code QR, mais cela n’a évidemment pas fonctionné
- Le code QR de PureGym est généré dynamiquement, expire au bout d’environ une semaine, mais l’application le renouvelle toutes les minutes
- En recherchant des dépôts liés à « PureGym » sur GitHub, l’auteur a découvert la structure d’authentification de l’API
- Le PIN à 8 chiffres utilisé pour la connexion sert aussi de mot de passe API
- Les informations d’authentification basiques encodées en Base64 offrent elles aussi une sécurité limitée
- Pour analyser le trafic de l’application, il a intercepté les requêtes avec des outils proxy comme mitmproxy
- La structure JSON du code QR se compose de part1 (id fixe), part2 (horodatage), part3 (salt de renouvellement)
- L’API indique même le moment du renouvellement et les conditions d’expiration
PassKit : le potentiel d’Apple Wallet
- Un pass Apple Wallet n’est pas une simple carte statique, mais une sorte de mini‑application capable de se mettre à jour, d’envoyer des notifications push et de réagir à la localisation
- L’implémentation de PassKit nécessite une spécification JSON, des ressources d’image, une signature par certificat et un service web pour les mises à jour en temps réel
- Le portail développeur d’Apple exige l’émission d’un Pass Type ID et d’un certificat WWDR
- La signature et la gestion des certificats sont complexes, mais une fois réussies, l’expérience sur un appareil réel devient fluide
Mise en place d’un backend Swift
- Même s’il utilise habituellement Node.js, l’auteur a directement implémenté le service web PassKit avec Vapor en Swift
- Lorsqu’un pass doit être mis à jour, une notification push silencieuse déclenche la mise à jour automatique
- Cela permet un renouvellement du pass naturel et invisible pour l’utilisateur
Automatisation des emplacements PureGym dans tout le pays
- Les pass Apple Wallet peuvent s’afficher automatiquement à un emplacement donné
- Le site officiel de PureGym ne fournit pas les coordonnées détaillées, mais l’API donne accès à la liste des coordonnées de tous les clubs du pays
- En analysant toutes les coordonnées des clubs, l’auteur attribue à chaque pass le club le plus proche
- Inconvénient : si un PureGym se trouve dans un centre commercial, le pass peut apparaître même lors d’une simple visite shopping
Intégration avec l’Apple Watch
- Le pass Apple Wallet se synchronise automatiquement sur l’Apple Watch sans manipulation supplémentaire
- Deux clics au poignet, scan, puis entrée : le tout prend 3 secondes, soit un gain spectaculaire
- Cela représente plus de 93 % de temps économisé
Le changement en chiffres
- Temps d’entrée avec l’application PureGym d’origine : 47 secondes
- Temps d’entrée avec le pass Apple Wallet : 3 secondes
- Temps moyen économisé par semaine : 4,4 minutes (3,8 heures par an)
- Des membres autour de lui lui ont demandé 23 fois « il existe une appli pour ça ? », et il a expliqué à chaque fois qu’il s’agissait d’une solution non officielle
- Malgré les demandes, aucune diffusion n’est prévue pour des raisons de droits et de politique de service
Bonus : intégration avec Home Assistant
- Grâce au endpoint du nombre de personnes présentes de l’API PureGym, il affiche le niveau d’affluence actuel de la salle sur un tableau de bord IoT
- Ces données permettent de décider de revenir aux heures plus calmes, avec à la clé un meilleur rendement et une motivation accrue
Réalité de l’ingénierie et éthique
- À l’origine, il s’agissait simplement de résoudre une gêne personnelle, mais c’est aussi un domaine que PureGym n’a pas amélioré depuis des années
- Un prototype créé hors de l’organisation peut parfois résoudre un problème plus vite qu’une feuille de route officielle
- Officiellement, cela peut constituer une violation des conditions d’utilisation, et PureGym pourrait le bloquer à tout moment
- Il n’y a jamais eu d’automatisation ni de partage : uniquement une expérimentation personnelle, avec respect de principes comme le cache pour préserver la stabilité
Suite et conclusion
- À l’avenir, des idées d’extension comme une « notification push de honte » pourraient être envisagées
- L’utilité concrète est modeste, mais l’auteur se dit satisfait d’avoir optimisé 3,8 heures par an de « gestes inutiles »
- Si PureGym mettait en place une implémentation officielle, davantage d’utilisateurs pourraient en bénéficier
- Cela reste un exemple marquant d’une « expérience non officielle mais efficace »
Aucun commentaire pour le moment.