1 คะแนน โดย GN⁺ 2025-11-13 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • หลังจากสวม เครื่องวัดความดันโลหิต Microlife WatchBP O3 ที่ร้านขายยาและพยายามดูข้อมูลด้วยตนเอง ก็พบ พอร์ต micro-USB ของอุปกรณ์
  • รัน ซอฟต์แวร์ WatchBP Analyzer ในสภาพแวดล้อม Linux แต่ไม่สามารถตรวจพบอุปกรณ์ได้ จากนั้นจึงดาวน์โหลดข้อมูลสำเร็จผ่าน Windows virtual machine
  • ใช้ Wireshark และ usbmon จับการสื่อสารผ่าน USB และยืนยันโครงสร้างไบต์ในแพ็กเก็ตข้อมูลที่มีค่า ความดันตัวบน·ความดันตัวล่าง และอัตราการเต้นหัวใจ
  • ติดตาม OPP (Oscillatory Peak Pressure) และ timestamp เพิ่มเติม แต่ยังตีความโครงสร้างของข้อมูลเวลาไม่ได้อย่างชัดเจน
  • แม้ความพยายามทำวิศวกรรมย้อนกลับจะต้องหยุดลงเพราะหมดเวลา แต่ก็เป็นกรณีตัวอย่างที่ได้เรียนรู้ทั้ง ประสบการณ์การวิเคราะห์โครงสร้างข้อมูล และแนวคิดเรื่อง ‘white coat hypertension’

เครื่องวัดความดันโลหิตและความพยายามช่วงแรก

  • หลังไปรับวัคซีนไข้หวัดใหญ่ที่ร้านขายยา ผลการวัดความดันออกมาสูง จึงต้องสวม อุปกรณ์วัดความดันตลอด 24 ชั่วโมง
    • อุปกรณ์จะวัดอัตโนมัติทุก 30 นาที (กลางวัน) และ 60 นาที (กลางคืน)
    • เมื่อพบ พอร์ต micro-USB ที่ด้านข้างอุปกรณ์ จึงลองเข้าถึงข้อมูล
  • รุ่นของอุปกรณ์คือ Microlife WatchBP O3 และได้ดาวน์โหลด ซอฟต์แวร์ WatchBP Analyzer สำหรับ Windows ที่เกี่ยวข้อง
    • ลองรันด้วย Bottles บนสภาพแวดล้อม Linux แต่ไม่สามารถตรวจพบอุปกรณ์ได้
    • อุปกรณ์แสดงเป็น hidraw และยืนยันได้ว่าใช้อินเทอร์เฟซ USB HID
  • หลังจากนั้นติดตั้ง Windows virtual machine (Gnome Boxes) และเชื่อมต่ออุปกรณ์ USB จึงดาวน์โหลดข้อมูลได้สำเร็จ
    • ใน WatchBP Analyzer สามารถดูค่าการวัด 3 ครั้งแรกได้

การวิเคราะห์ทราฟฟิก USB

  • ใช้สภาพแวดล้อม virtual machine เพื่อจับการสื่อสาร USB ด้วย Wireshark
    • บันทึกการไหลของข้อมูลระหว่างอุปกรณ์กับโฮสต์ผ่านอินเทอร์เฟซ usbmon3
  • พบลำดับไบต์ในแพ็กเก็ตที่ดูเหมือนจะมีค่าความดันโลหิตรวมอยู่
    • ตัวอย่าง: 05 0a 89 71 43 9b
    • คาดว่าไบต์ตัวที่ 3 คือ ความดันตัวบน (SYS), ตัวที่ 4 คือ ความดันตัวล่าง (DIA) และตัวที่ 5 คือ อัตราการเต้นหัวใจ (HR)
  • เปรียบเทียบค่าการวัดหลายชุดเพื่อสรุป แพตเทิร์นของข้อมูล
    • เช่น 137/113/67, 132/86/68, 126/84/82 เป็นต้น
    • แต่ละแพ็กเก็ตประกอบด้วยหน่วยขนาด 32 ไบต์ โดยไบต์แรกใช้แสดงความยาวของข้อมูลที่มีนัยสำคัญ (SIGNIFICANT BITS)

การสำรวจโครงสร้างข้อมูลเพิ่มเติม

  • วิเคราะห์ไบต์เพิ่มเติมที่มี OPP (Oscillatory Peak Pressure) และ timestamp
    • ข้อมูล OPP อยู่ในแพ็กเก็ตหลังการวัดแต่ละครั้ง แต่ตำแหน่งไม่คงที่
    • แม้จะตั้งสมมติฐานว่า 4 ไบต์ถัดจาก SYS, DIA, HR เป็น timestamp 32 บิต แต่กลับไม่ตรงกับเวลาวัดจริง
  • สังเกตว่า ค่า ในคอลัมน์ที่ 6 เปลี่ยนจาก 82 เป็น 83 ตอนสลับช่วงเช้า-บ่าย และคอลัมน์ที่ 7 จะถูกรีเซ็ต
    • ค่าบางส่วนมีแนวโน้มคล้ายจำนวนนาทีของเวลาที่วัด แต่ยังไม่พบกฎที่ชัดเจน

การทดลองกับ AI และโค้ด

  • ป้อนข้อมูลให้โมเดล AI หลายตัวผ่านแพลตฟอร์ม Kagi เพื่อช่วยวิเคราะห์
    • บางตัวให้ผลลัพธ์ที่ใช้ไม่ได้ แต่ก็ช่วยชี้แนวทาง เช่น แนวคิดเรื่อง endianness
  • พยายามใช้ Python เลียนแบบ initial handshake และการดาวน์โหลดข้อมูลของอุปกรณ์ แต่โค้ดที่ AI ให้มาส่วนใหญ่ไม่ถูกต้อง
    • ในกระบวนการนี้ได้รู้จักไลบรารี pyhidapi เพิ่มเติม

สรุปและบทเรียน

  • งานทำวิศวกรรมย้อนกลับต้องหยุดลงเพราะถึงกำหนดคืนอุปกรณ์
    • แต่ในกระบวนการก็ได้รับ ประสบการณ์ปฏิบัติในการวิเคราะห์โครงสร้างข้อมูล USB และการทำวิศวกรรมย้อนกลับ
  • กล่าวถึงคำศัพท์ใหม่ที่ได้เรียนรู้คือ ‘Normotension’ (ความดันโลหิตปกติ) และ ‘White Coat Hypertension’ (ความดันสูงเมื่อพบแพทย์)
    • การวัดความดันทันทีหลังฉีดยาอาจทำให้ค่าที่ได้สูงขึ้นชั่วคราว
  • สรุปคือ ไม่แนะนำให้วัดความดันทันทีหลังรับวัคซีน

1 ความคิดเห็น

 
GN⁺ 2025-11-13
ความคิดเห็นจาก Hacker News
  • มีปัญหาความดันโลหิตสูงเลยซื้ออุปกรณ์ Hilo มาใช้
    หลังจากใส่ผ้าพันแขนเพื่อปรับเทียบ (calibration) แล้ว ก็สวมอุปกรณ์ชิ้นเล็กที่ข้อมือ จากนั้นมันจะวัดความดันโลหิตให้อัตโนมัติทั้งกลางวันและกลางคืนเวลาที่ไม่ได้เคลื่อนไหว
    ข้อมูลจะซิงก์และเก็บไว้ในแอปสมาร์ตโฟน จึงเลี่ยงทั้งความยุ่งยากจากการต้องใส่ผ้าพันแขนทุกครั้ง และภาวะความดันสูงเวลาเจอหมอ (white coat hypertension) ได้
    แต่ก็ยังต้องปรับเทียบใหม่ด้วยผ้าพันแขนประมาณเดือนละครั้ง และฟีเจอร์ที่ใช้กล้องของแอปวัดนิ้วก็ให้ผลไม่นิ่ง

    • เลยสงสัยว่าความแม่นยำจริง ๆ อยู่ในระดับไหน
  • ในบทความเกี่ยวกับ AI มีวลีว่า “stupid in ways that made me think” ซึ่งรู้สึกว่านี่สรุปได้ดีมากว่าทำไม AI ถึงมีประโยชน์กับการทำ rubber duck debugging
    มันทำให้คิดลึกกว่าเวลาคุยกับเพื่อนร่วมงานเสียอีก

  • พอใส่อุปกรณ์ติดตามอัตราการเต้นหัวใจแล้ววิเคราะห์ข้อมูล ก็พบว่ามีแค่สองกรณีเท่านั้นที่หัวใจเต้นพุ่งขึ้น — ตอนขับรถกับตอนคุยกับภรรยา

    • มีมุกว่าถ้าเพื่อวิทยาศาสตร์ ก็น่าจะต้องมีข้อมูลตอนขับรถไปคุยกับภรรยาด้วย
    • บางครั้ง Oura มองว่าการออกกำลังกายในยิมเป็นความเครียด ซึ่งก็มีคนเห็นว่าจริง ๆ แล้วการออกกำลังกายก็คือความเครียดต่อร่างกายแบบหนึ่ง
      นักว่ายน้ำคนหนึ่งบอกว่าไม่ใช้อุปกรณ์อะไรเลย แค่ฟังเสียงหัวใจตัวเอง
    • พูดติดตลกว่าอาจเป็นเพราะรักทั้งรถและภรรยาก็ได้
  • ภาวะความดันสูงเวลาเจอหมอไม่ได้เกิดจากการฉีดยาหรือบรรยากาศโรงพยาบาลเท่านั้น แต่อาจมาจากความกดดันของสถานการณ์ตอนวัดล้วน ๆ ก็ได้

    • มีเพื่อนคนหนึ่งวัดความดันกับพยาบาลสาวสวยที่โรงพยาบาลแล้วออกมาสูงมาก พอหมอวัดซ้ำก็ยังสูงอยู่
      สุดท้ายเลยได้ยามากิน
    • เคยรีบวิ่งไปโรงพยาบาลเพราะกลัวสาย แล้ววัดความดันออกมาสูงมาก หมอเลยแนะนำให้กลับไปวัดใหม่ที่บ้านตอนเงียบ ๆ
    • ภรรยาคนหนึ่งต้องไปโรงพยาบาลบ่อยเพราะโรคภูมิคุ้มกันทำลายตนเอง แล้วครั้งหนึ่งเครื่องวัดความดันอัตโนมัติเสีย มันบีบแขนซ้ำ ๆ จนน่ากลัวมาก
      หลังจากนั้นทุกครั้งที่ภรรยาวัดความดัน คนเล่าก็พลอยเครียดไปด้วย
    • บางคนกลัวหมอฟันมาก ถ้าต้องใส่อุปกรณ์ติดตามตลอดเวลา ความดันคงพุ่งแน่ตอนอยู่ที่คลินิกทันตกรรม
    • ตัวเองต้องวัดความดันทุกวันเพราะปรับยา ADHD และแม้ในเงื่อนไขเดียวกัน ค่าก็ยังแกว่งตั้งแต่ 115/75 ถึง 135/90
      เลยดูแค่ค่าเฉลี่ย โดยทั้ง A&D UA-611 Plus ที่บ้านและเครื่องที่โรงพยาบาลก็แกว่งคล้ายกัน
  • ลองวิเคราะห์ฟอร์แมตข้อมูลและเดาว่าปี เดือน วัน ชั่วโมง นาที ถูกเก็บในระดับบิตอย่างไรแล้ว แต่ก็ยังไม่เข้าใจว่าทำไมถึงต้องมีการกลับบิต (reverse) หรือช่วงว่างในข้อมูลหมายถึงอะไร

  • มุกที่ว่า “ถ้า reverse engineer สิ่งนี้ได้ ความดันคงดีขึ้น” โดนใจมาก จนอ่านจบแล้วรู้สึกเหมือนสุขภาพดีขึ้นจริง ๆ

  • พอกินน้ำส้มกับกล้วยวันละสองรอบ ความดันก็ลดจาก 142/90 → 125/80
    เท่ากับได้รับโพแทสเซียมวันละราว 2000mg

    • เลยมีคนถามว่านี่หมายถึงเริ่มกินน้ำส้มกับกล้วยเพื่อให้ความดันลด หรือหยุดกินกันแน่
  • ประโยค “stupid in ways that made me think” ดูเหมือนจะสรุปทั้งข้อดีและข้อจำกัดของ AI ได้ดี

    • AI เป็นทั้งrubber duck ที่ใช้ได้ และเป็น search engine ที่พอใช้ได้เหมือนกัน
  • ตัวเองก็เริ่มจัดการข้อมูลสุขภาพด้วยตัวเองเหมือนกัน
    คิดว่าแนวโน้มที่นักพัฒนาอายุมากขึ้นแล้วเริ่มรู้สึกถึงความผิดปกติของร่างกาย จนหันมาทำ การดูแลสุขภาพเชิงรุกด้วยตัวเอง จะมีมากขึ้นเรื่อย ๆ
    เอกสารที่เกี่ยวข้องถูกรวบรวมไว้ที่ mikado-aktiia.readthedocs.io

    • แอปเวอร์ชันล่าสุดสามารถส่งออกค่าเฉลี่ยรายวันไปยัง Apple Health ได้
      ส่วนตัวใช้ BPExtract อ่าน PDF แล้วส่งค่าการวัดทั้งหมดเข้า Apple Health แบบอัตโนมัติ และรู้สึกว่าการทำอัตโนมัติดีกว่าทำเองมาก
    • มีคนเสนอว่าบางทีการดักจับทราฟฟิก Bluetooth โดยตรงอาจง่ายกว่าการอ่าน PDF
    • ทุกวันนี้รู้สึกว่าไม่ว่าอายุเท่าไร ก็เป็นยุคที่ต้องดูแลสุขภาพตัวเองให้มากขึ้น
      เพราะ GP ทั่วไปมักทำหน้าที่แค่ส่งต่อไปหาผู้เชี่ยวชาญ และเวลารอก็นานเกินไป
      แต่ก็ต้องตั้งต้นไว้เสมอว่าการวินิจฉัยของตัวเองอาจผิดได้
    • มีคนทักเบา ๆ ว่าลืมวงเล็บไปหนึ่งอัน
  • พอเห็น traffic dump ก็ชวนให้อยากลองวิเคราะห์โปรโตคอลแบบออฟไลน์ดู
    ไม่นานมานี้ก็เพิ่งเสียเวลาไปครึ่งวันกับการทำวิศวกรรมย้อนกลับ (reverse engineering) ไดรเวอร์เครื่องพิมพ์เสมือนบน Windows และต้องฝืนตัวเองให้หยุดทั้งที่ยังอยากทำต่อ

    • (ละความคิดเห็นที่ไม่เกี่ยวข้องซึ่งเป็นภาษาสเปน)