Lấy token của thiết bị Xiaomi

Mỗi khi một thiết bị Xiaomi được thêm vào ứng dụng Mi Home thì Mi Home gán cho thiết bị một chuỗi hex dài 32 ký tự gọi là token. Nhờ token mà Mi Home định danh và điều khiển được thiết bị. Mỗi khi thay đổi account Mi Home hay thay đổi region, tất cá token có thể bị thay thế.

Theo thời gian, việc quản lý và lưu trữ token của Mi Home có nhiều thay đổi theo hướng bảo mật hơn, khó trích xuất hơn. HASS cần token để điều khiển thiết bị một cách độc lập, không qua Mi Home.

Tại thời điểm này, các phương pháp trích xuất token như lệnh miio hay MiTool đều trả lại giá trị null.

Các phương pháp sau còn hiệu quả:

Trong mọi trường hợp, thiết bị Xiaomi cần lấy token phải được thêm vào MiHome và MiHome có thể điều khiển được thiết bị.

AndroidCài Bluestacks hay MEmu lên PC để chạy giả lập Android, xong tìm app Mi Home phiên bản 5.4.54 cài rồi login tài khoản Mi Home, truy cập tới thư mục smarthome/log tìm token. Trường hợp này token được ghi trong file text dạng:

{"did":"117383849","token":"90557f13732y2494h278314a74d547b5","longitude":"x","latitude":"y","name":"Mi Robot Vacuum","pid":"0","localip":"192.168.88.68","mac":"40:31:3C:AA:BB:CC","ssid":"Your AP Name","bssid":"E4:8D:8C:EE:FF:GG","parent_id":"","parent_model":"","show_mode":1,"model":"rockrobo.vacuum.v1","adminFlag":1,"shareFlag":0,"permitLevel":16,"isOnline":true,"desc":"Zoned cleanup","extra":{"isSetPincode":0,"fw_version":"3.3.9_003460","needVerifyCode":0,"isPasswordEncrypt":0},"event":{"event.back_to_dock":"{\"timestamp\":1548817566,\"value\":[0]}

Nếu tìm thấy nhiều thiết bị khác nhau, tìm thiết bị có tên là Robot Vacuum.

IOS: Trích xuất token từ CSDL của Mi Home. Hiện nay token đã bị mã hóa nên cần thêm bước giải mã. Chi tiết như sau:

  • Dùng iTunes tạo một bản backup không mã hóa của iPhone/iPad
  • Cài đặt iBackup Viewer
  • Dùng iBackup Viewer mở file sao lưu vừa tạo ở kiểu Raw Files
  • Tìm ở cột bên trái rồi click lên com.xiaomi.mihome
  • Dùng công cụ tìm kiếm tìm từ khóa _mihome, khi đó sẽ tìm thấy file có dạng Documents/12345678_mihome.sqlite. Export file này.
  • Mở file này bằng cách dùng SQLite browser (như http://sqlitebrowser.org/ hay dùng addon SQlite Manager trên FireFox), chạy truy vấn
  select ZNAME,ZLOCALIP,ZTOKEN from ZDEVICE

  • Các token bị mã hóa thành chuỗi hex dài 96 ký tự, giải mã như hình sau, trong đó (1) là chuỗi 96 ký tự, kết quả giải mã là 2 dòng đầu ở (7) gồm 32 ký tự.

Comments Off on Lấy token của thiết bị Xiaomi

Filed under Software

Comments are closed.