1 points par GN⁺ 2025-11-13 | 1 commentaires | Partager sur WhatsApp
  • Après avoir porté un tensiomètre Microlife WatchBP O3 à la pharmacie, l’auteur a voulu consulter directement les données et a découvert le port micro-USB de l’appareil
  • Il a essayé d’exécuter le logiciel WatchBP Analyzer sous Linux, mais l’appareil n’a pas été reconnu ; il a ensuite réussi à télécharger les données via une machine virtuelle Windows
  • En utilisant Wireshark et usbmon pour capturer les communications USB, il a identifié dans les paquets de données une structure d’octets contenant la pression systolique, la pression diastolique et la fréquence cardiaque
  • Il a aussi tenté de repérer l’OPP (pression oscillométrique maximale) et les horodatages, mais la structure des données temporelles n’a pas pu être interprétée clairement
  • La tentative de rétro-ingénierie a été interrompue par l’échéance de restitution de l’appareil, mais elle a permis d’acquérir une expérience d’analyse de structures de données et de découvrir la notion d’hypertension de la blouse blanche

Le tensiomètre et les premières tentatives

  • Après avoir reçu un vaccin contre la grippe à la pharmacie, une mesure de tension artérielle élevée a conduit à porter un appareil de mesure ambulatoire de la tension sur 24 heures
    • L’appareil mesure automatiquement toutes les 30 minutes (en journée) et toutes les 60 minutes (la nuit)
    • En remarquant le port micro-USB sur le côté de l’appareil, l’auteur a tenté d’accéder aux données
  • Le modèle de l’appareil était le Microlife WatchBP O3 ; le logiciel WatchBP Analyzer pour Windows correspondant a été téléchargé
    • Une tentative d’exécution sous Linux via Bottles a échoué, l’appareil n’étant pas reconnu
    • Il apparaissait comme un périphérique hidraw, ce qui a confirmé l’utilisation d’une interface USB HID
  • Une machine virtuelle Windows (Gnome Boxes) a ensuite été installée ; après connexion du périphérique USB, le téléchargement des données a réussi
    • Les trois premières mesures ont pu être consultées dans WatchBP Analyzer

Analyse du trafic USB

  • L’environnement de machine virtuelle a été utilisé pour capturer les communications USB avec Wireshark
    • Le flux de données entre l’appareil et l’hôte a été enregistré via l’interface usbmon3
  • Dans les paquets capturés, une séquence d’octets semblant contenir les valeurs de tension a été repérée
    • Exemple : 05 0a 89 71 43 9b
    • Le 3e octet a été supposé correspondre à la pression systolique (SYS), le 4e à la pression diastolique (DIA) et le 5e à la fréquence cardiaque (HR)
  • En comparant plusieurs mesures, un motif de données a été dégagé
    • Exemples : 137/113/67, 132/86/68, 126/84/82, etc.
    • Chaque paquet est structuré par blocs de 32 octets, et le premier octet indique la longueur des données significatives (SIGNIFICANT BITS)

Exploration de structures de données supplémentaires

  • Des octets supplémentaires incluant l’OPP (pression oscillométrique maximale) et les horodatages ont été analysés
    • Les données OPP apparaissaient dans les paquets suivant chaque mesure, mais leur position n’était pas constante
    • Les 4 octets suivant SYS, DIA et HR ont été supposés former un horodatage 32 bits, mais ils ne correspondaient pas à l’heure réelle des mesures
  • Une tendance a été observée : la valeur de la 6e colonne passe de 82 à 83 lors du basculement AM/PM, tandis que la 7e colonne est réinitialisée
    • Certaines valeurs semblaient se rapprocher des minutes de l’heure de mesure, sans qu’une règle claire puisse être établie

IA et expérimentations de code

  • Plusieurs modèles d’IA ont été sollicités via la plateforme Kagi pour analyser les données
    • Certains ont proposé des résultats invalides, mais ils ont tout de même aidé à orienter l’analyse, notamment sur la notion d’endianness
  • En Python, l’auteur a essayé d’imiter le handshake initial de l’appareil et le téléchargement des données, mais le code fourni par l’IA était en grande partie incorrect
    • Au passage, cela a permis de découvrir la bibliothèque pyhidapi

Conclusion et enseignements

  • La rétro-ingénierie a dû être interrompue parce que l’appareil devait être restitué
    • Le processus a néanmoins apporté une expérience pratique d’analyse de structures de données USB et de rétro-ingénierie
  • Parmi les nouveaux termes appris figurent « Normotension » et « White Coat Hypertension »
    • Une mesure de tension juste après une injection peut donner une valeur temporairement élevée
  • En conclusion, il n’est pas recommandé de mesurer sa tension artérielle immédiatement après une vaccination

1 commentaires

 
GN⁺ 2025-11-13
Commentaire sur Hacker News
  • J’ai des problèmes d’hypertension et j’ai acheté un appareil Hilo
    Après avoir effectué un étalonnage (calibration) avec un brassard au bras, on porte un petit dispositif au poignet, qui mesure automatiquement la tension jour et nuit quand on ne bouge pas
    Les données sont synchronisées et stockées dans une application smartphone, ce qui évite la contrainte de remettre le brassard à chaque fois ainsi que l’hypertension de la blouse blanche (white coat hypertension)
    En revanche, il faut refaire l’étalonnage avec le brassard environ une fois par mois, et la fonction de mesure du doigt via la caméra de l’application donne des résultats irréguliers

    • Je me demande quel est son niveau de précision
  • Dans un article sur l’IA, il y avait l’expression « stupid in ways that made me think », et j’ai l’impression que ça résume parfaitement pourquoi l’IA est utile pour le rubber duck debugging
    Elle pousse à réfléchir plus profondément qu’une discussion avec un collègue

  • En portant un moniteur de fréquence cardiaque et en analysant les données, je me suis aperçu qu’il n’y avait que deux situations où mon rythme cardiaque grimpait fortement — quand je conduisais et quand je parlais avec ma femme

    • Quelqu’un plaisante en disant que, pour la science, il faudrait aussi des données prises en conduisant tout en parlant avec sa femme
    • Il arrive qu’Oura interprète l’exercice à la salle comme du stress, mais certains font remarquer qu’en réalité, l’exercice impose bien un stress au corps
      Un nageur dit qu’il n’utilise aucun appareil et qu’il se contente d’écouter son propre cœur
    • Quelqu’un dit en plaisantant que c’est sans doute parce qu’il aime à la fois sa voiture et sa femme
  • L’hypertension de la blouse blanche n’est pas forcément liée à une piqûre ou à l’environnement hospitalier, cela peut simplement venir de la tension liée à la situation de mesure

    • Un ami a fait mesurer sa tension à l’hôpital par une jolie infirmière, elle était très élevée, puis le médecin l’a remesurée et elle l’était toujours
      Il a finalement reçu une prescription
    • Quelqu’un raconte avoir couru pour ne pas être en retard à l’hôpital, puis avoir pris sa tension, qui s’est révélée beaucoup trop élevée, et le médecin lui a recommandé de la reprendre calmement chez lui
    • Ma femme va souvent à l’hôpital à cause d’une maladie auto-immune, et une fois un tensiomètre automatique est tombé en panne et a continué à serrer son bras, ce qui a été terrifiant
      Depuis, chaque fois qu’on lui prend sa tension, je me tends moi aussi
    • J’ai une forte phobie du dentiste, donc si je portais un moniteur permanent, ma tension grimperait certainement chez le dentiste
    • Je mesure ma tension tous les jours à cause de l’ajustement de mon traitement pour le TDAH, et même dans les mêmes conditions, les valeurs varient de 115/75 à 135/90
      Du coup, je ne regarde que la moyenne. Mon A&D UA-611 Plus à la maison comme les appareils de l’hôpital montrent des variations similaires
  • En analysant le format des données, j’ai essayé d’identifier au niveau des bits l’année, le mois, le jour, l’heure et les minutes, mais je ne comprends toujours pas pourquoi il faut un reverse de bits (reverse) ni ce que signifient les zones vides

  • La blague « si j’arrive à faire la rétro-ingénierie de ça, ma tension ira mieux » m’a tellement parlé que, rien qu’en la lisant, j’ai eu l’impression d’être en meilleure santé

  • En buvant du jus d’orange et en mangeant des bananes deux fois par jour, ma tension est passée de 142/90 → 125/80
    Cela représente environ 2000 mg de potassium par jour

    • Quelqu’un demande si le jus d’orange et les bananes ont été commencés pour faire baisser la tension, ou au contraire arrêtés
  • La phrase « stupid in ways that made me think » semble être un excellent résumé à la fois des qualités et des limites de l’IA

    • L’IA est un rubber duck correct, ainsi qu’un moteur de recherche passable
  • Moi aussi, j’ai commencé à gérer plus directement mes propres données de santé
    J’ai l’impression qu’on va voir de plus en plus de développeurs vieillissants adopter une gestion proactive de leur santé à mesure qu’ils sentent que leur corps commence à dérailler
    J’ai rassemblé la documentation associée sur mikado-aktiia.readthedocs.io

    • La dernière version de l’application peut exporter les moyennes quotidiennes vers Apple Health
      Moi, j’utilise BPExtract pour lire les PDF et exporter automatiquement toutes les mesures vers Apple Health, et j’ai le sentiment que l’automatisation est bien meilleure que le manuel
    • Quelqu’un suggère qu’au lieu de lire les PDF, il serait peut-être plus simple de sniffer directement le trafic Bluetooth
    • Nous vivons aujourd’hui dans une époque où il faut prendre soin de sa santé soi-même, quel que soit son âge
      Le généraliste ne sert au fond qu’à aiguiller vers un spécialiste, et les délais d’attente sont beaucoup trop longs
      Cela dit, il faut toujours garder à l’esprit qu’on peut se tromper dans son propre jugement
    • Quelqu’un fait remarquer à la légère qu’il manque une parenthèse
  • En voyant un dump de trafic, j’ai envie d’analyser le protocole hors ligne
    Récemment encore, j’ai passé une demi-journée à faire de la rétro-ingénierie (reverse engineering) sur un pilote d’imprimante virtuelle Windows, et j’ai dû me forcer à arrêter alors que j’avais envie de continuer

    • (commentaire sans rapport en espagnol omis)