[리디북스] DRM 해제하기, 한번 더 (ft. Riberty)

Edit (2020/09/09): 1.0 릴리즈 이후로 다시 돌아보지 않으려고 한 프로젝트이지만 정말 많은 분들이 자신이 소유한 책들을 킨들을 비롯한 타 이북리더에 옮겨서 읽고싶다며 요청해주셔서 간단한 버그픽스와 리디북스 Beta 앱을 지원하는 버전을 공유합니다. 리디북스 리더 Beta 앱을 사용하시는 분들은 다운로드한 책을 모두 삭제한 후, DRM 해제를 원하는 책들을 다운로드 받고 해당 책들을 열지 않은 상태에서 Riberty-beta 앱을 켜서 사용하시면 됩니다. 10.15.6에서만 테스트 해 보았습니다.


많이 바쁘기도 하고, 기술적으로 크게 어려워진 부분은 없었으므로 장문의 글은 게재하지 않을 예정입니다.

이전에는 Proof-of-Concept 수준의 파이썬 코드를 공개했는데, @disjukr님께서 간단한 GUI wrapper를 만들어주심에 영감을 받아서 이번에는 Riberty라는 이름의 간단한 툴로 만들어 배포합니다.

macOS만 지원하며, 10.12 (Sierra)와 10.14 (Mojave) 버전에서만 테스트 하였습니다. PyQt로 작성되었으며, 실행에 용이하도록 앱으로 패키징하는 바람에 용량이 39MB 정도로 꽤 큽니다.

PyQt를 사용한 것은 간단한 GUI를 지원하기 위함만은 아닙니다. 그러기엔 사실 용량을 고려했을때 비효율적이죠. 진짜 이유는.. 지난번 공개 이후 리디측에서 DRM 알고리즘에 약간의 변화를 두었는데 (정확히는 암호화된 content-key를 복호화하기 위한 key 도출 방법의 변화), 이 부분에서 리디북스 앱이 Qt 함수 몇 가지를 가져다가 쓰는데 직접 구현하기 귀찮아서 PyQt에서 임포트 해와서 사용하게 되었습니다.

 

사용방법

  1. 여기에서 압축파일을 다운로드 받습니다.
  2. 압축을 풀면, Riberty 앱이 나옵니다.
  3. 최초 실행 시, “확인되지 않은 개발자의 앱”이라며 경고가 뜰 수 있습니다. 이 경우, 보안 설정에 가서 예외처리 해주면 됩니다.
  4. 실행 후, 다음 화면에서 DRM이 해제된 파일들이 저장될 폴더 경로를 지정해주고 해제 버튼을 눌러주면 해제 작업이 시작됩니다.
  5. 해제 작업 진행중 모습입니다.
  6. 모든 파일에 대한 처리가 끝나면 다음과 같은 결과 화면이 나옵니다. 완료 메세지 클릭 시, 상세 내용이 나옵니다.

  7. 앞서 지정해준 폴더에 가보면 본인이 소유한 책들의 DRM-free 버전이 저장되어있는 것을 확인할 수 있습니다.

 

경고

위 프로그램은 어떠한 지원도 계획되어 있지 않으며, 해당 프로그램을 악용하여 받을 수 있는 법적 제재 또는 컴퓨터의 오류 등의 일체 문제는 사용자 본인의 몫이며 책임임을 밝힙니다.

위 프로그램은 리디북스 측의 알고리즘 변경으로 어느 시점에든 더이상 작동하지 않게 될 수 있음을 유의하시기 바랍니다.

 

You may also like...

87 Responses

  1. ㅅㄲㅁㅇ says:

    감사합니다! 딱 한장면 캡쳐해서 쓰는것도 막아놓으니 답답했는데 덕분에 쓸 수 있겠네요!

  2. 간절히 says:

    으아아아아아아 ㅠㅠ
    윈도우버전은 어떻게 안 될까요?? ㅠㅠㅠㅠ

    • Cai says:

      흑 ㅠㅠ.. 제가 윈도우를 사용 안해서.. 기회가 되면 윈도우로 포팅해보도록 하겠습니다.. (그리고 윈도우에서는 다른 알고리즘을 사용할 가능성도 있어서 장담드리진 못하겠네요)

  3. says:

    앱으로 포팅한거라서 다른 운영체제에서는 전혀 안되는가봐요…?

  4. 감사 says:

    이걸 윈도우버전으로 푸는순간 모든 방법이 차단될것 같은데요.. 리디가 또 찾아올테구요.. 포스팅 감사합니다.

  5. Nalgo says:

    윈도에서 필요하기도 하고 파이썬 공부 삼아 직접 한번 해보고 싶은데 감도 안오네요 ㄷㄷ

  6. 고마워요 says:

    받아서 실행시키니 다음과 같은 메시지가 뜹니다.

    Input strings must be a multiple of 16 in length.

    그리고 나서 처리 중이라는 메시지만 보일 뿐 진행이 안 되네요.

    뭐가 문제일까요? ㅠ.ㅠ

    • Cai says:

      흠.. AES 복호화가 잘 안되었다는 소리인데요.. 아마 제가 가진 책이 무료책들로 샘플이 적어서 많이 테스트를 못해서 놓친 케이스가 있을지도 모르겠네요 ㅠㅠ 제 페이스북이나 이메일로 따로 연락주시면 디버깅 도와드릴 수 있을것 같습니다.

      • hume says:

        정말 좋은 App 감사드립니다.
        저도 동일한 증상이 생기긴 하네요. 저는 대략 절반 정도의 책만 해제 성공했는데 시간 나실 때 꼭 한번 디버깅 검토 부탁드리겠습니다.

      • Hyungoo says:

        책이름에 / 이런 특수 문자가 들어가는 경우는 추출되는 파일을 특수 문자 때문에 만들지 못하네요.ㅜ.ㅜ 패키징이 되어 수정도 힘들고.ㅜ.ㅜ

  7. dwe says:

    윈도우 버전 올리면 다 엎을 가능성도…

    능력 부럽습니다. 배우고 싶네요.

    안그래도 yes24,교보문고,리디에 구입한 책이 많은데 직접 갖고 있는게 편하더군요.

    • Cai says:

      네, 이전 포스팅에도 적었지만 본인이 구매하지 않은 책을 불법복제 용도로 사용하는 사람들은 법적처벌을 받아야 함이 마땅하지만, 본인이 구매한 책은 적어도 본인이 소유할 수 있어야 한다는 것이 제 의견입니다.. 한 기기에 몰아서 볼 수도 있구요.

      • nanpuhaha says:

        저와 생각이 비슷하시군요! 해외의 경우 O’Reily, Packt에서 구입하면 DRM 없이 원하는 포맷으로 다운받을 수 있는 것에 비해 우리나라는 여러 이북 회사들이 서로 울타리 쳐놓아서 사용자 입장에서 너무 불편하네요… 혹시 리디 외의 국내 다른 이북 업체의 뷰어도 분석해보셨는지요? 대표적으로 교ㅂ, 알ㄹㄷ, Yes24이 있겠네요.

  8. grayer says:

    맥버전은 모르겠습니다만, 윈도우 버전을 한 번 들여다 본 적이 있는데,
    device_id가 aes -> gzip -> base64 -> 다시 aes 로 처리되어 나왔었습니다.

  9. rang says:

    윈도우 버전이 없다는게 아쉽네요 ㅜㅜ 보유한 책들이 많은데 리디 망하면 어떻게하지 늘 노심초사만 합니다..

  10. 호이 says:

    와 어떻게 이렇게 만들 수 있는지 너무 대단하십니다… 윈도우라 쓰지는 못하지만 윈도우버전도 만들어주십사 하고 아부성 코멘트라도ㅋㅋㅋㅋㅋ

  11. Seungje says:

    올려주신 내용을 공부중입니다. 궁금한 점이 있습니다. 혹시 email, ftplib, html와 관련된 라이브러리들이 부분이 포함되어 있어 보이는데 binary 파일을 생성할때 꼭 필요한 부분인가요? email과 http client server ftplib들이 포함되어 있어 의아하여 여쭈어 봅니다.

  12. nanpuhaha says:

    안녕하세요. 보안에 관심만 많은 학생입니다.
    항상 블로그에 새 글이 올라오면 재미있게 보고 있습니다.

    Cai님께서 리디북스 버그 바운티로 상금 1,000만원을 타셨으면 좋겠네요.

    상금 타시고 버그가 수정된 이후에 발견하신 버그에 대한 내용으로 블로그 작성해주시면 초롱초롱한 눈으로 정독하겠습니다!

    https://ridi.dev/bounty.html

  13. 7777 says:

    능력자…교보는 혹 생각없으세요. 느려터진 앱과 차마 깔기 두려운 pc뷰어로 인해서 묵혀두는중인데..

  14. winddf says:

    정말 감사드립니다. 제돈주고 산 이북을 소장하고 싶은 마음이 굴뚝같았는데 덕분에 맥으로 요긴하게 사용했습니다.

  15. 지나가던학생 says:

    대단하시네요ㅋㅋㅋ 리디북스 운영진과 개발자분들은 보안이슈가 있으면 개선책을 강구해야지 스크립트 내려달라는 말밖에 못하니 원

Leave a Reply

Your email address will not be published. Required fields are marked *