Excel - VBA

WorkBook과 Worksheet 보호를 암호 없이 해제하기

EGTools 2023. 8. 28. 19:00

Excel의 보안은 취약하기 이를 데 없습니다.

예전에는 아주 간단한 문자열 대입하는 코드로도 시트보호 암호를 깨기도 했는데, 지금은 암호입력과 결과 반응 시간을 늘려서 해당 코드를 시간이 주구장창 길어져서 효과가 없는 것 같습니다.

 

그래서 다른 방법으로 해제하는 방법을 소개하면 아래와 같습니다.

 

Excel 문서 파일은 Zip파일과 같은 형식으로 구성되어 있습니다.

확장자를 아래처럼 .zip으로 변경하고 파일탐색기에서 열어보면 아래와 같이 폴더 구조와 파일들을 볼 수 있습니다.

만약 열기 암호가 설정된 파일이라면 열기 암호를 해제한 후에 볼 수 있습니다.

 

주요 내용은 xl 폴더 안에 있으므로 xl폴더를 먼저 보면 아래와 같습니다.

여기에 보면 workbook.xml 이라는 파일이 있는데, 여기에 WorkBook에 대한 주요 사항이 들어 있습니다.

 

worksheets 폴더를 열어보면 구성된 시트마다 각각의 xml 파일이 있음을 볼 수 있습니다.

각 worksheet에 대한 주요 내용이 여기 들어 있습니다.

 

그럼 이제 zip파일을 압축해제하여 작업해 봅니다.

 

 

먼저 xl폴더에 들어 있는 workbook.xml파일을 열어보면 아래와 같이 여러 tag들이 보이는데, 

최상의 workbook 아래에 있는 것들만 보이도록 해보면 중간에 workbookProtection 이라는 tag를 볼 수 있습니다.

다른 내용이 없이 tag하나만으로 구성되어 있는데, 이 부분이 WorkBook 보호와 관련된 내용입니다.

과감하게 이 tag를 전부 지우고 저장합니다.

 

그리고 worksheets 폴더에서 각각의 worksheet#.xml 파일을 열어보면 비슷하게 worksheetProtection이라는 tag가 있는데 이것도 지우고 저장을 합니다.

 

 

이제 새로 저장된 파일이 들어 있는 폴더를 다시 zip파일로 압축을 하고, 확장자를 xlsx로 변경합니다.

파일탐색기에서 zip파일로 압축을 할 때에는 아래와 같이 최상위 폴더들이 보이는 상태에서 전체를 선택하고 [보내기 - 압축(ZIP) 폴더 ] 멘뉴를 사용합니다.

 

최종 수정된 파일을 Excel에서 열어보면 보호해제가 되어 있을 것입니다.

 

'Excel - VBA' 카테고리의 다른 글

Selenium TakeScreenshot.Copy와 TakeScreenshot.SaveAs  (0) 2023.09.11
[VBA] Compound class names not permitted  (0) 2023.09.09
VBA로 ZIP과 UnZip  (0) 2023.08.27
양력을 음력으로 변환하기  (0) 2023.08.23
IsNumeric 함수의 함정  (0) 2023.08.06