2 คะแนน โดย GN⁺ 2023-12-16 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

การทำวิศวกรรมย้อนกลับคอนโทรลเลอร์ไฟ LED แบบ Bluetooth LE หรือฉันทำไฟคริสต์มาสพังได้อย่างไร

  • อุปกรณ์ที่สื่อสารผ่าน Bluetooth LE และมีแอป ควรค่าแก่การนำไปรวมเข้ากับระบบบ้านอัตโนมัติ
  • ผู้เขียนใช้เวลาไม่น้อยในการทำวิศวกรรมย้อนกลับและทำระบบอัตโนมัติให้กับแถบไฟ LED ราคาประหยัด
  • ล่าสุดสามารถเชื่อมต่อแถบไฟแบบไม่ระบุตำแหน่ง 5 เมตรที่ควบคุมด้วย Bluetooth LE ราคาเพียง £2.38 เข้ากับ Home Assistant ได้ภายในไม่กี่ชั่วโมง

ขั้นตอนที่ 1 ไบต์ผ่านสายไฟ

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

ขั้นตอนที่ 2 การโจมตีแบบเล่นซ้ำ

  • หากเป้าหมายมีแค่เปิดและปิดไฟ ชุดไบต์ซ้ำที่สังเกตได้อาจเพียงพอสำหรับควบคุมพลังงาน
  • สามารถใช้ gatttool เพื่อเชื่อมต่อกับอุปกรณ์ BLE และส่งไบต์เพื่อทดสอบได้

ขั้นตอนที่ 3 ถอดคอมไพล์แอป Android

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

ขั้นตอนที่ 4 ฟังก์ชันทั้งหมด

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

ขั้นตอนที่ 5 เครื่องสร้างขยะอิเล็กทรอนิกส์อัตโนมัติ

  • ระหว่างสำรวจการเปลี่ยนสี พบว่าแอปไม่เคยส่งค่ามากกว่า 0x1F สำหรับสีแดง เขียว และน้ำเงิน
  • เมื่อลองใช้ค่าแบบ 8 บิต ก็พบว่าสีที่สว่างกว่าทำงานได้ดี
  • เพราะสงสัยว่าอาจมีเอฟเฟกต์เพิ่มเติม จึงลองด้วยลูปง่าย ๆ
  • ทุกอย่างทำงานได้ดีจนถึงเอฟเฟกต์ที่ 10 แต่ในเอฟเฟกต์ที่ 11 พบโหมดลับ และในเอฟเฟกต์ที่ 12 ความมืดก็มาถึง
  • ลองรีบูตแล้ว แต่ไฟไม่กลับมาเปิดอีก และยังไม่ประกาศ Bluetooth อีกต่อไป จึงไม่สามารถเชื่อมต่อได้แล้ว
  • คาดว่าเฟิร์มแวร์เสียหายจากบัฟเฟอร์โอเวอร์โฟลว์
  • อย่างไรก็ตาม LED เองเป็น LED มาตรฐานแบบระบุตำแหน่งได้ จึงยังสามารถนำไปต่อกับไมโครคอนโทรลเลอร์ตัวอื่นเพื่อใช้งานได้

ฉันจะทำไฟของฉันพังได้อย่างไร

  • แม้จะเกิดปัญหา ผู้เขียนก็ยังจัดทำเอกสารโปรโตคอลไว้เกือบทั้งหมด และสร้างโปรเจกต์บน Github ที่มีคอมโพเนนต์แบบกำหนดเองสำหรับ Home Assistant รวมอยู่ด้วย
  • ใช้งานได้ แต่ต้องยอมรับความเสี่ยงเอง

ความเห็นของ GN⁺

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

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

 
GN⁺ 2023-12-16
ความคิดเห็นจาก Hacker News
  • การวิเคราะห์แพ็กเก็ตที่ถอดรหัสแล้ว

    • จากการพยายามถอดรหัสแพ็กเก็ต พบว่ามีเฮดเดอร์แบบคงที่ และไบต์ที่ 5 สลับระหว่าง 1 และ 0 เพื่อแสดงสถานะเปิดและปิด ส่วนที่เหลือถูกเติมด้วย 0 จึงคาดว่าแพ็กเก็ตนี้ประกอบด้วยความยาวคำสั่ง คำสั่ง ("TURN") และอาร์กิวเมนต์ (0 หรือ 1) โดยถูกแพดให้มีขนาด 16 ไบต์
  • ปัญหาแหล่งจ่ายไฟ

    • แถบไฟ LED WS281x สว่างมากและกินกระแสสูงมาก แหล่งจ่ายไฟ 12V, 3A แทบจะพอสำหรับขับสตริปทั้ง 100 ดวงที่ความสว่างสูงสุด การที่เฟิร์มแวร์ดูเหมือนจะใช้ค่าเพียง 31 จากความสว่างสูงสุด 255 บ่งชี้ว่าอาจมีฟิวส์ขาด
  • ความพยายามรีเวิร์สเอนจิเนียร์ไฟเข้ารหัส

    • เคยพยายามรีเวิร์สเอนจิเนียร์ไฟแบตเตอรี่ LED ของ Aputure 60d และ SmallRig RM75 แต่พบว่ามีการเข้ารหัสอยู่ ไฟทั้งสองรุ่นใช้กระบวนการเจรจาเดียวกัน แต่ใช้คนละไลบรารี พยายามเลียนแบบกระบวนการแลกเปลี่ยนกุญแจ Diffie-Hellman แต่ยอมแพ้เมื่อไม่สามารถเข้าใจจุดประสงค์ของตัวเลขที่ดูสุ่มในขั้นตอนเพิ่มเติมได้ (อาจเป็นกุญแจอีกตัว?) การอ่านโพสต์นี้ทำให้อยากลองใช้กุญแจที่ฮาร์ดโค้ดไว้
  • ความเห็นเกี่ยวกับไฟ BLE

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

    • เคยพยายามทำระบบอัตโนมัติกับไฟคริสต์มาสที่เชื่อมต่อผ่าน BLE แต่สุดท้ายกลายเป็นการสร้างขยะอิเล็กทรอนิกส์ ตอนนี้คุณก็ทำได้เหมือนกัน
  • ข้อสงสัยเกี่ยวกับการเข้ารหัสข้อความ

    • ตั้งคำถามว่าทำไมข้อความจึงถูกเข้ารหัส และนี่เป็นมาตรฐานทั่วไปหรือไม่
  • คอมเมนต์เกี่ยวกับการเข้ารหัส

    • "จะส่งข้อความแบบ plaintext ผ่านอากาศไม่ได้ มันไม่ปลอดภัย" และ "ไม่ต้องห่วง ฉันเพิ่มการเข้ารหัส AES แล้ว"
  • คอมเมนต์เชิงขำขันเกี่ยวกับการแฮ็กไฟ

    • เมื่อมีคนพูดว่า "บอกฉันหน่อยว่าจะแฮ็กไฟของฉันได้อย่างไร" ก็มีคนตอบว่า "ฮ่าๆ! ชอบจัง"
  • คำถามจากมือใหม่เกี่ยวกับการรีเวิร์สเอนจิเนียร์ไฟ Govee

    • คำถามจากมือใหม่ว่าทำไมถึงรีเวิร์สเอนจิเนียร์ไฟ WiFi อย่างไฟของ Govee ไม่ได้ หรือการทำ MITM (man-in-the-middle) นั้นยากกว่าหรือไม่