2P by GN⁺ 8시간전 | ★ favorite | 댓글 1개
  • 기존 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의 경우엔 인터폰이 더 이상 전화를 걸 수 없어서 이 방식은 불가능함
  • 나도 같은 문제를 겪었고, 1년 넘게 찾아보다가 루마니아에서 역공학 보드를 만들어 파는 사람을 발견했음
    30유로 이하로 설치 가능하고, 조잡하지만 매력적인 방식임
    링크

    • 예전에 아날로그 인터폰에 ESP01을 붙여 버튼만 제어했는데, 전력 소모가 너무 커서 쓸모가 없었음
      24V 라인에서 전원을 끌어오다 “전기 절도”로 간주될 수 있어 포기함
      결국 Nuki Opener로 교체했는데, 훨씬 안정적이고 가족 전체가 쓰기 좋음
      실험용 조잡한 제작물은 재밌지만, 실사용에는 부적합함
      참고로 코드 저장소는 GitHub 링크에 있음
  • 요즘 인터폰 생태계가 너무 낙후되어 놀랐음
    단순히 “저녁 준비됐어요” 정도만 알릴 수 있는 반쯤 똑똑한 제품이 왜 없는지 의문임
    값싼 무명 무선 제품은 방 간 통신도 제대로 안 되고, 결국 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 전체를 썼다고?!”라며 놀람
    • “천재적이다!”라며 칭찬함
  • 릴레이가 고장날 가능성을 언급함
    정격 전류를 초과하면 릴레이가 붙은 채로 멈출 수 있음

    • 사용된 릴레이는 무명 복제품일 가능성이 높고, 유도 부하 기준 10⁵회 정도밖에 못 버팀
      DPDT 대신 SPDT 두 개를 병렬로 써서, 하나만 작동하면 문이 잠긴 채로 남을 위험이 있음
      퓨즈나 스너버도 없음
      대신 Relay In A Box 제품군을 추천함 — UL·CE 인증, 1천만 회 수명, 코드 검사 통과 가능
      데이터시트 / 제품 페이지
  • 나도 비슷한 걸 직접 만들었음
    프로젝트 링크
    eBay에서 BTicino BT 344232를 32유로에 구입해, 4개의 선을 납땜하고 마이크로컨트롤러를 추가함
    이제 Nuki Opener + MQTT Pub/Sub와 연동되어 스마트 인터폰으로 작동함