25 августа 2020

Как снять защиту листа Excel не зная пароль?

    Предположим, что вам дали файл в формате MS Excel. Вы хотите его изменить, но автор файла защитил ячейки листа от редактирования и забыл сообщить пароль.
Можно попытаться узнать пароль, а можно снять защиту с помощью любого архиватора, который умеет работать с архивами в формате ZIP.
  1. Меняем расширение файла с XLSX на ZIP.
  2. В архиве открываем папку "xl\worksheets\", в которой находятся файлы "sheet*.xml":
    Эти файлы и есть листы MS Excel.
  3. Например, мы хотим снять защиту со второго листа. Значит открываем на редактирование файл sheet2.xml, ищем тэг "sheetProtection" и полностью его удаляем. Сохраняем файл и запаковываем его обратно в архив.
  4. Меняем расширение файла с ZIP на XLSX.
Все! Защита с листа снята:
P.S. В моем sheet2.xml я удалил текст: <sheetProtection algorithmName="SHA-512" hashValue="+OQKr3s2ZIltl24+slcwfduq+19gVfs3Nl45LN01Cl4kjSYW0PqI+bGYIKu8IAngQzV+ox2qdF6PrZbsyLdPVg==" saltValue="+jI4aFRhEibP0QwRNEp1yw==" spinCount="100000" sheet="1" objects="1" scenarios="1"/>

3 комментария:

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

    ОтветитьУдалить
    Ответы
    1. Только защиту от случайного искажения информации (пароль на страницы, рабочую книгу и т.п.). И такое работает со всеми версиями Excel. Если установлен пароль на открытие документа, то придётся искать пароль. В старых Excel-файлах, с коротким ключом шифрования (условно xls-файлы) можно было обойтись и без пароля - проще найти ключ шифрования и расшифровать документ без пароля. А начиная с Excel 2007 - только перебор вариантов, только хардкор. :) Немного помогает GPU ускорение, конечно, но от версии к версии число итераций хэширования пароля растёт и скорость перебора падает.

      Удалить
  2. Но с XLSB такой фокус не прокатывает.

    ОтветитьУдалить