6 points par GN⁺ 2025-08-16 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • 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.

Aucun commentaire pour le moment.