[주의]
본 게시글은 학습 및 교육 목적으로서 작성된 자료이며, 이 정보가 악용되어 발생한 문제는 정보를 악용한 자에게 있음을 알립니다.
[시작]
지인이 라노벨 EPUB을 줬다. 이게 맥북에선 좋은 게 EPUB을 애플 도서에서 바로 열수 있단 말이지?
근데 이거 폰트가 왜 이러냐 지인한테 물어보니까 "가끔 이런거 공유하는 사람들 중에 난독화를 거는 사람이 있다" 는 걸 들었다.
폰트를 어디 다운증후군 걸린 맑은고딕 동생처럼 만들어 놓는다거나, 사이사이 이상한 문구를 집어넣어서 가독성을 개판내버린다는 거라고 하더라.
아니 읽게 힘들게 배포를 할 거면 대체 왜 이걸 이렇게 만듬? 혹시 이거에 빡쳐서 연락하면 돈받고 넘겨주려고 하는건가?
뭐 여튼 난 이런식으로 읽을 생각 없으니까, 이거 파일의 정상화를 시켜보자.
일단 파일이 개판난 상태이니, 다음과 같은 순서로 복구를 시도해야 한다.
1. 손상된 파일의 구조 분석
2. 손상된 과정의 확인
3. 손상된 과정을 역추적 하여 데이터 복구
오늘 할 건 1번인 파일의 구조 분석이다.
[EPUB이란?]
EPUB은 간단하게 말하면 전자책이고, 조금 복잡하게 설명하면 '전자 책' 이라는 걸 일종의 공통된 규격으로 만든거임.
PDF 같은게 있지 않냐고 물어봐도, 아마 만든 이유가 있을텐데 나는 잘 모르겠다. 뭐 DRM 걸기 편해서나, 웹 앱 호환성이 좋아서 그럴 가능성이 높다.
그럼 이 EPUB이라는 파일은 대체 뭐냐? 라고 물어보기 위해선, 한가지 소프트웨어로 이 EPUB 파일을 열어볼 필요가 있음.
[SIGIL이란?]
아마 EPUB에 관심이 좀 있는 사람들은 들어봤을 가능성이 높은 툴임.
EPUB을 그냥 열고, 읽는게 아니라 그 구조나 이런걸 보고 편집할 수 있는 에디터임.
이렇게 생겼음.이걸로 EPUB의 구조를 간단하게나마 알수 있는데, 요약하면 다음과 같음.
1. EPUB은 일종의 압축 파일이다.
2. 이 압축파일 안에는 본문(HTML)과, 이 본문을 보여주기 위한 스타일(CSS + 폰트) 지침이 포함된 하나의 "웹 페이지" 겸 파일임.
3. 이북 리더는 이 CSS + 폰트 + HTML 정보를 불러와서 리더 프로그램에 페이지를 표시해 주는 거임.
[문제의 파일을 한번 열어보자]
잘 보임. 근데 좀 이상한게 있음.
만약 SIGIL을 처음 써본 사람이거나, 조금 비교할 대상이 필요한 경우 난독화가 되어 있지 않은 다른 파일을 SIGIL로 열어본 결과를 밑에 올림.
이제 비교를 해보면 다음과 같음.
1. 난독화가 되어 있는 파일의 경우, HTML 상 표기되는 텍스트가 '뷁어'로 표시되어 있음. (예: 휃쥒 쌭챖싱싨 톯촃퓓땥 엪둉텋짣 쎗)
2. 추가로 font 및 css가 인간이 읽기 어렵게 괴상한 변수로 되어 있음 (예: ӗёệḕềӗḕễҿӫééɇèᶒəӫèёèệêềҿ)
그 외에 일부 글에 첨부하기 어려운 내용은 다음과 같음.
3. CSS 파일이 비정상적으로 많음
4. 폰트 파일의 용량이 원래 폰트의 두배에 가까움
5. css 파일을 열어보면, 특정 변수의 범위의 폰트 사이즈가 "0퍼센트"로 지정되어 있음.
아까 전에 EPUB이라는 파일이 실제론 HTML 문서에 CSS와 폰트 파일로 웹 페이지를 출력하는 파일이라는걸 이해했으니,
이를 통해 난독화가 보편적으로 다음과 같은 형태를 취한다는걸 알수 있음:
[EPUB이 난독화 된 방법 : 추정 ]
1. font의 비가시화 + 암호화
2. css로 특정 글자를 숨기는 형태를 같이 취함
그럼 이제 이제 이걸 고치기 위해서, 다음과 같은 방법을 알아야 함.
1. 변경된 폰트(비가시화된 폰트) 는 어떻게 작동하는가
2. CSS는 어떻게 작동을 하고 있는가
이건 다음 시간에 알아보자.
긴 글 읽어줘서 고마워
