비밀 상자: 아파트 인터폰을 Apple Home과 연동한 은밀한 개조
(jackhogan.me)- 기존 Doorking 인터폰 시스템의 셀룰러 서비스 중단으로 게이트 개폐 기능이 멈춘 상황에서, 원격 제어를 복원하기 위한 하드웨어 해킹 진행
- ESP32 Wi-Fi 릴레이 보드를 이용해 솔레노이드 제어선을 직접 제어하고, Apple Home과 연동되는 Matter 프로토콜 클라이언트로 구성
- Rust 기반 펌웨어로 게이트를 일정 시간만 열고 자동 잠금되도록 설계해 보안성을 유지
- Wi-Fi와 Bluetooth 메모리 충돌 문제를 해결하기 위해 두 스택을 배타적으로 동작시키고, 프로비저닝 후 Wi-Fi만 사용하도록 최적화
- 결과적으로 기존 시스템을 손상시키지 않으면서 스마트폰으로 게이트를 제어할 수 있는 은밀한 IoT 확장 사례를 완성함
아파트 인터폰을 Apple Home과 연동한 비밀 상자 프로젝트
- 친구의 아파트 인터폰이 Doorking 1834-080 시스템으로, 관리 부주의로 인해 셀룰러 서비스가 중단되어 게이트 개폐 기능이 작동하지 않게 된 상황에서 시작된 프로젝트
- 방문객이 전화로 입장 요청을 할 수 없게 되자, ESP32 기반 하드웨어 해킹을 통해 Apple Home에서 원격으로 게이트를 열 수 있는 방법을 구현
초기 조사와 첫 시도
- 현장 점검 결과, 인터폰 상단 박스가 잠겨 있지 않아 내부 구조를 확인할 수 있었으며, Wi-Fi/셀룰러 라우터가 기본 비밀번호로 설정되어 있었음
- 라우터 설정 파일을 다운로드해 root 비밀번호를 재설정할 수 있는 취약점을 발견했으나, 시스템의 커스텀 시리얼 프로토콜을 분석해야 하는 복잡성 때문에 포기
- 두 번째 시도로 전화선(‘PH LINE’) 단자를 이용해 DTMF 신호를 모방하려 했으나, 제어 박스가 수신 대기 상태가 아닐 때는 명령을 무시할 가능성이 높아 실험을 중단
제3의 접근: 회로 중간 제어
- 음성 박스와 메인 컨트롤러 사이의 배선 중간 박스(junction box) 를 열어보니, 게이트 잠금장치를 제어하는 솔레노이드 제어선이 통과하고 있었음
- 솔레노이드는 전원을 인가하면 열리고 차단하면 잠기는 단순한 구조로, 직접 전원을 공급해 게이트를 여는 방식을 구상
- 12V DC 보조 전원을 음성 박스에서 끌어와 ESP32 Wi-Fi 릴레이 보드를 구동하고, 이를 Apple Home과 연동하는 계획 수립
- 솔레노이드 제어선을 분기해 ESP32 릴레이에 연결
- Rust로 펌웨어를 작성해 Matter 프로토콜 클라이언트로 동작
- 기존 시스템의 정상 동작을 유지하면서 병렬로 제어 가능하도록 회로 설계
소프트웨어 구성
- Rust 기반 Matter 라이브러리를 사용해 ESP32를 Apple Home에 연결
- 네트워크 연결 후 명령을 수신하면 일정 시간(기본 10초) 동안 게이트를 열고 자동으로 잠금
- 게이트가 장시간 열려 있는 상태를 방지해 보안성을 유지
- 코드 공개: GitHub - ImTheSquid/doorbell2
메모리 문제와 해결
- ESP32의 RAM 부족 문제로 Wi-Fi와 Bluetooth 스택을 동시에 실행할 경우 메모리 손상으로 리셋 발생
- 사용 중인 Matter 구현이 Bluedroid 스택을 사용해 문제를 악화시킴
- 해결책으로 Wi-Fi와 Bluetooth를 서로 배타적으로 활성화하고, 설정 파일(
sdkconfig.defaults)에 메모리 절약 옵션을 적용 - 프로비저닝 시에만 Bluetooth를 잠시 활성화하고 이후에는 Wi-Fi만 사용하도록 변경해 안정화
- Apple Home에서 게이트 잠금장치가 정상적으로 표시되며, 제조사 정보도 임의로 설정 가능
설치 및 전원 문제 해결
- ESP32 보드가 배선 박스 내부에 완벽히 들어맞아 외부에서 보이지 않음
- 전원선을 음성 박스에서 끌어와 연결했으나 작동하지 않아, 임시로 20V 무선 드릴 배터리를 이용해 테스트 성공
- 이후 매뉴얼을 확인한 결과, 음성 박스의 12V 단자가 입력용임을 발견
- 18V AC 입력을 12V DC로 변환하는 정류 레귤레이터를 추가해 전원 문제 해결
- 모든 부품을 배선 박스 내부에 정리해 완성
결과와 의의
- Apple Home을 통해 스마트폰으로 게이트를 원격 제어할 수 있게 되었으며, 방문객도 앱에서 게이트와 아파트 문을 동시에 열 수 있음
- 설치물은 ESP32 보드와 소형 전원 장치만으로 구성된 은밀한 구조로, 기존 출입 시스템에 간섭하지 않음
- 단순한 회로 해킹과 오픈 표준 기반 통합으로, 기존 하드웨어의 기능을 확장한 실용적 IoT 사례
- 프로젝트를 통해 회로 해킹 경험을 쌓았으며, 유사한 환경에서도 손쉽게 재현 가능함
Hacker News 의견들
-
법적·윤리적으로 매우 애매한 행동임을 지적함
개인 아파트 내부 박스에 연결하는 건 이해하지만, 공동 출입문 제어기에 연결해 친구들에게 접근 권한을 나눠주는 건 문제라고 봄
여러 차례 발각을 피하려는 시도를 한 걸 보면, 본인도 잘못된 걸 알고 있는 듯함- 그뿐 아니라 로그를 우회해 범죄 수사에 필요한 기록을 없애고, 시스템 장애 가능성도 높였다고 함
이런 행위는 디지털 공격 표면을 넓혀 범죄 기회를 제공할 수도 있음
따라서 일부라도 책임을 져야 할 수 있고, 형사·민사상 책임이 따를 수 있음
단, 자신의 재산이고 모든 관련자가 동의한 상황이라면, 솔레노이드 선을 연결해 시스템을 개조하는 건 적절할 수도 있음 - “Hacker”라는 이름을 가진 곳이지만, 정작 해커 정신은 보이지 않는다고 비판함
- 현실에서는 아무도 신경 쓰지 않을 거라며, 들켜도 “모르겠다”고 하면 끝날 일이라고 냉소적으로 말함
- 보안이 삼엄한 아파트가 아니라면 과도한 걱정이라며, 누구나 다른 사람을 따라 들어갈 수 있다고 주장함
OP처럼 외부에 노출된 솔레노이드 선에 전원을 넣는 건 별문제 아니라고 봄
- 그뿐 아니라 로그를 우회해 범죄 수사에 필요한 기록을 없애고, 시스템 장애 가능성도 높였다고 함
-
나도 비슷한 Apple HomeKit 연동을 단순하게 구현했음
인터폰이 집 전용 유선전화로 연결되고, 그 전화는 자동으로 음성사서함으로 넘어가며, 그 메시지가 문을 여는 톤을 재생함
전원은 스마트 콘센트로 제어해, 켜면 바로 입장 가능하고 끄면 차단됨- 나도 비슷하게 voip.ms + Asterisk로 구성했음
인터폰이 내 VoIP 번호로 전화를 걸면, 방문자에게 암호 입력을 요구하고 맞으면 DTMF 9을 보내 문을 열어줌
이메일·SMS 알림도 오고, 여러 개의 암호를 발급해 누가 들어왔는지도 알 수 있음 - 멋지지만, 나는 전원 끄는 걸 잊을까봐 걱정됨
그래서 음성 메시지 재생 후 자동으로 콘센트를 끄도록 설정할 듯함 - 하지만 OP의 경우엔 인터폰이 더 이상 전화를 걸 수 없어서 이 방식은 불가능함
- 나도 비슷하게 voip.ms + Asterisk로 구성했음
-
나도 같은 문제를 겪었고, 1년 넘게 찾아보다가 루마니아에서 역공학 보드를 만들어 파는 사람을 발견했음
30유로 이하로 설치 가능하고, 조잡하지만 매력적인 방식임
링크- 예전에 아날로그 인터폰에 ESP01을 붙여 버튼만 제어했는데, 전력 소모가 너무 커서 쓸모가 없었음
24V 라인에서 전원을 끌어오다 “전기 절도”로 간주될 수 있어 포기함
결국 Nuki Opener로 교체했는데, 훨씬 안정적이고 가족 전체가 쓰기 좋음
실험용 조잡한 제작물은 재밌지만, 실사용에는 부적합함
참고로 코드 저장소는 GitHub 링크에 있음
- 예전에 아날로그 인터폰에 ESP01을 붙여 버튼만 제어했는데, 전력 소모가 너무 커서 쓸모가 없었음
-
요즘 인터폰 생태계가 너무 낙후되어 놀랐음
단순히 “저녁 준비됐어요” 정도만 알릴 수 있는 반쯤 똑똑한 제품이 왜 없는지 의문임
값싼 무명 무선 제품은 방 간 통신도 제대로 안 되고, 결국 Asterisk와 저가 VoIP폰을 쓰는 게 유일한 해법임- 사실 HomePod Mini, Google Home, Alexa가 대부분의 가정용 인터폰 역할을 하고 있음
-
Home Assistant Voice를 쓰면 오디오 입출력 서버를 직접 구성할 수 있음
오디오를 송수신하거나 원하는 시점에 재생 가능함 - 오타를 지적하며 “Asterix가 아니라 Asterisk”라고 정정함
- Butterfly 같은 회사들이 대형 단지용 고가 시스템을 만들고 있고, 소형 건물 시장이 공백 상태라고 분석함
- 오디오 관련 제품은 전반적으로 복잡하고 비싸며 품질이 들쭉날쭉함
Sonos, Wiim, Acrylic 등 다양한 조합을 시도했지만 결국 Sonos의 중간 품질에 만족하며 사용 중임
-
유럽 일부 인터폰에는 Doorman이라는 솔루션이 있음
Koch 프로토콜을 역공학해 ESP32 + Home Assistant로 구현했으며, 파티 모드 기능이 행사 때 유용했음
Doorman 사이트 / Ring-to-open 가이드 -
나는 더 단순하게 Twilio 번호를 건물 관리자에게 주고, 앱에서 코드별 응답을 설정했음
유효한 코드는 DTMF “9”로 문을 열고, “1”은 내 휴대폰으로 전화를 전달함 -
별장 난방 제어 문제로 비슷한 불편을 겪음
배터리식 벽걸이 온도조절기가 라디오 신호로 바닥 난방을 제어하는데, 원격 제어하려면 2천 달러 이상 드는 새 장비를 사야 함
단순히 기존 신호를 모방하면 될 텐데, 기술이 불필요하게 폐쇄적이라 답답함
차라리 원격 제어 드라이버로 손잡이를 돌리는 게 낫겠다는 생각임- 실제로 신호를 모방하는 컨트롤러가 존재함
Home Assistant로 신호를 녹음·재생해 천장 선풍기나 적외선 기기 제어에 썼던 경험이 있음 - 핵심은 열원 제어부를 이해하는 것임
대부분의 보일러는 단순히 세 개의 신호(송풍, 난방, 냉방)만 필요함 -
SwitchBot을 추천함
버튼을 눌러주는 장치나 블라인드 막대를 돌리는 제품이 있어, 손잡이 회전에 응용 가능함 - 라디오 신호를 쓴다면, 보일러 쪽에 수신기 유닛이 있을 가능성이 높음
ESP32로 24V 솔레노이드 제어선을 병렬 연결하면 해결 가능함 - 신뢰할 만한 이웃이 있다면 맥주 한 상자로 부탁하는 것도 방법이라며 유쾌하게 제안함
- 실제로 신호를 모방하는 컨트롤러가 존재함
-
Frank의 손님들은 Doorking 16120 기본키만 있으면 된다고 농담함
이어 대학 시절, 전자공학 동아리에서 출입문 문제를 해결한 일화를 공유함
Raspberry Pi + 릴레이로 출입 버튼 회로를 병렬 연결해, Wi-Fi로 SSH 접속 시 문이 열리도록 했음
결국 들키지 않았고, 건물 리모델링 때 증거도 사라졌다고 함- “감사팀이 Pi를 못 찾는 한 SOC2 규정 위반은 아님”이라며 농담함
- “문 하나 여는 데 Raspberry Pi 전체를 썼다고?!”라며 놀람
- “천재적이다!”라며 칭찬함
-
릴레이가 고장날 가능성을 언급함
정격 전류를 초과하면 릴레이가 붙은 채로 멈출 수 있음 -
나도 비슷한 걸 직접 만들었음
프로젝트 링크
eBay에서 BTicino BT 344232를 32유로에 구입해, 4개의 선을 납땜하고 마이크로컨트롤러를 추가함
이제 Nuki Opener + MQTT Pub/Sub와 연동되어 스마트 인터폰으로 작동함