2P by neo 3달전 | favorite | 댓글 1개

동기

  • 몇 년 동안 Sleep Number 침대의 로컬 네트워크 접근 가능성을 탐구해왔음
  • HomeKit을 통해 침대 설정을 제어할 수 있는 homebridge 플러그인을 만들었음
  • Sleep Number에서 API 요청 빈도가 높아져 플러그인을 비활성화하라는 요청을 받았음
  • 로컬 네트워크 접근을 통해 서버를 우회하는 방법을 찾기로 결심했음

사전 준비 사항

  • Sleep Number Hub 모델 번호: 360SIQ01D
  • UART to TTY 장치 및 기타 하드웨어 도구 필요
  • USB-A 플래시 드라이브 필요

루트 접근 권한 획득

  1. J16 헤더에 UART 장치 연결
  2. UART 장치에 콘솔 연결 (baud rate: 115200)
  3. 허브 전원을 켜고 2초 내에 <SPACE>를 눌러 자동 부팅 시퀀스를 중지
  4. 부팅 환경 변수 편집
    • 기본 환경 변수 백업
    • bootcmd 변수에서 run set_bootargs; 제거
    • 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. 첫 부팅 시 "let_me_root" 파일이 있는 플래시 드라이브 삽입
  6. 루트 파티션을 rw로 다시 마운트하고 let_me_root 파일 추가
  7. SSH 접근 설정

로컬 네트워크 제어 및 모니터링 서버 생성

  • Python 2.7.18을 사용하여 HTTP 서버 설정
  • /bam/scripts 디렉토리의 스크립트를 실행할 수 있는 HTTP 서버 스크립트 작성
  • 스크립트를 허브에 복사하고 실행

rc.d 스크립트 추가

  • /real.root 파티션에 rc.d 스크립트 추가
  • 스크립트를 허브에 복사하고 적절한 위치로 이동
  • 필요한 심볼릭 링크 추가

유용한 명령어

  • /bio 스크립트에서 다양한 침대 제어 명령어 사용 가능
  • 예시 명령어:
    • arg=PSNL: 왼쪽 침대 측면의 마지막 설정된 수면 번호 값 가져오기
    • arg=PSNS&arg=L100: 왼쪽 침대 측면의 수면 번호를 100으로 설정

다음 단계

  • /bam 루트 디렉토리의 침대 제어 기능 탐색
  • SSH 터널을 통해 Sleep Number 서버와 통신하는 허브의 보안 문제 고려
  • SleepIQ 앱을 대체할 수 있는 간단한 웹 앱 작성

부록: 허브의 원래 U-Boot 환경 변수

  • baudrate=115200
  • bootcmd=run find_board_name; run set_bootargs;setenv boot_mmcdev 0; run bootcmd_mmc;setenv boot_mmcdev 1; run bootcmd_mmc
  • 기타 변수들...

GN⁺의 의견

  • 이 가이드는 Sleep Number 침대의 로컬 네트워크 접근을 가능하게 하여 사용자에게 더 많은 제어 권한을 제공함
  • 허브의 보안 문제를 고려할 때, 외부 인터넷 연결을 끊는 것이 좋음
  • 비슷한 기능을 제공하는 다른 스마트 홈 제품들도 존재함
  • 새로운 기술을 도입할 때는 보안과 유지보수 문제를 신중히 고려해야 함
Hacker News 의견
  • 과거에 스마트 기능이 없는 침대를 사용했음

    • 두 개의 유선 컨트롤러가 펌프에 연결되어 있었음
    • 인터넷이나 Linux 마이크로컨트롤러가 필요하지 않았음
    • 해킹 걱정 없이 편안하게 잠을 잤음
  • Sleep Number 서버와 SSH 터널을 통해 통신하는 허브에 관심이 있음

    • PubkeyAuth 또는 비밀번호를 사용하는지 궁금함
    • DNS 하이재킹 가능성에 대해 상상해 봄
    • Homer Simpson의 유명한 말처럼 "침대가 올라가고 내려감"을 인용함
  • Eight Sleep Pod 3에 접근하는 유사한 방법이 있음

    • 일부 모델은 수정 가능한 MicroSD 카드를 포함함
    • TFA에서 사용된 방법이 카드 없이 루트 접근을 얻는 좋은 방법일 수 있음
    • Eight Sleep이 펌웨어 업데이트를 서명하지만, 서명에 사용된 개인 키도 함께 보냄
  • Eight Sleep 침대를 해킹하는 글이라고 생각했음

    • 실제 "Number Sleep Hub" 사진을 보고 놀랐음
    • Eight Sleep과 Sleep Number라는 두 회사가 물 냉각 침대를 만든다는 사실에 충격을 받음
  • 다음은 랜섬웨어에 대한 농담

    • "1000달러를 지불하지 않으면 다음 달 동안 침대에서 잘 수 없음"
  • 인터넷이 끊겨서 침대 온도를 조절할 수 없는 상황이 불편함

  • Sleep Number 침대를 사지 않기로 결심함

    • 중국으로 아웃소싱된 후 내부 바플이 부러진 두 개의 매트리스를 경험함
  • 침대가 Linux를 실행해야 하는 이유에 의문을 가짐

    • 1GB RAM과 전체 OS가 필요한 침대가 왜 필요한지 이해할 수 없음
    • WiFi 연결이 없는 세탁기를 찾는 것도 어려웠음
    • 스마트 기기를 피하는 것이 점점 더 어려워지고 있음
  • 납땜 도구를 쇼핑 목록에 추가할 것을 권장함