Kategoriler
Genel

Mecidiyeden Jetona: Xiaomi Token Challenge

Ben küçükken ankesörlü telefonlar hayatın büyük parçalarından biriydi. Özellikle evden İstanbul’a gelirken henüz arabamızın olduğu zamanlarda babamın ya da annemin mola yerlerinden aileleri aradıklarını yolun nasıl geçtiğini söylediklerini hatırlarım. PTT’nin sarı turuncu karışımı renkte, metal ve dünya yansa orada durmaya devam edecekmiş gibi görünen ankesörlü telefonları da açık sarı jetonlar da daha çok benden biraz daha büyüklerin anısı. Bense bir cep telefonum olmadan önce çantasının bir yerinde telefon kartı taşıyan nesildenim.

Kontör hesabıyla çalışan bu plastik manyetik kartlar eskinin binlerce kez kullanılan metal jetonlarının yerine geçti ve belki büyüdüğümden ya da gerçekten öyle olduğundan ankesörlü telefonla konuşma işi de plastikleşti ve en sonunda da eski bir anı olarak tarihteki yerini aldı. Şimdilerde ise ankesörlü telefonlar Türk Telekom mavisinde plastik kutulara dönüşmüş durumda ve jetonlar da kartlar da mazide kaldılar.

Peki mazide kalan bu jetonlar günümüzün bir numaralı Türkçe akıllı ev blogunda (hehehe) ne arıyorlar? Maziden gelen bir hayaletler mi yoksa jetonlar form değiştirdi ve hala içimizde mi? Okumaya devam…

Jeton, çeşitli yerlerde farklı formalarda kullanılsa bile genelde aynı amaca hizmet ederler: Hizmeti almaya ehil olduğunuzu göstermek. İster bir lunaparkta atlı karıncaya binmek istiyor olun, ister metro turnikelerinden geçecek olun ya da ister odanıza gelen arkadaşınıza bir çay ısmarlayacak olun kullandığınız marka, fiş, jeton ya da istanbul kart size hizmet verecek olan kişiye hizmetin karşılığında verdiğiniz ya da kimliğinizi ispat ettiğiniz bir parçadır.

Evde Jeton Kullanımı

Jetonlar ya da Ingilizce çevirisi ile token kavramı IT dünyasında da sıklıkla kullanılmaktadır. Makineler ya da yazılımlar arasında iletişimde ya da insanların yazılımlarla olan etkileşimlerinde istekte bulunan kişinin ya da yazılımın hizmet alıp almaya ehil olmadığı token vasıtasıyla belirlenir. Geçerli bir token’ı olan kişi ya da yazılım hizmeti alır ve istediğini talep ederken buna sahip olmayanlarsa hafif bir kıskançlıkla birlikte ortamdan uzaklaşmak durumunda kalır.

Akıllı ev sistemlerinde de cihazlar arasında iletişimin kurulabilmesi için kullanılan yöntemlerden biri de token değişimi yapılmasıdır. Bu sayede cihaz kendini kumanda etmek isteyen yazılımı tanıyarak kumanda işlevlerini yerine getirir.

Xiaomi’nin akıllı ev sistemi ailesi olan Mi Home’da da çoğu ürün benzer bir mantıkla çalışıyor. Kahir ekseriyeti kablosuz ağ üzerinden iletişim kuran bu cihazlar evinizde varsa ağ geçidiniz ona bağlanarak ya da doğrudan cep telefonu üzerinden kontrol edilebiliyor. Bu bağlantıyı kurmak için de yetkilendirme metodu olarak token kullanıyorlar.

Mi Home uygulamasından memnun değilseniz ya da daha fazla otomasyon için cihazınızı Home Assistant gibi bir akıllı ev yazılımına entegre etmek istiyorsanız bu token’a sizin de ihtiyacınız olacak demektir. Bu yazıda yeni almış olduğum Xiaomi Hava Temizleyici 2H modelinden ilgili token’ı nasıl aldığımızı anlatacağım.

Miio ile Kolay Token Almak

Xiaomi’nin evdeki cihazlarla iletişime geçmek için kullandığı MilO protokolü üzerinde uzunca süredir tersine mühendislik yapılan bir protokol. Bu çabalar sayesinde geliştirilen Miio ile ağınızda yer alan cihazları tarayabilir ve Miio’nun iletişim kurduğu cihazlardan token bilgisini alabilirsiniz. Bir NPM paketi olarak gelen Miio’yu bilgisayarınıza kurarak komut satırı üzerinden ilgili anahtarı alabilirsiniz.

Bilgisayarınızda npm’in kurulu olduğunu varsayarak öncelikle miio paketini kuralım.

npm install -g miio

g parametresi paketin tüm kullanıcılar için kurulmasını sağlıyor ve bu sayede komut satırında çalışacak dosyaya ek bir şey yapmadan erişebiliyorsunuz. Yine de kurulumu böyle yapmak istemezseniz ya da ilgili dosya yolu kabukta belirtilmemişse node_modules klasöre içinde yer alan .bin klasöründe çalıştırabilir dosyayı bulabilirsiniz.

Bir şekilde çalıştırılabilir dosyaya ulaştığınızı varsayarak miio’nun keşfetme modunu çalıştıralım.

miio discover

Bu komuttan sonra karşınıza aşağıdaki gibi bir çıktı gelecek. Eğer şansıysanız ve cihazınız miio tarafından tanınan ve token bilgisini alabileceğiniz bir cihazsa token’ı buradan görebilirsiniz.

Device ID: <cihaz kimliği>
Model info: <cihaz modeli>
Address: <ip adresi>
Token: <token bilgisi>
Support: <destek bilgisi>

Deneyelim görelim şanslı mıyım?

akinomeroglu@Akns-MacBook-Pro .bin % ./miio discover 
INFO  Discovering devices. Press Ctrl+C to stop.

Device ID: 313009702
Model info: Unknown
Address: 192.168.1.32
Token: ???
Support: Unknown

Gördüğünüz gibi o kadar da şanslı değilim. Zira elimdeki cihaz olan hava temizleyicinin 2H modeli henüz miio tarafından tanınmıyor dolayısıyla token’ı da almam mümkün değil.

Bu durumda yönümü elimdeki cep telefonu uygulamasına çevirmeye karar verdim. İnternet’te kısa bir araştırma ile hem iOS hem de Android için çeşitli açıklamalar bulabilirsiniz. Benim elimde ne yazık ki Android bir cihaz olmadığı için buradan sonrasını iOS için anlatacağım.

Heykır oldum: iOS Backup Viewer

iOS platformunda, Mi Home isimli uygulama bu uygulamaya kaydolan cihazların bilgilerini uygulama içindeki bir veritabanında saklıyor. Token da bu bilgilerden birisi ve veritabanında geri dönülebilir şekilde şifrelenerek tutuluyor. Bizim bu veritabanına telefon üzerinden erişmemiz mümkün olmadığı için kulağımızı tersten tutmamız gerekecek.

Öncelikle telefonunuzun bilgisayara bir yediğini almanız gerekiyor. Bu yedek boyutu ne yazık ki zaman zaman telefondaki uygulama sayısına göre uzun sürebiliyor. Benim telefonum yaklaşık yarım saatte yedeklendi. Güzel haberse token’ı bir kez aldıktan sonra tekrar cihazı sıfırlayana kadar kullanabiliyor olmanız.

Telefonumuz bilgisayara yedeklenirken biz de yedeğin içine bakmanın bir yolunu bulalım. Burada çok önemli bir noktayı atlamadan söyleyeyim telefon yedeğinizin şifrelenmemiş olması gerekiyor. Eğer yedeğiniz şifreliyse içine bakmanız mümkün olmayacaktır. Telefonunuzda bir şekilde hassas veri tutuyorsanız bu verinin şifrelenmemiş bir şekilde diskinize yazılacağını da unutmayın.

Telefon yedek alırken biz de bilgisayarımıza iPhone Backup Viewer yazılımını kuralım. Ne yazık ki bu yazılım sadece Mac ve Windows destekliyor. Ben bu işlemi Mac’te yaptığım için Linux ile nasıl yapılabilire bakma fırsatım olmadı.

Yedekleme işlemi tamamlandığında kurduğumuz yazılımı çalıştıralım. Yazılım karşınıza bilgisayarınızda bulduğu yedekleri getirecek. İlgili yedeğe tıklayalım ve sonrasında Uygulama simgesine tıklayalım. Açılan listeden Mihome uygulamasını bulalım. Listede 1122334455_mihome.sqlite isimli dosyayı bulalım. Burada yer alan rakamlar sizin sistemdeki üyeliniz numaranız dolayısıyla herkeste farklı olacaktır. Bu dosyayı seçelim ve dışarı aktaralım.

token için gerekli dosyayı gösteren yazılımın ekran görüntüsü

Dosyayı dışarı aktardıktan sonra bu veritabanı üzerinde ilgili veriyi bulmak için bir veritabanı gezgini yazılımına ihtiyacınız olacak. Ben Mac için DB Browser SQLite yazılımını kullandım. Veritabanını programla açın ve ZTABLE tablosu içindeki ZTOKEN alanını bulun. Bu alanı seçtikten sonra Veriyi İncele sekmesine geçin.

Burada yer alan satırlarda uygulamaya ekli olan cihazları görebilirsiniz. İlgili satırın sonundaki 96 karakterlik ZTOKEN alanındaki veriyi kopyalayın. Şimdi token’ı elde etme için son bir adımınız kaldı.

Token için son bir adım…

Yukarıda da bahsettiğim gibi uygulama içinde token şifrelenmiş olarak tutuluyor. Bu 96 karakterlik dizeyi token’a döndürmek için son bir adım atmamız gerekiyor.

echo '0: <96karakterlikdizeniz>' | xxd -r -p | openssl enc -d -aes-128-ecb -nopad -nosalt -K 00000000000000000000000000000000

Burada kabaca yaptığımız iş şu şekilde. Aldığımız dizeyi hexdump ile ikili formata çeviriyoruz ve çıktısını da openssl’de decrypt ediyoruz. Bunun sonunda ise elinizde cihazla haberleşmek için gerekli token oluşacak. Ufak bir nokta elde ettiğiniz token dizesinin sonunda % karakteri varsa bu karakteri lütfen kullanmayın.

Dilerseniz miio kullanarak dilerseniz openhub ya da Home Assistant kullanarak yeni cihazınızı ev otomasyonunuza bağlayabilirsiniz.

home assistant hava temizleyici cihaz özellikleri

Bir başka yazıda görüşmek üzere.


Kaynaklar:

“Mecidiyeden Jetona: Xiaomi Token Challenge” için bir yanıt

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir