- 17
- Seia
- 조회 수 6627
사실 개인적으로 쓸 용도로만 카카오톡 API를 비공식 저장소로 운영하면서 iOS, Win App을 제외한 Win32, Android 쪽은 리버싱이 리버싱 작업을 이미 몇 달 전에 끝냈었습니다. 카카오톡 자체는 LOCO(겁나 빠른 황소 프로젝트) 프로토콜을 사용하게 되면서 표준 HTTP(s) 프로토콜은 아니기도 하고 인증서 검사를 빡세게 해서 조금 힘들 수는 있지만 꽤 많은 분들이 성공하고 잘 운용하시는 것으로 압니다.
본래는 이러한 리버싱 작업을 하는데에 있어서는 기본적으로 카카오톡 회사 측에서 어떻게 대응할지도 모르고 기존 API 자체가 막히면 그만큼 허무한 점도 많고 법적으로 이게 문제가 없다고 보장되는 것이 아니라서 결과물을 보관하는 Git 저장소를 비공개로 맞춰놓습니다.
하지만 이번에 GitHub에 storycraft님께서 리버싱을 시도하고 있고 프로젝트를 보니 언어적으로 꽤나 모던한 결과물이 나올 것 같기도 하고 공개적으로 오픈소스로 공개 + NPM 레지스트리에도 등록하셔서 스포어에도 이 소식을 알려봅니다. 왜냐하면 카카오톡 봇?이라고 카카오톡 오픈 채팅 등에서 운영되는 서비스들은 너무나도 환경 자체가 안타까울 정도(어떻게 폰...?으로 돌려요. 심지어 정규 문법도 제대로 지원 안 하던데? 화가 많이 났었습니다)이고 예전에도 스칼라로 Win32로 카카오톡 봇을 만들어 본 적이 있어서 차라리 폰으로 24시간 켜놓고 여러 대 켜놓는다고 하기보다는 Node.JS API를 풀로 사용해서 하는 편이 낫지 않을까 싶습니다.
당시 그래서 카카오톡 봇을 폰으로 구동시켜주는 애플리케이션 개발자에게 차라리 이럴 바에야 Node.JS 바이너리를 첨부시키시는 편이 낫다고 했더니 용량 문제로 반대하시더군요... 오히려 더 어이가 없었습니다. (게다가 이 사람들은 OS의 알림에서 메세지를 가져온다고요...) 템플릿 리터럴도 지원 안 하고 순수하게 기본적으로 제공되는 패키지로 폰 코딩 하느니 LOCO 프로토콜을 뚫겠습니다...
아래 저장소에서 storycraft님이 운영 중이고 계십니다.
관심있으신 분은 꼭 카카오톡 봇 앱?들의 JS 엔진에서 벗어나길 하루 빨리 기원합니다.
https://www.npmjs.com/package/node-kakao
작성자
댓글 17
정말로 무책임하다고 생각하는 동시에 안타깝습니다...
혹시 리버스 엔지니어링을 해보실 생각이 계시다면 구글신께 물어보시면 기본적인 자료를 찾으시고 Web archive만 뒤지셔도 금방 가능할 거라 믿습니다 :>
JS를 써야 한대서 자바스크립트 날림으로 테스트하고 업로드하니 오류만 뿜어대더라고요.
아무리 날림으로 만들었다고 해도... 적어도 오류는 없었는데...;;;
리버스 엔지니어링 자료가 궁금해지네요.
그나저나 저 댓글을 달면서 뭔가 생각난 게 있었는데.. 까먹어버렸어요. 뭔가 되게 괜찮은 생각이었는데 ㅏㅏㅏ 답답해 ㅠㅠㅠㅠ
말씀하신 부분 중에 궁금하신 부분은 무엇인지 알 것 같습니다. 해당 코드가 동작하지 않는 주 원인은 JavaScript 엔진에서 미지원하기 때문입니다. Mozilla에서 만든 Rhino라는 엔진을 사용하고 있더라고요.
https://developer.mozilla.org/ko/docs/Rhino
자료와 같은 경우에는 저는 아직 두려움이 커서 제공해드리기가 어렵지만 인터넷에는 이미 프로토콜의 해석까지 친절하게 나와있답니다.
여하튼 왜 오류가 나온건진 이해가 가네요.
역시 사람은 구글링을 해 봐야 하는 것 같군요! 뭔가 감이 잡힐것도 같고 아닌것도 같고 그러네요.
카카오톡에서 MITM을 한번 시도해본적이 안되더군요.
OS에 인증서를 등록하고 서버파서 인증서를 바꿔서 시도해봤는데 안됬습니다.
어떤 블로그를 찾아본 결과 인증서를 메모리에 담아서 시도한다고도 했는데..
메모리를 읽기가 힘들어서(제 실력이 없어서) 실패했습니다.
Python으로 해봤는데 그 인증서 구간을 찾기가 힘들어요.
ctypes.windll;
Kernel.ReadProcessMemory의 인자가 생각해야할게 많더라구요..
근데 이 게시물을 보니 힘이나네요!.
좋은소식이에요.
+) 아 그리고 법적으로는
저작권법 |
이라고 하네요.
네, 단순히 Root CA를 속이고 기만하는 짓은 작동하지 않습니다.
iOS 쪽에서는 얼마 전까지 오픈채팅 검색이 가능했었는데 그마저도 LOCO Secure 쪽으로 바뀐 것 같습니다.
법적으로는 딱히 공개적으로 개발은 못하겠습니다;
추가로 1,000,000포인트만큼 포인트 폭탄+를 받았습니다.
예전에 LOCO 프로토콜에 대해서 분석하신 분의 블로그를 본 적이 있는데 모두 소스 구걸 댓글이 달려있더라고요..
말로는 학습용이라고는 하는데, 아마 일부 사람들의 경우에는 해당 내용을 이용해서 광고를 하는 목적으로 사용하려는 사람도 있었겠지요...
차라리 API 형태로 해서 사용량에 제한을 두는 방식으로 쓸 수 있게 하면 좋을 거 같습니다.
소스 구걸...과 같은 경우는 솔직히 막상 오면 받아쳐주기도 애매하네요.
저번에 카카오톡 분석 관련 블로그를 봤을때도 loco프로토콜의 개발 이유가 패킷 사이즈를 컴팩트하게 만들어서 서버에 걸리는 부하를 줄이게 만드는것이라고 하더라구요.
기본 패킷의 경우 해더가 22바이트라 하더군요. 필요한 정보는 다들어갔답니다.
자바스크립트는 잊어먹은지 오래라(늘 필요할때마다 날림으로 작성했습니다) 예제 분석도 안 되고... 허..
그냥 앱을 쓸까요? ㅋㅋㅋㅋ
404가 뜨네요???
카카오에서 현재 흔적도 없이 짜른 듯합니다.
안타깝네요.
쓰다가 ㅃ-ㅏㄱ6쇼ㅛ쵸ㅛㅕㅑ7ㄴㄴㄴㄴㅅ8ㅓ <-저희집 고양이가 키보드를 밟고 갔습니다
쓰다가 빡쳐서 결국 봇을 접었는데.. 리버스 엔지니어링을 해 볼 생각은 1도 못해봤네요. 좋은 정보 감사합니다!