1 puntos por GN⁺ 2025-11-13 | 1 comentarios | Compartir por WhatsApp
  • Después de ponerse el monitor de presión arterial Microlife WatchBP O3 en la farmacia, intentó revisar los datos directamente y encontró el puerto micro-USB del dispositivo
  • Ejecutó el software WatchBP Analyzer en Linux, pero no logró que reconociera el dispositivo; después consiguió descargar los datos usando una máquina virtual con Windows
  • Usó Wireshark y usbmon para capturar la comunicación USB, y confirmó en los paquetes de datos una estructura de bytes que incluía presión sistólica, diastólica y frecuencia cardíaca
  • También rastreó OPP (presión máxima oscilométrica) y las marcas de tiempo, pero no logró interpretar con claridad la estructura de los datos de hora
  • El intento de ingeniería inversa se detuvo por falta de tiempo, pero le dejó experiencia analizando estructuras de datos y el concepto de “hipertensión de bata blanca”

El monitor de presión arterial y los primeros intentos

  • Después de recibir una vacuna contra la influenza en la farmacia, su lectura de presión arterial salió alta y le colocaron un dispositivo de monitoreo de presión arterial de 24 horas
    • El dispositivo mide automáticamente cada 30 minutos (de día) y cada 60 minutos (de noche)
    • Descubrió el puerto micro-USB en un costado del aparato e intentó acceder a los datos
  • El modelo del dispositivo era Microlife WatchBP O3, y descargó el software WatchBP Analyzer para Windows relacionado
    • Intentó ejecutarlo en Linux usando Bottles, pero el dispositivo no fue reconocido
    • Aparecía como un dispositivo hidraw, lo que confirmó que usaba una interfaz USB HID
  • Después instaló una máquina virtual de Windows (Gnome Boxes) y, al conectar el dispositivo USB, logró descargar los datos
    • En WatchBP Analyzer pudo ver las primeras tres mediciones

Análisis del tráfico USB

  • Aprovechó el entorno de la máquina virtual para capturar la comunicación USB con Wireshark
    • Registró el flujo de datos entre el dispositivo y el host mediante la interfaz usbmon3
  • En los paquetes capturados encontró una secuencia de bytes que parecía contener los valores de presión arterial
    • Ejemplo: 05 0a 89 71 43 9b
    • Estimó que el tercer byte correspondía a la presión sistólica (SYS), el cuarto a la presión diastólica (DIA) y el quinto a la frecuencia cardíaca (HR)
  • Comparó varias mediciones para organizar el patrón de datos
    • Ejemplos: 137/113/67, 132/86/68, 126/84/82
    • Cada paquete estaba compuesto en bloques de 32 bytes, y el primer byte indicaba la longitud de los datos válidos (SIGNIFICANT BITS)

Exploración adicional de la estructura de datos

  • Analizó bytes adicionales que incluían OPP (presión máxima oscilométrica) y marcas de tiempo
    • Los datos de OPP aparecían en los paquetes posteriores a cada medición, pero su posición no era constante
    • Supuso que los 4 bytes posteriores a SYS, DIA y HR eran una marca de tiempo de 32 bits, pero no coincidían con la hora real de medición
  • Observó un patrón en el que el valor de la sexta columna cambiaba de 82 a 83 al pasar de AM a PM, mientras que la séptima columna se reiniciaba
    • Algunos valores parecían seguir una tendencia similar a los minutos de la hora de medición, pero no se confirmó una regla clara

Experimentos con IA y código

  • Intentó analizar los datos introduciéndolos en varios modelos de IA a través de la plataforma Kagi
    • Algunos dieron resultados no válidos, pero aun así ayudaron con la dirección del análisis, como el concepto de endianness
  • También intentó reproducir con Python el handshake inicial del dispositivo y la descarga de datos, pero el código generado por la IA fue en su mayoría incorrecto
    • En el proceso descubrió la biblioteca pyhidapi

Cierre y aprendizajes

  • Tuvo que detener el trabajo de ingeniería inversa por la fecha de devolución del dispositivo
    • Aun así, obtuvo experiencia práctica en análisis de estructuras de datos USB e ingeniería inversa
  • Entre los términos nuevos que aprendió mencionó “Normotension” (presión arterial normal) y “White Coat Hypertension” (hipertensión de bata blanca)
    • La presión arterial puede subir temporalmente cuando se mide justo después de una inyección
  • En conclusión, no se recomienda medir la presión arterial inmediatamente después de una vacunación

1 comentarios

 
GN⁺ 2025-11-13
Comentarios de Hacker News
  • Tengo problemas de hipertensión, así que compré un dispositivo de Hilo
    Después de calibrarlo usando un manguito en el brazo, te pones un dispositivo pequeño en la muñeca y mide automáticamente la presión arterial de día y de noche cuando no te estás moviendo
    Los datos se sincronizan y guardan en una app del smartphone, lo que evita la molestia de ponerse el manguito cada vez y la hipertensión de bata blanca (white coat hypertension)
    Eso sí, hay que recalibrarlo con el manguito más o menos una vez al mes, y la función de la app que mide el dedo con la cámara da resultados inconsistentes

    • Me da curiosidad qué tan preciso será
  • En un texto sobre AI aparecía la expresión "stupid in ways that made me think", y siento que esa frase resume muy bien por qué la AI sirve para el rubber duck debugging
    Te hace pensar más a fondo que cuando hablas con un colega

  • Me puse un monitor de frecuencia cardíaca y analicé los datos, y solo había dos casos en los que mi pulso se disparaba: cuando manejaba y cuando hablaba con mi esposa

    • Bromea con que, por el bien de la ciencia, también hacen falta datos de cuando maneja mientras habla con su esposa
    • A veces Oura interpreta el ejercicio en el gimnasio como estrés, aunque también hay quien opina que, en efecto, el ejercicio sí le impone estrés al cuerpo
      Un nadador dice que no usa ningún dispositivo y solo escucha su propio pulso
    • Dice en tono alegre que probablemente es porque ama tanto a los autos como a su esposa
  • La hipertensión de bata blanca no necesariamente se debe a las inyecciones o al entorno hospitalario; también puede venir simplemente de la tensión del momento de la medición

    • A un amigo le midió la presión una enfermera muy guapa en el hospital y salió demasiado alta; luego el médico la volvió a medir y seguía alta
      Al final le recetaron medicamentos
    • Una vez llegó corriendo para no retrasarse a la consulta y le midieron la presión; salió demasiado alta, así que el médico le recomendó volver a medirla en casa con calma
    • Su esposa va seguido al hospital por una enfermedad autoinmune, y una vez el tensiómetro automático falló y siguió apretándole el brazo, lo que fue aterrador
      Desde entonces, hasta él se pone tenso cada vez que a su esposa le miden la presión
    • Tiene una fuerte fobia al dentista, así que cree que, si llevara un monitor continuo, su presión definitivamente se dispararía al estar en el consultorio dental
    • Yo me mido la presión todos los días por el ajuste de mi medicamento para ADHD, y aun en las mismas condiciones los valores varían entre 115/75 y 135/90
      Por eso solo tomo en cuenta el promedio. Tanto el A&D UA-611 Plus de casa como los equipos del hospital muestran variaciones parecidas
  • Al analizar el formato de los datos, intentó deducir a nivel de bits el año, mes, día, hora y minuto, pero todavía no entiende por qué hace falta un reverse de bits (reverse) ni qué significan los espacios vacíos

  • El chiste de "si hago ingeniería inversa de esto, seguro me mejora la presión" fue tan identificable que, después de leerlo, casi sintió que de verdad había mejorado su salud

  • Después de tomar jugo de naranja y comer plátano dos veces al día, su presión bajó de 142/90 → 125/80
    Terminó consumiendo unos 2000 mg de potasio al día

    • Preguntan si empezó a tomar jugo de naranja y plátano para bajar la presión, o si los dejó de tomar
  • La frase "stupid in ways that made me think" parece resumir muy bien al mismo tiempo las fortalezas y limitaciones de la AI

    • La AI es un rubber duck decente y un buscador más o menos útil
  • Yo también empecé a gestionar directamente mis propios datos de salud
    Parece probable que aumente la tendencia de desarrolladores mayores que, al notar señales raras en el cuerpo, practican una gestión proactiva de su salud
    Organicé documentación relacionada en mikado-aktiia.readthedocs.io

    • La versión más reciente de la app puede exportar promedios diarios a Apple Health
      Yo uso BPExtract para leer PDFs y exportar automáticamente todas las mediciones a Apple Health; siento que automatizarlo es muchísimo mejor que hacerlo a mano
    • Sugieren que, en vez de leer el PDF, quizá sería más fácil sniffear directamente el tráfico Bluetooth
    • Hoy en día parece que hay que cuidar la propia salud sin importar la edad
      El médico general (GP) al final solo funciona como paso previo hacia el especialista, y los tiempos de espera son demasiado largos
      Eso sí, siempre hay que partir de la base de que uno puede estar equivocado en su propio juicio
    • Señala con ligereza que falta un paréntesis
  • Al ver el volcado de tráfico dan ganas de analizar el protocolo sin conexión
    Hace poco también pasó medio día haciendo ingeniería inversa (reverse engineering) de un driver de impresora virtual para Windows, y tuvo que obligarse a parar aunque quería seguir

    • (Se omite un comentario irrelevante en español)