2 điểm bởi GN⁺ 2024-07-02 | 1 bình luận | Chia sẻ qua WhatsApp

Động cơ

  • Đã khám phá khả năng truy cập qua mạng nội bộ của giường Sleep Number trong nhiều năm
  • Đã tạo một plugin homebridge có thể điều khiển cài đặt giường thông qua HomeKit
  • Sleep Number đã yêu cầu vô hiệu hóa plugin vì tần suất gọi API quá cao
  • Đã quyết định tìm cách bỏ qua máy chủ bằng truy cập qua mạng nội bộ

Yêu cầu chuẩn bị trước

  • Số hiệu model Sleep Number Hub: 360SIQ01D
  • Cần thiết bị UART to TTY và các công cụ phần cứng khác
  • Cần ổ flash USB-A

Giành quyền truy cập root

  1. Kết nối thiết bị UART vào header J16
  2. Kết nối console với thiết bị UART (baud rate: 115200)
  3. Bật nguồn hub và nhấn <SPACE> trong vòng 2 giây để dừng chuỗi khởi động tự động
  4. Chỉnh sửa biến môi trường khởi động
    • Sao lưu các biến môi trường mặc định
    • Xóa run set_bootargs; khỏi biến bootcmd
    • Thêm nội dung sau vào biến bootargs:
      console=ttymxc0,115200 root=/dev/mmcblk${linux_mmcdev}p1 rootwait rdinit=/bin/bash -- -c "sed -i 's/LMR=`.*`/LMR=let_me_root/' /init; exec /init"
      
  5. Khi khởi động lần đầu, cắm ổ flash có tệp let_me_root
  6. Mount lại phân vùng root ở chế độ rw và thêm tệp let_me_root
  7. Thiết lập truy cập SSH

Tạo máy chủ điều khiển và giám sát mạng nội bộ

  • Thiết lập máy chủ HTTP bằng Python 2.7.18
  • Viết script máy chủ HTTP có thể chạy các script trong thư mục /bam/scripts
  • Sao chép script vào hub và chạy nó

Thêm script rc.d

  • Thêm script rc.d vào phân vùng /real.root
  • Sao chép script vào hub và di chuyển đến vị trí phù hợp
  • Thêm các symbolic link cần thiết

Các lệnh hữu ích

  • Có thể dùng nhiều lệnh điều khiển giường khác nhau trong script /bio
  • Lệnh ví dụ:
    • arg=PSNL: Lấy giá trị số ngủ được thiết lập gần nhất của bên trái giường
    • arg=PSNS&arg=L100: Đặt số ngủ của bên trái giường thành 100

Các bước tiếp theo

  • Khám phá chức năng điều khiển giường trong thư mục gốc /bam
  • Cân nhắc các vấn đề bảo mật của hub đang giao tiếp với máy chủ Sleep Number thông qua SSH tunnel
  • Viết một ứng dụng web đơn giản có thể thay thế ứng dụng SleepIQ

Phụ lục: các biến môi trường U-Boot gốc của hub

  • baudrate=115200
  • bootcmd=run find_board_name; run set_bootargs;setenv boot_mmcdev 0; run bootcmd_mmc;setenv boot_mmcdev 1; run bootcmd_mmc
  • Các biến khác...

Ý kiến của GN⁺

  • Hướng dẫn này cho phép truy cập qua mạng nội bộ tới giường Sleep Number, mang lại cho người dùng nhiều quyền kiểm soát hơn
  • Xét đến các vấn đề bảo mật của hub, nên ngắt kết nối Internet bên ngoài
  • Cũng có những sản phẩm nhà thông minh khác cung cấp chức năng tương tự
  • Khi đưa công nghệ mới vào sử dụng, cần cân nhắc cẩn thận các vấn đề về bảo mật và bảo trì

1 bình luận

 
GN⁺ 2024-07-02
Bình luận trên Hacker News
  • Trước đây đã dùng một chiếc giường không có tính năng thông minh

    • Hai bộ điều khiển có dây được nối với máy bơm
    • Không cần Internet hay vi điều khiển Linux
    • Ngủ ngon mà không phải lo bị hack
  • Quan tâm đến hub giao tiếp với máy chủ Sleep Number thông qua SSH tunnel

    • Tò mò không biết dùng PubkeyAuth hay mật khẩu
    • Hình dung về khả năng bị DNS hijacking
    • Trích câu nói nổi tiếng của Homer Simpson: "giường lên xuống"
  • Có một phương pháp tương tự để truy cập Eight Sleep Pod 3

    • Một số mẫu có thẻ MicroSD có thể chỉnh sửa
    • Cách được dùng trong TFA có thể là một phương pháp hay để lấy quyền root mà không cần thẻ
    • Eight Sleep ký các bản cập nhật firmware, nhưng cũng gửi kèm cả khóa riêng dùng để ký
  • Ban đầu tưởng đây là bài viết về hack giường Eight Sleep

    • Đã rất ngạc nhiên khi thấy ảnh thực tế của "Number Sleep Hub"
    • Sốc khi biết Eight Sleep và Sleep Number là hai công ty đều làm giường làm mát bằng nước
  • Tiếp theo là một câu đùa về ransomware

    • "Nếu không trả 1000 đô la thì tháng tới sẽ không thể ngủ trên giường"
  • Thật bất tiện khi Internet bị ngắt nên không thể điều chỉnh nhiệt độ giường

  • Đã quyết định không mua giường Sleep Number

    • Từng gặp hai tấm nệm bị gãy vách ngăn bên trong sau khi việc sản xuất bị thuê ngoài sang Trung Quốc
  • Đặt câu hỏi vì sao một chiếc giường phải chạy Linux

    • Không thể hiểu nổi vì sao lại cần một chiếc giường có 1GB RAM và cả một hệ điều hành đầy đủ
    • Ngay cả việc tìm một máy giặt không có kết nối WiFi cũng rất khó
    • Việc tránh các thiết bị thông minh ngày càng trở nên khó hơn
  • Khuyên nên thêm dụng cụ hàn vào danh sách mua sắm