Sleep Number 침대 루트 접근 방법
(dillan.org)동기
- 몇 년 동안 Sleep Number 침대의 로컬 네트워크 접근 가능성을 탐구해왔음
 - HomeKit을 통해 침대 설정을 제어할 수 있는 homebridge 플러그인을 만들었음
 - Sleep Number에서 API 요청 빈도가 높아져 플러그인을 비활성화하라는 요청을 받았음
 - 로컬 네트워크 접근을 통해 서버를 우회하는 방법을 찾기로 결심했음
 
사전 준비 사항
- Sleep Number Hub 모델 번호: 360SIQ01D
 - UART to TTY 장치 및 기타 하드웨어 도구 필요
 - USB-A 플래시 드라이브 필요
 
루트 접근 권한 획득
- J16 헤더에 UART 장치 연결
 - UART 장치에 콘솔 연결 (baud rate: 115200)
 - 허브 전원을 켜고 2초 내에 <SPACE>를 눌러 자동 부팅 시퀀스를 중지
 - 부팅 환경 변수 편집
- 기본 환경 변수 백업
 - 
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" 
 - 첫 부팅 시 "let_me_root" 파일이 있는 플래시 드라이브 삽입
 - 루트 파티션을 rw로 다시 마운트하고 
let_me_root파일 추가 - 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 연결이 없는 세탁기를 찾는 것도 어려웠음
 - 스마트 기기를 피하는 것이 점점 더 어려워지고 있음
 
 - 
납땜 도구를 쇼핑 목록에 추가할 것을 권장함