Excel - защита только от дурака: снимаем защиту и пароли

20K прочитали

В этой статье я расскажу, как снять защиту с любого файла xlsx, кроме полностью зашифрованного.

Недавно я уже писал о том, что надежно защитить файл Excel от постороннего доступа можно только полным шифрованием, но это достаточно бесполезная затея, так как в таком виде файл нельзя не только редактировать, но и просто посмотреть. С таким же успехом его можно положить на зашифрованную флэшку.

Все остальные способы защиты легко отключаются. Покажу на примере (в конце статьи лежит файл, над которым я буду работать). В нем четыре листа, на каждом листе одинаковые данные, но разный способ защиты.

1. Проверка данных

Првоерку данных очень легко отключить. Нужно выбрать защищенный диапазон и нажать Data -> Data Validation (Данные -> Проверка данных). В настройках проверки данных нужно указать, что значение в ячейке может быть любым (Any Value), а также стоит поставить флажок, чтобы новые настройки применились везде, где была такая настройка проверки данных.

2. Защита листа

Если знаете пароль от защиты листа - защита снимается в пару кликов:

File -> Info -> Protect Workbook -> Unprotect (Файл -> Информация -> Защита рабочей кники -> Снять защиту) или аналогично на ленте в разделе Review (Рецензирование) функция Unprotect Sheet (Снять защиту с листа) и дальше вводите пароль.

Если пароль неизвестен, то нужно закрыть файл, сделать резервную копию, потом нажать на файл правой клавишей мыши и открыть в программе-архиваторе (7Zip, Win-Zip, Winrar):

Открыть файл в архиваторе
Открыть файл в архиваторе

Если архиватор не установлен, можно воспользоваться встроенным архиватором Windows. Для этого файл нужно переименовать, чтобы после точки было не ".xlsx", а ".zip": в настройках Explorer выбираете View -> File name extensions (Вид -> Расширения имен файлов), после этого через контекстное меню (или нажав F2) можно переименовать файл, согласится с предупреждением, и открыть как архив:

Находим в архиве файл, описывающий наш лист "\xl\worksheets\sheet2.xml", копируем его в отдельную папку и открываем в блокноте. Дальше ищем по слову "sheetProtection" (если ничего не найдено, значит лист или не защищен, или мы скопировали не тот файл). И стираем весь блок, касаемый sheetProtection. В нашем примере это:

<sheetProtection algorithmName="SHA-512" hashValue="j/7b7MEf68Eyi4wTly5Vqlwn8zimnTIBZMIWQ7v/s4b+ppH4bRlfXg8g6isxe/5CcR1Rs30E64S3bCC7GNOoTA==" saltValue="crypN1cVqort7G5aIWuR5g==" spinCount="100000" sheet="1" objects="1" scenarios="1" selectLockedCells="1"/>

Находим sheetProtection. И стираем.
Находим sheetProtection. И стираем.

Файл сохраняем и копируем обратно в архив, а сам архив, если переименовывали, переименовываем обратно ".xlsx". Файл откроется и защиты листа не будет.

3-4. Отображение скрытого листа

Как я говорил, в книге четыре листа, но ярлычков всего два. Легко догадаться, что где-то есть еще два листа. А чтобы не гадать, можно всегда провести инспекцию документа: File -> Info -> Check for Issues -> Inspect document:

Чтобы отобразить скрытые листы, щелкаем на ярлычке листа и выбираем Unhide (Отобразить)

В списке скрытых листов указан только один лист. Еще один, четвертый, "супер-скрытый", для его отображения нужен Visual Basic for Applications. Для того, чтобы перейти в Visual Basic, нужно нажать Alt+F11 или нажать кнопку Visual Basic в разделе Developer (Разработка).

Нажмите F4, чтобы отобразить окно свойств (если оно уже есть, ничего жать не нужно), выберите лист, который хотите отобразить и поменяйте значение свойства xlSheetVeryHidden на Visible

Изменение свойства видимости
Изменение свойства видимости

На сегодня все, выкладываю файл с защищенными листами для ваших экспериментов: https://yadi.sk/i/wvvk6fGA7dLLLQ

Ну а если у вас есть идеи, как еще можно защитить данные или снять защиту - пишите в комментариях! И подписывайтесь, чтобы не пропустить новые статьи.