요약
비공식 Tapo 라이브러리가 티피링크의 새 인증 방식 TPAP를 지원해, 서드파티 호환 스위치를 꺼도 기기를 제어할 수 있습니다.
티피링크 스마트홈 기기용 비공식 Rust·Python 라이브러리 Tapo를 관리하는 미하이 딘쿨레스쿠의 글입니다. 펌웨어 1.4.0부터 플러그가 '서드파티 호환' 스위치를 켜야만 외부 프로그램에 응답하면서, 멀쩡하던 스크립트가 403 오류를 낸다는 이슈가 잇따랐습니다.
왜 중요한가
- 외부 스크립트로 기기를 쓰려고 보안을 낮추는 스위치를 켜 둘 필요가 없어집니다.
- 티피링크가 문서를 공개하지 않은 TPAP 때문에 막혔던 외부 제어의 길이 다시 열렸습니다.
- TPAP가 이전 방식보다 실제로 안전해서, 스위치를 끄는 것이 곧 보안 이득이 됩니다.
핵심 내용
- TPAP는 SPAKE2+(비밀번호를 보내지 않고 양쪽이 같은 키를 만드는 인증 방식)를 씁니다.
- 이전 방식인 KLAP와 달리 엿들은 로그인으로 비밀번호를 오프라인 대입할 수 없고, 실패가 쌓이면 기기가 잠깁니다.
- 라이브러리가 기기에 맞는 프로토콜을 스스로 골라 인증하므로 사용자 코드는 바꾸지 않아도 됩니다.
- C210 카메라(펌웨어 1.5.2)처럼 아직 TPAP를 지원하지 않아 스위치를 켜야 하는 기기도 있습니다.
- 0.11.0에서 옛 AES 방식을 뺐고, 플러그 예약·타이머와 H200/H500 허브 녹화 다운로드도 추가했습니다.
HN 반응
- 바이너리만 있으면 AI 에이전트와 Ghidra·IDA(역공학 도구)로 비공개 프로토콜을 쉽게 푼다는 경험담이 이어졌습니다.
- 사용자를 가두는 티피링크 제품을 사지 말자는 주장이 있었고, 글이 AI 문체라 읽기 힘들다는 비판도 여럿 나왔습니다.
GLM 5.2부터(어쩌면 그 전부터?) 바이너리만 있으면 어떤 비공개 프로토콜이든 리버스 엔지니어링하기가 놀라울 만큼 쉬워졌습니다. 예전에는 수작업이 너무 많이 들어서 95%는 할 가치가 없었습니다.
이제는 IDA나 Ghidra MCP, 바이너리, 그리고 대충 휘갈긴 지시문 몇 줄이면 됩니다.
최근 모델 중에는 시키지 않아도 실행 중인 바이너리에 계측 코드를 심어(가능한 경우) 프로토콜을 알아내는 것도 있는데, 이쪽이 훨씬 낫습니다.
MCP도 필요 없습니다. 저는 에이전트에게 헤드리스 Ghidra용 스크립트를 짜게 합니다. MCP는 잘 깨지는 데다, 학습 데이터에는 MCP 사용법에 대한 지식이 별로 없습니다. 반면 Ghidra 스크립트는 널려 있고 API 문서도 제대로 되어 있습니다.
동의합니다! 소문내지 마세요!
농담이고요, 인기 있는 Ghidra MCP는 설계가 정말 형편없어서 구조를 다시 짜거나 아예 Ghidra를 직접 스크립팅하는 편이 훨씬 낫습니다. 다만 Opus 5.5는 그 인기 Ghidra MCP를 쓴 CoT로 학습된 것 같습니다. 덕분에 더 잘 돌아가지만, 이름과 형태를 크게 바꾸지 않고 MCP를 수정하면 오히려 효율이 더 떨어집니다. "표준" 형식으로 도구를 호출했다가 실패하면 다시 시도해야 하니까요.
Opus 5.5라 해도 제 생각엔 MCP는 버리고 LLM에게 bintools와 헤드리스 Ghidra를 먹이는 게 낫습니다. GLM이든 Opus든 이쪽이 인기 MCP보다 훨씬 효율적인 결과를 냅니다. 반면 IDA Pro MCP는 설계가 훨씬 잘돼 있고 꽤 쓸 만해 보입니다.
Opus 4.8 이하는 지시를 해도 그 MCP를 제대로 쓰지 못하고 걸핏하면 잘못 썼다는 점은 짚어 두고 싶습니다. 그동안 개선된 부분이 있다니 반갑네요.
Opus 5.5가 바이너리 리버스 엔지니어링을 해주기는 하나요? 저는 decompile 같은 단어만 보이면 바로 차단당하던데요.
저한테는 오래된 비디오 게임을 꽤 깊이 리버싱해 줬습니다. 30분 만에 실행시키고, 버그 몇 개를 패치하고, 게임 로직 VM과 렌더링 파이프라인 전체를 리버싱했고요. 지금은 게임 로직을 Lisp으로 옮겨 쓰고, 이미 만들어 둔 렌더러가 원래 하드코딩된 해상도의 4배로 돌아가도록 에셋을 업스케일하는 중입니다.
출발점은 말 그대로 CD에서 복사한 원본 설치 파일이었습니다. 간직해 두었다가 오래된 하드 드라이브에서 찾아낸 거죠. 거기에 "실행되게 해 줘"라는 짧은 프롬프트 하나가 전부였습니다. Ghirda를 설치하고, 바이너리를 패치하는 프레임워크를 통째로 만들고, DirectDraw를 자체 DLL 심으로 대체한 것도 전부 Claude가 알아서 생각해 낸 겁니다.
뭘 리버싱하느냐에 따라 다릅니다. DRM 비슷한 것이나 보안과 관련된 것(아주 느슨한 의미의 "보안")은 싫어하는 편인데, 게임 엔진 같은 건 괜찮습니다. (싫어하는 대상이라면 Opus 4.8이나 4.6으로 내리면 대개 됩니다)
저는 잘 됩니다. decompile이라고 딱 집어 말하지는 않았지만, 실행 파일을 파고들어서 그게 어떻게 설계됐는지, 여러 파일 형식은 어떻게 설계됐는지 알려 주는 데 아무 문제 없었습니다.
MCP용 SKILL.md를 넣어 주거나 (아니면 그냥 프롬프트에 통째로 붙여 넣으면) 문제 없습니다.
저는 Ghidra는 안 쓰지만, IDA Pro MCP는 온갖 작업에서 아주 잘 돌아갑니다. 예를 들어 어떤 소프트웨어는 라이선스를 확인하려고 자꾸 서버에 접속하는데(저는 네트워크를 막은 채로 쓰고 싶습니다), 이제는 그러지 않게 됐습니다.
물론 그렇게 할 수도 있지만, 제 경험상 에이전트는 이미 할 줄 아는 일을 하게 두는 게 대체로 가장 좋습니다.
참고로 IDA Pro MCP는 가장 인기 있는 Ghidra MCP보다 상당히 낫습니다.
아무것도 인정하는 건 아니지만, 라이브러리에 새 프로토콜 지원을 추가하는 데 시간이 거의 안 걸려서 놀랐습니다. MCP 서버도 필요 없었고요.
저는 더 쉬운 대상을 노려서 재미를 봤습니다. Android APK, Java, .NET 바이너리는 대개 고급 도구 없이도 AI로 리버스 엔지니어링하기 쉽습니다.
제가 너무 멍청해서 이해를 못 하는 건지, 아니면 대상 독자가 아닌 건지 모르겠네요. Tapo가 뭔지도 모르겠고, 아무튼 Tapo 기기랑 연동하는 라이브러리인 모양인데 그게 뭔지도 모르겠고요. 이제는 TPAP로 통신할 수 있다는데 그게 뭔지도 모르겠고요. 티피링크가 언급됐으니 라우터겠거니 하고 넘어가죠 :)
https://www.tapo.com/us/
그리고 TPAP는 "TP-Link Authentication Protocol"이고, 제가 알기로는 802.1X( https://en.wikipedia.org/wiki/IEEE_802.1X )를 기반으로 합니다.
Tapo 기기는 기본적으로 스마트홈 제품입니다. 보통은 그쪽 생태계, 그러니까 전용 앱 같은 걸로만 기기를 제어해야 하죠. 그런데 사람들은 그 앱에 묶이는 걸 싫어하고 Home Assistant 같은 플랫폼으로 기기를 쓰고 싶어 하니까, 이런 식의 꼼수로 방법을 알아내는 겁니다.
방수 기능이 있는 가장 싼 보안 카메라를 사면 BirdNET이나 Apple HomeKit Secure Video를 시작하는 저렴한 방법이기도 합니다. Raspberry Pi에 마이크에 고장 안 나게 막아 줄 보호 케이스까지 사느라 큰돈 들일 필요 없이, 야외에 마이크(와 카메라)를 둘 수 있죠.
Scrypted나 Frigate 같은 소프트웨어를 쓰면 Apple TV 4K로 보안 카메라 영상을 iCloud+ 계정의 Apple Home에 넣을 수 있었습니다. HomeKit 인증 제품을 살 필요가 없어요.
에너지 모니터링 플러그도 정말 저렴합니다. 이름 있는 브랜드 중에서는 아마 제일 쌀 거예요. 조명 스위치도 아주 마음에 들고 HA에서도 잘 작동합니다. 참고로 저는 다른 IoT 기기처럼 이것도 네트워크에서 완전히 막아 두었습니다.
사용자에게 비우호적인 하드웨어 공급업체에서는 서로 손을 떼도록 독려해야 합니다. 티피링크는 구입한 하드웨어를 최대한 쉽게 다룰 수 있도록 사양을 공개해야지, 종속을 극대화하거나 폐쇄적인 생태계로 밀어 넣으려 해서는 안 됩니다.
거래란 이래야 합니다. 우리가 돈을 내면 그들은 하드웨어를 주고, 그것을 효과적이고 안전하게 쓰고 나중에 필요하면 수리하는 데 합리적으로 줄 수 있는 만큼의 정보를 최대한 줍니다.
우리는 마치 소비자에게 시장에서 아무 힘이 없는 것처럼, 주는 대로 받아들이는 데 익숙해졌습니다. 티피링크가 우리를 돈 내는 고객으로 대할 때까지 티피링크 하드웨어를 사지 마세요. 다른 사람들에게도 사지 말라고 권하세요. 고객을 쓰레기처럼 대하는 제조사의 하드웨어는 사지 말고, 그쪽이 펌웨어를 내서 그런 시도를 계속 무력화하는데도 리버스 엔지니어링으로 '어떻게든 쓰게 만들려는' 시도에 동참하지 마세요. 자기 적에게 자금을 대는 짓은 그만두십시오!
AI 슬롭 같네요.
적어도 이 토론에는 AI가 당신보다 훨씬 많이 기여하고 있잖아요.
이런 댓글은 HN에서 금지해야 해요. "HN이 Reddit처럼 되어 간다" 같은 댓글을 금지해야 하는 것과 마찬가지로요. 꽤 아이러니한 게, 어디서나 보이는 단순하고 성의 없는 "AI 슬롭" 댓글 때문에 Reddit이 엄청 짜증 나는 곳이 됐거든요.
저는 좋은 책을 읽어야 글을 쓸 수 있다고 배웠습니다.
AI가 썼든 사람이 썼든 이런 식으로 쓴 글이라면 솔직히 상관없습니다. 이걸 계속 읽느니 다른 일을 하는 게 낫겠습니다.
맞아요. 저도 다섯 문단까지 읽었는데 거기까지가 한계였어요.
"At least nine issues tell the same story"
"every change lands in both at once"
딱 Claude 말투잖아요. Claude와 이야기하는 데 시간을 많이 쓰는 사람들이 모인 커뮤니티라면 당연히 알아챌 수밖에 없죠.
반박하기 어렵네요. 흥미는 있는데... 글이 별로예요.
그리고 이제는 변명할 여지도 없어요. 최신 Opus/Astra 모델은 글이 그럭저럭 참을 만하거든요. 꼭 써야 한다면 그걸 쓰세요.
글쓰기의 핵심은 하려는 말을 여러 관점에서 생각해 보는 것입니다. LLM을 늘 쓰다 보면 모든 게 평균적이고 지루해집니다. 게다가 독자에게 아무 도움도 안 되는 말을 여전히 너무 많이 낭비하고요.
영어가 모국어가 아니거나 번역을 거친 글일 수도 있겠다는 생각이 듭니다. 틀릴 수도 있지만요. 2022년 글도 있는데, 그쪽은 훨씬 간결해 보입니다.
제대로 교정을 볼 수 없으면 슬롭은 더 엉성해질 수밖에 없습니다.
글은 최선을 다해 썼는데, 두 분께는 확실히 와닿지 않았나 보네요. 가장 거슬렸던 점이나 패턴을 하나만 짚어 주실 수 있나요? 개선하는 데 도움이 될 것 같습니다.
정말 최선을 다한 거 맞아요? 더 잘할 수 있을 것 같은데요.
[빈정거림은 삭제함]