Rekayasa balik pengontrol lampu LED Bluetooth LE, atau bagaimana saya merusak lampu Natal saya
- Perangkat yang berkomunikasi melalui Bluetooth LE dan memiliki aplikasi layak diintegrasikan ke dalam sistem otomasi rumah.
- Menghabiskan cukup banyak waktu untuk merekayasa balik dan mengotomatisasi strip lampu LED yang ramah anggaran.
- Baru-baru ini berhasil menghubungkan strip 5M non-addressable termurah seharga £2.38 dengan kontrol Bluetooth LE ke Home Assistant hanya dalam beberapa jam.
Langkah 1. Byte melalui kabel
- Untuk mengendalikan perangkat dengan perangkat lunak sendiri, langkah pertama adalah memeriksa byte Bluetooth yang dikirim aplikasi ke perangkat.
- Android mempermudah proses ini. Aktifkan mode pengembang, pasang aplikasi lampu, lalu aktifkan
Bluetooth HCI snoop di pengaturan pengembang untuk merekam log.
- Buka log dengan Wireshark untuk melihat byte yang tepat, lalu cari pola nilainya untuk mengidentifikasi rangkaian byte untuk setiap tindakan.
Langkah 2. Serangan replay
- Jika tujuannya hanya menyalakan dan mematikan lampu, rangkaian byte berulang yang diamati mungkin sudah cukup untuk kontrol daya.
- Anda dapat menguji dengan menghubungkan ke perangkat BLE menggunakan
gatttool dan mengirimkan byte tersebut.
Langkah 3. Mendekompilasi aplikasi Android
- Unduh APK aplikasi dan buka di jadx untuk melihat rahasia di dalamnya.
- Menemukan referensi ke AES di dalam source, yang mengisyaratkan kemungkinan adanya protokol terenkripsi.
- Data terenkripsi tidak berubah setiap saat, diperlukan dekripsi cepat pada MCU berdaya rendah, dan kemungkinan ada kunci tetap yang tidak unik untuk tiap perangkat.
Langkah 4. Semua fungsi
- Menelusuri setiap fungsi aplikasi sambil mencatat byte yang dikirim.
- Ini membantu merekam setiap tindakan, mengulanginya, menemukan pola, dan mengorelasikan byte yang tertangkap dengan catatan.
Langkah 5. Mesin pembuat limbah elektronik otomatis
- Saat menelusuri perubahan warna, teramati bahwa aplikasi tidak pernah mengirim nilai di atas 0x1F untuk merah, hijau, dan biru.
- Mencoba nilai 8-bit dan menemukan bahwa warna yang lebih terang bekerja dengan baik.
- Karena penasaran apakah ada efek tambahan, hal itu dicoba dengan sebuah loop sederhana.
- Hingga efek ke-10 semuanya berjalan baik, tetapi pada efek ke-11 ditemukan mode rahasia, dan pada efek ke-12 kegelapan pun datang.
- Mencoba reboot, tetapi lampu tidak menyala lagi, dan juga tidak lagi melakukan iklan Bluetooth sehingga tidak bisa dihubungkan lagi.
- Diduga firmware rusak akibat buffer overflow.
- Namun LED-nya sendiri adalah LED addressable standar, jadi masih bisa digunakan dengan menghubungkannya ke mikrokontroler lain.
Bagaimana saya bisa merusak lampu saya
- Meski masalah terjadi, sebagian besar protokol berhasil didokumentasikan dan dibuatkan proyek Github yang mencakup komponen kustom Home Assistant.
- Ini berfungsi, tetapi Anda harus melanjutkannya dengan menanggung risikonya sendiri.
Opini GN⁺
- Hal terpenting dari tulisan ini adalah semangat DIY dan antusiasme terhadap rekayasa balik untuk mengintegrasikan lampu pintar rumahan ke dalam sistem otomasi.
- Proses rekayasa balik tidak hanya memerlukan pengetahuan teknis tetapi juga kemampuan pemecahan masalah dan kreativitas, sehingga menjadi topik yang sangat menarik bahkan bagi insinyur perangkat lunak pemula.
- Berbagi pengalaman kegagalan membantu orang lain agar tidak mengulangi kesalahan yang sama, dan keterbukaan berbagi pengetahuan seperti ini adalah salah satu nilai inti komunitas open source.
1 komentar
Pendapat Hacker News
Analisis paket yang berhasil didekode
Masalah catu daya
Upaya reverse engineering lampu terenkripsi
Pendapat tentang lampu BLE
Upaya otomatisasi lampu Natal terhubung BLE
Pertanyaan tentang enkripsi pesan
Komentar tentang enkripsi
Komentar humor tentang peretasan lampu
Pertanyaan pemula tentang reverse engineering lampu Govee