Saya gagal merekayasa balik protokol alat pengukur tekanan darah dalam 24 jam
(james.belchamber.com)- Setelah memakai alat pengukur tekanan darah Microlife WatchBP O3 di apotek, penulis menemukan port micro-USB pada perangkat dan mencoba melihat datanya secara langsung
- Perangkat lunak WatchBP Analyzer dijalankan di lingkungan Linux, tetapi gagal mengenali perangkat; setelah itu unduhan data berhasil melalui mesin virtual Windows
- Dengan Wireshark dan usbmon, komunikasi USB ditangkap, dan dari paket data teridentifikasi struktur byte yang memuat tekanan darah sistolik·diastolik serta denyut jantung
- Penulis juga melacak OPP (oscillometric peak pressure) dan stempel waktu, tetapi struktur data waktunya tidak berhasil diinterpretasikan dengan jelas
- Upaya rekayasa balik dihentikan karena tenggat, tetapi ini menjadi pengalaman baru dalam analisis struktur data serta konsep ‘white coat hypertension’
Alat pengukur tekanan darah dan percobaan awal
- Setelah mendapat vaksin flu di apotek, hasil pengukuran tekanan darah menunjukkan angka tinggi sehingga penulis memakai alat pemantau tekanan darah 24 jam
- Perangkat mengukur secara otomatis setiap 30 menit (siang) dan 60 menit (malam)
- Penulis menemukan port micro-USB di sisi perangkat dan mencoba mengakses datanya
- Model perangkat adalah Microlife WatchBP O3, lalu penulis mengunduh perangkat lunak WatchBP Analyzer untuk Windows
- Dicoba dijalankan di Linux menggunakan Bottles, tetapi perangkat tidak terdeteksi
- Perangkat muncul sebagai
hidraw, yang menunjukkan bahwa ia menggunakan antarmuka USB HID
- Setelah itu penulis memasang mesin virtual Windows (Gnome Boxes) dan menghubungkan perangkat USB, lalu unduhan data berhasil
- Di WatchBP Analyzer, penulis dapat melihat tiga hasil pengukuran pertama
Analisis lalu lintas USB
- Dengan memanfaatkan lingkungan mesin virtual, penulis menangkap komunikasi USB menggunakan Wireshark
- Aliran data antara perangkat dan host direkam melalui antarmuka
usbmon3
- Aliran data antara perangkat dan host direkam melalui antarmuka
- Dari paket yang ditangkap, ditemukan urutan byte yang tampaknya berisi nilai tekanan darah
- Contoh:
05 0a 89 71 43 9b - Byte ke-3 diperkirakan sebagai tekanan darah sistolik (SYS), byte ke-4 sebagai tekanan darah diastolik (DIA), dan byte ke-5 sebagai denyut jantung (HR)
- Contoh:
- Dengan membandingkan beberapa hasil pengukuran, penulis merangkum pola data
- Contoh:
137/113/67,132/86/68,126/84/82dan sebagainya - Setiap paket terdiri dari unit 32 byte, dan byte pertama menunjukkan panjang data yang valid (SIGNIFICANT BITS)
- Contoh:
Menelusuri struktur data tambahan
- Byte tambahan yang mencakup OPP (oscillometric peak pressure) dan stempel waktu juga dianalisis
- Data OPP ada pada paket setelah setiap pengukuran, tetapi posisinya tidak tetap
- Penulis mengasumsikan 4 byte setelah SYS, DIA, HR sebagai stempel waktu 32-bit, tetapi nilainya tidak cocok dengan waktu pengukuran yang sebenarnya
- Diamati bahwa nilai pada kolom ke-6 berubah dari
82ke83saat pergantian AM/PM, sementara kolom ke-7 menunjukkan pola reset- Beberapa nilai tampak mirip dengan satuan menit pada waktu pengukuran, tetapi tidak ditemukan aturan yang jelas
Eksperimen AI dan kode
- Penulis mencoba menganalisis data dengan memasukkannya ke beberapa model AI melalui platform Kagi
- Sebagian menghasilkan jawaban yang tidak valid, tetapi tetap membantu memberi arah analisis, misalnya tentang konsep endianness
- Penulis juga mencoba meniru handshake awal perangkat dan unduhan data menggunakan Python, tetapi kode dari AI sebagian besar tidak akurat
- Dalam proses ini, penulis jadi mengenal pustaka pyhidapi
Penutup dan pelajaran
- Karena ada jadwal untuk mengembalikan perangkat, pekerjaan rekayasa balik pun dihentikan
- Meski begitu, penulis memperoleh pengalaman praktik dalam analisis struktur data USB dan rekayasa balik
- Istilah baru yang dipelajari antara lain ‘Normotension’ (tekanan darah normal) dan ‘White Coat Hypertension’ (hipertensi jas putih)
- Tekanan darah dapat naik sementara jika diukur tepat setelah suntikan
- Kesimpulannya, mengukur tekanan darah segera setelah vaksinasi tidak disarankan
1 komentar
Komentar Hacker News
Karena punya masalah hipertensi, saya membeli perangkat Hilo
Setelah melakukan kalibrasi dengan memasang manset di lengan, cukup memakai perangkat kecil di pergelangan tangan dan alat ini akan otomatis mengukur tekanan darah siang dan malam saat tidak sedang bergerak
Datanya disinkronkan dan disimpan di aplikasi ponsel, sehingga bisa menghindari kerepotan memasang manset setiap kali serta white coat hypertension
Namun, kalibrasi ulang dengan manset tetap perlu dilakukan kira-kira sebulan sekali, dan fitur aplikasi yang mengukur jari lewat kamera memberikan hasil yang tidak konsisten
Di sebuah tulisan tentang AI ada ungkapan “stupid in ways that made me think”, dan rasanya itu merangkum dengan sangat baik alasan AI berguna untuk rubber duck debugging
AI membuat saya berpikir lebih dalam dibanding saat berbicara dengan rekan kerja
Setelah memakai monitor detak jantung dan menganalisis datanya, ternyata hanya ada dua situasi saat detak jantung melonjak tajam — ketika menyetir dan ketika berbicara dengan istri saya
Seorang perenang katanya tidak memakai perangkat apa pun dan hanya mendengarkan detak jantungnya sendiri
White coat hypertension tidak selalu disebabkan oleh suntikan atau suasana rumah sakit, tetapi bisa juga hanya karena ketegangan saat proses pengukuran
Akhirnya dia diberi resep obat
Sejak itu, setiap kali istri saya mengukur tekanan darah, saya ikut tegang
Jadi saya hanya melihat nilai rata-rata. A&D UA-611 Plus di rumah maupun alat di rumah sakit menunjukkan variasi yang mirip
Sambil menganalisis format data, saya sempat menebak tahun, bulan, tanggal, jam, dan menit per bit, tetapi masih belum tahu mengapa perlu membalik bit (reverse) atau apa arti bagian-bagian yang kosong
Lelucon “kalau ini berhasil direkayasa balik, tekanan darah saya rasanya akan membaik” terasa sangat mengena, sampai setelah membacanya saya benar-benar merasa lebih sehat
Setelah minum jus jeruk dan makan pisang dua kali sehari, tekanan darah turun dari 142/90 → 125/80
Jadi asupan kalium saya menjadi sekitar 2000mg per hari
Kalimat “stupid in ways that made me think” terasa seperti ringkasan yang sangat tepat tentang kelebihan sekaligus keterbatasan AI
Saya juga mulai mengelola data kesehatan saya sendiri dengan cara yang mirip
Sepertinya akan makin banyak pengembang yang bertambah tua, mulai merasakan ada yang tidak beres pada tubuhnya, lalu melakukan pengelolaan kesehatan mandiri
Dokumen terkait saya rangkum di mikado-aktiia.readthedocs.io
Saya membaca PDF dengan BPExtract lalu mengekspor semua hasil pengukuran ke Apple Health secara otomatis, dan rasanya otomatisasi jauh lebih baik daripada manual
Dokter umum pada akhirnya hanya berperan sebagai pengarah ke spesialis, dan waktu tunggunya terlalu lama
Namun kita tetap harus selalu berasumsi bahwa penilaian diri sendiri bisa saja salah
Melihat dump trafiknya membuat saya ingin menganalisis protokolnya secara offline
Belum lama ini saya juga menghabiskan setengah hari untuk reverse engineering driver printer virtual Windows, lalu memaksa diri berhenti walaupun ingin terus melanjutkannya