우리가 평소에 사용하는 MS Office 파일, 즉 Word, Excel, PowerPoint 파일에 엄청난 비밀이 숨어있다는 사실 알고 계셨나요?
놀랍게도 이들 파일은 각각 압축 파일로 구성되어 있답니다.
이 점을 이해하고 잘 활용한다면 파일의 내부 구조를 쉽게 분석할 수 있을 뿐만 아니라, 다양한 활용이 가능합니다.
이번 글에서는 MS Office 파일의 구조를 자세히 들여다보고 이를 응용한 사례를 살펴 보도록 하겠습니다.
※ 이번 글은 아래 링크의 압축파일을 다운로드 받아 실습하시면서 보시면 더 좋습니다.
MS Office 파일은 압축 파일이다
MS Office 파일의 비밀, 그 핵심은 바로 ‘압축 파일’이라는 점입니다. 확장자만 .docx, .xlsx, .pptx로 되어 있을 뿐, 실제로는 zip 형식으로 압축된 파일입니다.
실제 파일을 대상으로 상세하게 살펴 보도록 하겠습니다.
위 이미지와 같이 확장자 명이 pptx인 파일을 하나 선택한 다음, F2를 눌러, 파일 확장자 명을 zip로 변경해 보겠습니다.
이렇게 확장자 명을 바꾸게 되면 다음과 같은 에러 메세지가 발생하지만, 무시하고, “예”를 눌러봅니다.
※ 확장자 명을 볼 수 없을 때는 파일 탐색기에서 보기 → 표시 → 파일 확장명이 체크되어 있는지를 살펴 봅니다. 이 항목이 체크 되어 있어야만 확장자명을 볼 수도 있고, 수정도 가능합니다.
압축 파일로 변경이 되었으면, 이를 더블클릭하여 압축 프로그램으로 파일 내부 구조를 보면 여러개의 디렉토리로 구성된 것을 확인할 수 있습니다.
이제, 이 압축 파일을 해제해 보겠습니다.
압축 파일명으로 된 폴더 아래에 ‘_rels’, ‘docProps’, ‘ppt’ 폴더가 있는것을 볼 수 있습니다. 이 중 파워포인트 내용과 관련된 내용은 ‘ppt’폴더에 상세한 내용이 담겨있다고 이해하면 되겠습니다.
이 ‘ppt’ 폴더 아래에 다시 여러 개의 폴더가 있습니다. 각각의 폴더 이름을 보면 개략적인 내용을 추측할 수 있는데, 파워포인트 내부의 실질적인 내용을 담고 있는 폴더는 ‘slide’ 폴더 임을 짐작할 수 있습니다.
이를 통해 파워포인트 문서의 구조는 ppt → slide 형태로 구성 된다는 것을 알 수 있습니다.
같은 요령으로 엑셀 파일을 압축파일 형태로 만든 다음 압축을 풀면 엑셀 파일의 문서 구조를 살펴 볼 수 있습니다.
기본적인 형태는 상당히 유사한 것을 볼 수 있습니다. 이번에는 xl → worksheets의 형태로 구성되는 것을 볼 수 있습니다.
워드의 경우에도 마찬가지 요령으로 문서 내부 구조를 살펴 볼 수 있습니다.
그런데, 이번에는 약간 다른면이 보입니다. word 아래에 내용을 포함하고 있는 세부 폴더가 보이지 않습니다. 반면 word 폴더 아래에 ‘document.xml’이라는 파일이 하나 보이는 것을 볼 수 있습니다.
워드의 경우에는 파워포인트나 엑셀과 달리 문서 정보를 여러개의 단위로 나누지 않고 큰 하나의 덩어리 파일로 다루는 것을 볼 수 있습니다.
※ 엑셀은 여러개의 Sheet가 모여 하나의 엑셀 파일을 구성하고
PPT는 여러개의 slide가 모여 하나의 PPT 파일을 구성하고
워드는 한개의 document가 하나의 워드 파일을 구성합니다.
이미지 파일 추출하기
이번에는 MS Office 파일이 압축 파일이라는 사실과 분석한 압축 파일의 내부 구조를 통해 응용할 수 있는 내용을 살펴 보겠습니다.
그 첫번째로 살펴볼 내용은 MS Office 파일 내에 있는 이미지를 추출하는 작업입니다.
가끔 MS Office 파일에서 삽입된 이미지 파일을 따로 추출해야 할 때가 있습니다. 이때 대개의 경우에는 파일을 열고 이미지를 하나 하나 찾아서 그림으로 저장하는 방식으로 작업을 하곤 합니다.
MS Office 파일의 비밀을 알게된 우리는 그와 같은 방식으로 작업을 할 필요가 없습니다.
앞서 살펴본 요령대로 파일의 확장자 명을 zip으로 바꾼 다음 압축을 풀면, 이미지가 모여있는 폴더를 손쉽게 찾을 수 있습니다.
파워 포인트 파일의 경우 ppt → media라는 폴더를 보면 그 안에 파일에서 사용된 이미지가 모두 들어있는 것을 볼 수 있습니다.
엑셀 파일의 경우 xl → media 라는 폴더 안에 엑셀 파일에서 사용했던 이미지 파일이 모여 있는 것을 볼 수 있습니다.
워드 파일의 경우에도 word → media 라는 폴더 안에 문서에서 사용된 이미지가 모두 모여 있는 것을 볼 수 있습니다.
엑셀, 파워포인트, 워드 각 파일마다 저장된 폴더명은 조금씩 달랐지만, 그 구조 자체는 거의 비슷했다는 것을 알 수 있습니다.
이점을 이용한다면 이미지가 많은 MS Office 파일에 포함된 이미지를 한번에 취출하는 것은 생각보다 쉽게 할 수 있습니다.
엑셀 파일의 보호 해제
이번에 살펴볼 활용처는 보안이라는 관점에서 악용될 가능성이 있어 상당히 조심스럽습니다.
반대로 엑셀에서 기본적으로 제공하는 보호 기능의 보안 취약성을 엿볼수 있는 부분이기도 한만큼 정말 중요한 자료는 엑셀 보안을 믿지 않으셨으면 하는 마음에 소개드리고자 합니다.
엑셀 파일에서는 여러가지 형태로 파일에 보호를 걸어 암호를 입력해야만 수정이 가능하거나, 숨겨진 Sheet를 찾아 볼 수 있게 하는 기능이 있습니다.
엑셀 파일에서 파일 →정보 → 통합 문서 보호를 선택하면 현재 시트 보호, 통합문서 구조 보호의 기능을 볼 수 있습니다.
현재 시트 보호는 현재 설정된 시트의 정보를 바꾸지 못하게 하거나 수식이 보이지 않게 숨김 처리하는 기능입니다.
통합 문서 구조 보호는 엑셀 파일 전체를 기준으로 하여 특정 시트를 숨겼을 경우, 이를 숨김 해제 할 수 없게 하는 기능입니다.
이들 보호 기능은 정확하게 설정된 암호를 입력해야지만, 보호를 해제할 수 있는 것이 원칙입니다.
하지만, MS Office 파일의 비밀을 알고 있는 우리는 이 보호를 깰 수 있습니다.
※ 비밀번호를 알아내는 것은 어렵습니다.
예제 파일에 있는 “개인정보 취급 문서.xlsx” 파일은 현재 시트 보호와 통합 문서 구조 보호가 걸린 파일입니다.
실제 파일을 실행해서 보더라도, C6 칸의 경우 숨김 설정이 되어 있어서 수식이 보이지 않는 것을 볼 수 있고, 통합문서 보호가 설정되어 있어서 Sheet에서 마우스 우클릭을 해도 숨기기 취소를 할 수 없는 것을 볼 수 있습니다.
같은 요령으로 압축 파일로 만든 압축을 해제합니다.
폴더 내의 파일중에 xl → workbook.xml 파일에서 마우스 우클릭을 한 다음 메모장에서 편집을 선택합니다.
※ 별도의 텍스트 에디터가 있다면, 이를 활용하는 것도 좋습니다.
Ctrl+F를 눌러 찾기를 한 다음 “Protect”를 검색하면 특정 구역을 찾아줍니다.
이 Protect가 포함된 “<” 에서 부터 “/>”까지를 찾아서 삭제한 다음 저장합니다. 이 과정을 통해 통합문서 구조 보호가 제거됩니다.
같은 요령으로 xl → worksheets → sheet1.xml파일에서 마우스 우클릭, 메모장에서 편집을 클릭합니다.
Ctrl+F를 눌러 찾기를 한 다음 “Protect”를 검색합니다.
이 Protect가 포함된 “<” 에서 부터 “/>”까지를 찾아서 삭제한 다음 저장합니다. 이 과정을 통해 현재 시트 보호가 제거됩니다.
두개의 파일 수정이 완료되었으면 압축이 풀린 최 상위 폴더에서 모든 파일을 선택한다음 다시 압축파일로 만듭니다.
만들어진 압축 파일의 확장자 명을 xlsx로 다시 변경합니다.
확장자 명이 변경된 파일을 다시 열어서 보면 보호가 모두 해제된 것을 볼 수 있습니다.
결언
이상으로 압축파일이라는 MS Office 파일의 비밀을 파헤치고, 그 내부 구조를 살펴 봤습니다.
위의 예시로 알아본 응용 방법 외에도 특정 데이터나 설정 파일을 직접 수정하거나, 매크로나 XML 데이터를 변형해 문서의 기능을 제어하는 등 더욱 고급 활용 또한 가능합니다.
MS Office 파일이 단순한 문서가 아닌, 압축 파일로 구성되어 있다는 사실을 아는 것만으로도 여러 가지 작업을 훨씬 수월하게 할 수 있습니다.
이번 기회를 통해 여러분도 MS Office 파일의 내부를 살펴보는 재미를 느껴봤으면 좋겠습니다.
아래의 링크들은 제가 지금까지 유튜브 & 블로그에 올렸던 MS Office 파일의 비밀과 연관된 내용들, 그리고 함께 알아두면 유용한 정보들 입니다.
바로 아래의 비밀 문서 만들기는 제가 엑셀 보안의 취약성을 미처 인지하기 전에 만들었던 자료입니다.
이와 같은 방식으로 보호를 걸 수 있다는 것 정도만 알아 두시고, 정말 중요한 문서에는 충분한 보안이 될수 없다는 점을 꼭 인지해 주시기 바랍니다.