Đảo ngược kỹ thuật bộ điều khiển đèn LED Bluetooth LE, hay tôi đã phá hỏng đèn Giáng sinh của mình như thế nào
- Thiết bị giao tiếp qua Bluetooth LE và có ứng dụng đi kèm rất đáng để tích hợp vào hệ thống tự động hóa gia đình.
- Tôi đã dành khá nhiều thời gian để đảo ngược kỹ thuật và tự động hóa các dải đèn LED giá rẻ.
- Gần đây, tôi đã thành công kết nối một dải đèn 5M không định địa chỉ điều khiển bằng Bluetooth LE rẻ nhất, giá £2.38, với Home Assistant chỉ trong vài giờ.
Bước 1. Byte đi qua dây
- Để điều khiển thiết bị bằng phần mềm riêng, bước đầu tiên là kiểm tra các byte Bluetooth mà ứng dụng gửi tới thiết bị.
- Android giúp quá trình này trở nên dễ dàng. Hãy bật chế độ nhà phát triển, cài ứng dụng điều khiển đèn, sau đó bật
Bluetooth HCI snoop trong phần cài đặt nhà phát triển để ghi log.
- Mở log bằng Wireshark để xem chính xác các byte và tìm các mẫu giá trị nhằm xác định chuỗi byte cho từng thao tác.
Bước 2. Tấn công phát lại
- Nếu mục tiêu chỉ là bật và tắt đèn, thì chuỗi byte lặp lại đã quan sát được có thể là đủ để điều khiển nguồn.
- Có thể dùng
gatttool để kết nối với thiết bị BLE và gửi byte để thử nghiệm.
Bước 3. Giải biên dịch ứng dụng Android
- Tải APK của ứng dụng và mở bằng jadx để khám phá những bí mật bên trong.
- Trong mã nguồn, tôi phát hiện có tham chiếu đến AES, cho thấy khả năng giao thức được mã hóa.
- Dữ liệu mã hóa không thay đổi mỗi lần, cần giải mã nhanh trên MCU công suất thấp, và có khả năng dùng khóa cố định không riêng cho từng thiết bị.
Bước 4. Toàn bộ chức năng
- Tôi lần lượt thử từng chức năng của ứng dụng và ghi lại các byte được gửi đi.
- Việc ghi chép từng hành động, lặp lại, phát hiện mẫu và đối chiếu byte đã bắt được với ghi chú là rất hữu ích.
Bước 5. Cỗ máy tạo rác thải điện tử tự động
- Trong lúc khám phá việc đổi màu, tôi nhận thấy ứng dụng không gửi giá trị lớn hơn 0x1F cho đỏ, xanh lá và xanh dương.
- Tôi thử các giá trị 8-bit và phát hiện màu sáng hơn vẫn hoạt động tốt.
- Tò mò không biết có hiệu ứng bổ sung nào không, tôi thử bằng một vòng lặp đơn giản.
- Mọi thứ hoạt động tốt đến hiệu ứng thứ 10, nhưng ở hiệu ứng thứ 11 tôi phát hiện một chế độ bí mật, và đến hiệu ứng thứ 12 thì bóng tối ập đến.
- Tôi đã thử khởi động lại, nhưng đèn không sáng trở lại và cũng không còn phát quảng bá Bluetooth, nên không thể kết nối nữa.
- Tôi suy đoán rằng firmware đã bị hỏng do tràn bộ đệm.
- Tuy nhiên, bản thân LED là loại LED định địa chỉ tiêu chuẩn, nên vẫn có thể dùng bằng cách nối sang một vi điều khiển khác.
Tôi có thể phá hỏng đèn của mình như thế nào
- Dù gặp sự cố, tôi vẫn đã tài liệu hóa phần lớn giao thức và tạo một dự án Github bao gồm cả thành phần tùy chỉnh cho Home Assistant.
- Nó hoạt động, nhưng bạn phải tự chấp nhận rủi ro khi làm theo.
Ý kiến của GN⁺
- Điều quan trọng nhất trong bài viết này là tinh thần DIY và niềm đam mê đảo ngược kỹ thuật khi một cá nhân muốn tích hợp đèn thông minh dùng trong nhà vào hệ thống tự động hóa.
- Quá trình đảo ngược kỹ thuật không chỉ đòi hỏi kiến thức kỹ thuật mà còn cần khả năng giải quyết vấn đề và sự sáng tạo, nên đây là chủ đề rất thú vị ngay cả với kỹ sư phần mềm mới vào nghề.
- Việc chia sẻ trải nghiệm thất bại giúp người khác tránh lặp lại cùng một sai lầm, và việc chia sẻ tri thức công khai như vậy là một trong những giá trị cốt lõi của cộng đồng mã nguồn mở.
1 bình luận
Ý kiến trên Hacker News
Phân tích gói tin đã giải mã
Vấn đề cấp nguồn
Thử reverse engineering đèn mã hóa
Ý kiến về đèn BLE
Thử tự động hóa đèn Giáng sinh kết nối BLE
Thắc mắc về việc mã hóa thông điệp
Bình luận về mã hóa
Bình luận hài hước về việc hack đèn
Câu hỏi của người mới về reverse engineering đèn Govee