การทำวิศวกรรมย้อนกลับคอนโทรลเลอร์ไฟ 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 ความคิดเห็น
ความคิดเห็นจาก Hacker News
การวิเคราะห์แพ็กเก็ตที่ถอดรหัสแล้ว
ปัญหาแหล่งจ่ายไฟ
ความพยายามรีเวิร์สเอนจิเนียร์ไฟเข้ารหัส
ความเห็นเกี่ยวกับไฟ BLE
ความพยายามทำระบบอัตโนมัติกับไฟคริสต์มาสที่เชื่อมต่อ BLE
ข้อสงสัยเกี่ยวกับการเข้ารหัสข้อความ
คอมเมนต์เกี่ยวกับการเข้ารหัส
คอมเมนต์เชิงขำขันเกี่ยวกับการแฮ็กไฟ
คำถามจากมือใหม่เกี่ยวกับการรีเวิร์สเอนจิเนียร์ไฟ Govee