- Depois de colocar o medidor de pressão arterial Microlife WatchBP O3 na farmácia, ao tentar verificar os dados diretamente, foi descoberta a porta micro-USB do aparelho
- O software WatchBP Analyzer foi executado em ambiente Linux, mas o dispositivo não foi reconhecido; depois, o download dos dados foi concluído com sucesso por meio de uma máquina virtual Windows
- Usando Wireshark e usbmon, a comunicação USB foi capturada, e foi identificada nos pacotes de dados uma estrutura de bytes contendo pressão sistólica, diastólica e frequência cardíaca
- Também foram rastreados a OPP (pressão máxima oscilométrica) e os timestamps, mas a estrutura dos dados de tempo não pôde ser interpretada com clareza
- A tentativa de engenharia reversa foi interrompida por causa do prazo, mas serviu para adquirir experiência na análise da estrutura dos dados e aprender o conceito de hipertensão do avental branco
O medidor de pressão e as tentativas iniciais
- Depois de tomar a vacina da gripe na farmácia, o resultado da medição de pressão arterial saiu alto, então foi usado um dispositivo de monitoramento de pressão arterial por 24 horas
- O aparelho mede automaticamente a cada 30 minutos (durante o dia) e 60 minutos (à noite)
- Ao encontrar a porta micro-USB na lateral do dispositivo, foi feita uma tentativa de acessar os dados
- O modelo do aparelho era o Microlife WatchBP O3, e foi baixado o software WatchBP Analyzer para Windows correspondente
- A execução em ambiente Linux com Bottles falhou no reconhecimento do dispositivo
- Ele aparecia como um dispositivo
hidraw, confirmando o uso de uma interface USB HID
- Depois, ao instalar uma máquina virtual Windows (Gnome Boxes) e conectar o dispositivo USB, o download dos dados foi concluído com sucesso
- No WatchBP Analyzer, foi possível verificar as três primeiras medições
Análise do tráfego USB
- Aproveitando o ambiente da máquina virtual, a comunicação USB foi capturada com o Wireshark
- O fluxo de dados entre o dispositivo e o host foi registrado pela interface
usbmon3
- Nos pacotes capturados, foi encontrada uma sequência de bytes que parecia conter os valores de pressão arterial
- Exemplo:
05 0a 89 71 43 9b
- Supõe-se que o 3º byte seja a pressão sistólica (SYS), o 4º a pressão diastólica (DIA) e o 5º a frequência cardíaca (HR)
- Comparando várias medições, foi organizado um padrão dos dados
- Ex.:
137/113/67, 132/86/68, 126/84/82 etc.
- Cada pacote é composto em unidades de 32 bytes, e o primeiro byte indica o comprimento dos dados válidos (SIGNIFICANT BITS)
Exploração adicional da estrutura dos dados
- Foram analisados bytes adicionais incluindo a OPP (pressão máxima oscilométrica) e os timestamps
- Os dados de OPP existem no pacote após cada medição, mas sua posição não é constante
- Presumiu-se que os 4 bytes após SYS, DIA e HR fossem um timestamp de 32 bits, mas eles não correspondiam ao horário real das medições
- Foi observado um padrão em que o valor da 6ª coluna mudava de
82 para 83 na transição de AM para PM, e a 7ª coluna era reinicializada
- Alguns valores pareciam ter tendência semelhante aos minutos do horário da medição, mas nenhuma regra clara foi confirmada
Experimentos com IA e código
- Os dados foram inseridos em vários modelos de IA por meio da plataforma Kagi para tentar analisá-los
- Alguns apresentaram resultados inválidos, mas ajudaram na direção da análise com conceitos como endianness
- Também houve tentativa de reproduzir com Python o handshake inicial do dispositivo e o download dos dados, mas o código fornecido pela IA estava em sua maior parte incorreto
- Nesse processo, foi descoberta a biblioteca pyhidapi
Encerramento e lições aprendidas
- O trabalho de engenharia reversa foi interrompido porque era preciso devolver o aparelho
- Ainda assim, o processo trouxe experiência prática em análise de estrutura de dados USB e engenharia reversa
- Entre os novos termos aprendidos, foram citados “Normotension” e “White Coat Hypertension”
- A pressão arterial pode aparecer temporariamente mais alta quando medida logo após uma injeção
- Em conclusão, não é recomendável medir a pressão arterial logo após a vacinação
1 comentários
Comentários do Hacker News
Tenho problemas de pressão alta e comprei um dispositivo da Hilo
Depois de fazer a calibração com uma braçadeira no braço, você usa um pequeno aparelho no pulso, que mede a pressão automaticamente de dia e de noite quando você está parado
Os dados são sincronizados e salvos no app do smartphone, evitando o incômodo de colocar a braçadeira toda vez e a hipertensão do avental branco (white coat hypertension)
Mas é preciso recalibrar com a braçadeira mais ou menos uma vez por mês, e o recurso do app que mede o dedo pela câmera dá resultados inconsistentes
Em um texto sobre IA havia a expressão “stupid in ways that made me think”, e isso parece resumir muito bem por que a IA é útil para rubber duck debugging
Faz você pensar mais profundamente do que ao conversar com um colega
Usei um monitor de frequência cardíaca e analisei os dados, e descobri que só havia dois casos em que minha frequência disparava — quando eu dirigia e quando conversava com minha esposa
Um nadador diz que não usa dispositivo nenhum e apenas escuta os próprios batimentos
A hipertensão do avental branco não acontece necessariamente por causa de injeções ou do ambiente hospitalar, mas pode ser simplesmente pela tensão da situação de medição
No fim, acabou recebendo uma prescrição de remédio
Depois disso, toda vez que ela mede a pressão eu também fico tenso
Por isso só levo em conta a média. Tanto o A&D UA-611 Plus de casa quanto os aparelhos do hospital mostram variações parecidas
Ao analisar o formato dos dados, estimaram em nível de bits o ano, mês, dia, hora e minuto, mas ainda não sabem por que é necessário fazer reverse nos bits nem o significado dos trechos vazios
A piada de que “se eu fizer a engenharia reversa disso minha pressão vai melhorar” foi tão identificável que, depois de ler, eu realmente me senti mais saudável
Depois de tomar suco de laranja e comer banana duas vezes por dia, minha pressão caiu de 142/90 → 125/80
Isso dá cerca de 2000 mg de potássio por dia
A frase “stupid in ways that made me think” parece resumir muito bem ao mesmo tempo as vantagens e as limitações da IA
Eu também comecei a tentar gerenciar meus próprios dados de saúde
Acho que vai crescer essa tendência de desenvolvedores mais velhos perceberem problemas no próprio corpo e adotarem um cuidado de saúde mais autônomo
Organizei a documentação relacionada em mikado-aktiia.readthedocs.io
Eu uso o BPExtract para ler PDFs e exportar automaticamente todas as medições para o Apple Health, e acho a automação muito melhor do que fazer isso manualmente
No fim, o clínico geral só serve como sinalizador para encaminhar ao especialista, e o tempo de espera é longo demais
Mas é preciso sempre partir do princípio de que seu próprio julgamento pode estar errado
Ao ver o dump de tráfego, dá vontade de analisar o protocolo offline
Recentemente também passei meio dia fazendo engenharia reversa (reverse engineering) de um driver de impressora virtual do Windows, e tive que me forçar a parar mesmo querendo continuar