2 puan yazan GN⁺ 2023-12-16 | 1 yorum | WhatsApp'ta paylaş

Bluetooth LE LED ışık denetleyicisini tersine mühendislik etmek, ya da Noel ışıklarımı nasıl bozduğum

  • Bluetooth LE üzerinden iletişim kuran ve uygulaması olan bir cihaz, ev otomasyon sistemine entegre edilmeye değerdir.
  • Bütçe dostu LED ışık şeritlerini tersine mühendislik ederek otomatikleştirmeye hatırı sayılır zaman harcadım.
  • Son zamanlarda en ucuz £2.38’lik Bluetooth LE kontrollü 5M adreslenemeyen şeridi birkaç saat içinde Home Assistant’a bağlamayı başardım.

Adım 1. Kablo üzerinden baytlar

  • Cihazı kendi yazılımınızdan kontrol etmek istiyorsanız, ilk adım uygulamadan cihaza gönderilen Bluetooth baytlarını incelemektir.
  • Android bu süreci kolaylaştırır. Geliştirici modunu etkinleştirin, ışık uygulamasını yükleyin, ardından günlük kaydı almak için geliştirici ayarlarında Bluetooth HCI snoop seçeneğini etkinleştirin.
  • Günlüğü Wireshark ile açarak tam baytları görebilir, değerlerdeki kalıpları arayarak her eyleme karşılık gelen bayt dizilerini belirleyebilirsiniz.

Adım 2. Replay saldırısı

  • Amaç yalnızca ışıkları açıp kapatmaksa, gözlemlenen tekrarlı bayt dizileri güç kontrolü için yeterli olabilir.
  • gatttool kullanarak BLE cihazına bağlanıp bayt göndererek test yapabilirsiniz.

Adım 3. Android uygulamasını decompile etmek

  • Uygulamanın APK’sini indirip içindeki sırları görmek için jadx ile açın.
  • Kaynakta AES referansları buldum; bu da şifreli bir protokol olabileceğine işaret ediyor.
  • Şifreli veri her seferinde değişmiyor, düşük güçlü MCU üzerinde hızlı çözme gerekiyor ve her cihaza özgü olmayan sabit bir anahtar kullanılıyor olabilir.

Adım 4. Tüm işlevler

  • Uygulamadaki her işlevi tek tek deneyip gönderilen baytları kaydettim.
  • Her eylemi kaydetmek, tekrarlamak, kalıpları fark etmek ve yakalanan baytlarla notları ilişkilendirmek bu aşamada yardımcı oluyor.

Adım 5. Otomatik elektronik atık üreticisi

  • Renk değişimini incelerken uygulamanın kırmızı, yeşil ve mavi için 0x1F üzeri değerler göndermediğini fark ettim.
  • 8 bit değerleri deneyince daha parlak renklerin gayet iyi çalıştığını gördüm.
  • Ek efektler olup olmadığını merak edip bunu basit bir döngüyle denedim.
    1. efekte kadar her şey yolundaydı, ancak 11.’de gizli modu buldum ve 12.’de karanlık çöktü.
  • Yeniden başlatmayı denedim ama ışıklar bir daha yanmadı; Bluetooth yayını da yapmadığı için artık bağlanmak mümkün değildi.
  • Muhtemelen bir buffer overflow yüzünden firmware bozuldu.
  • Ancak LED’lerin kendisi standart adreslenebilir LED’ler olduğu için başka bir mikrodenetleyiciye bağlanarak kullanılabilirler.

Işıklarımı nasıl bozabilirsiniz

  • Soruna rağmen protokolün büyük bölümünü belgeledim ve Home Assistant özel bileşeni de içeren bir Github projesi oluşturdum.
  • Çalışıyor, ancak riski göze alarak ilerlemeniz gerekiyor.

GN⁺’un görüşü

  • Bu yazıdaki en önemli nokta, kişinin evde kullandığı akıllı ışıkları otomasyon sistemine entegre etme isteğini yansıtan DIY ruhu ve tersine mühendisliğe duyduğu tutkudur.
  • Tersine mühendislik süreci yalnızca teknik bilgi değil, aynı zamanda problem çözme yeteneği ve yaratıcılık da gerektirir; bu da onu junior yazılım mühendisleri için bile oldukça ilgi çekici bir konu haline getirir.
  • Başarısızlık deneyiminin paylaşılması, başkalarının aynı hataları tekrarlamamasına yardımcı olur ve bu tür açık bilgi paylaşımı açık kaynak topluluğunun temel değerlerinden biridir.

1 yorum

 
GN⁺ 2023-12-16
Hacker News görüşleri
  • Çözümlenen paket analizi

    • Paketi çözme girişimi sonucunda, sabit bir başlık olduğu ve 5. baytın açık/kapalı durumunu gösteren 1 ve 0 arasında değiştiği, geri kalanının ise 0 ile doldurulduğu görüldü. Bunun komut uzunluğunu, komutu ("TURN") ve argümanı (0 veya 1) temsil ettiği ve 16 bayta pad edildiği tahmin ediliyor.
  • Güç kaynağı sorunu

    • WS281x LED şeritler çok parlak yanıyor ve yüksek akım tüketiyor. 100 şeridin tamamını maksimum parlaklıkta çalıştırmak için 12V, 3A güç kaynağı ancak yeterli oluyor. Firmware'in maksimum parlaklık 255 yerine yalnızca 31 kullandığı görülüyor; bu da sigortanın atmış olabileceğine işaret ediyor.
  • Şifreli ışıkları tersine mühendislikle çözme denemesi

    • Amaran 60d ve SmallRig RM75 bataryalı LED ışıkları tersine mühendislikle çözmeye çalıştığını, ancak şifreli olduklarını fark ettiğini söylüyor. İki ışık da aynı müzakere sürecini kullanıyor ama farklı kütüphaneler kullanıyor. Diffie-Hellman anahtar değişimi sürecini taklit etmeye çalışmış, ancak ek bir aşamada rastgele görünen sayıların (başka bir anahtar mı?) amacını anlayamayınca vazgeçmiş. Bu yazıyı okuyunca hardcoded anahtarları denemeyi düşündüğünü belirtiyor.
  • BLE ışıkları hakkında görüş

    • BLE kullanan ışık setleri hakkında yeterince okuduğunu ve yazarın buna değinmesine sevindiğini söylüyor. Bunun Analog Technology Connections videosunu hatırlattığını belirtiyor.
  • BLE bağlantılı Noel ışıklarını otomatikleştirme denemesi

    • BLE bağlantılı Noel ışıklarını otomatikleştirmeye çalışmış ama sonuç elektronik atık olmuş. Artık siz de yapabilirsiniz.
  • Mesaj şifrelemesiyle ilgili soru işareti

    • Mesajların neden şifreli olduğu ve bunun standart olup olmadığı sorgulanıyor.
  • Şifreleme hakkında yorum

    • "Havadan düz metin gönderemeyiz, güvenli değil" sözüne karşılık, "Merak etme, AES şifrelemesi ekledim" yorumu yapılıyor.
  • Işık hackleme hakkında esprili yorum

    • "Işıklarımı nasıl hackleyebileceğini bana söyle" sözüne "Haha! Bayıldım" diye karşılık veriliyor.
  • Govee ışıklarını tersine mühendislikle çözme hakkında acemi sorusu

    • Govee ışıkları gibi WiFi ışıklarının neden tersine mühendislikle çözülemediği ve MITM'nin (ortadaki adam saldırısı) daha mı zor olduğu soruluyor.