Как защита паролем Excel VBA кодирует работы?

Это потому, что в действительности клетка используется повторно. Чтобы решить это, вам нужна логика, что делать с ячейками / строками, не удовлетворяющими вашему условию indexPath.row > 4. :)

8
задан Community 23 May 2017 в 12:02
поделиться

2 ответа

Безопасность VBA широко считается довольно плохой. Код VBA не компилируется, и источник доступен в файле Excel. Защиту паролем довольно легко обойти.

Насколько я понимаю Office 2003 и ранее сохраняет код vba как часть двоичного формата рабочего листа (или документ / презентация). Когда Вы разжигаете IDE VBA, он просто надеется видеть, был ли код VBA "защищен" или нет. Это не означает, что зашифровало - просто недоступный просмотру. Теория состоит в том, что это мешает Вашим пользователям влезть в Ваш код, но жесткий кодер смог бы обойти пароль.

Таким образом, Excel не должен не шифровать код - он просто должен мешать людям просмотреть его.

Office 2007 шифрует макросы (не спрашивайте меня как или что алгоритм). Это необходимо, по-видимому, потому что файлы XLSM (или любой файл Office 2007) являются просто zip-файлами с другим расширением. Любой может войти в те файлы и ввести по абсолютному адресу вокруг.

Для ответа на последний вопрос - как делает работы по расчистке пароля на более старых форматах Office я не совсем уверен. Различные поставщики возможно приблизятся к проблеме различные пути, но я подозреваю, что наиболее распространенный подход будет атакой перебором паролей, пока соответствие не будет найдено.

Объект Excel VBProject имеет свойство Protection, которое возвратит различные перечисления в зависимости от состояния защиты макроса (vbext_pp_locked если макрос защищен, например). Если необходимо было продолжать пробовать пароли программно до vbext_pp_locked оцененный ко лжи, Вы нашли бы свой пароль.

14
ответ дан 5 December 2019 в 10:44
поделиться

Phil - это правильный - пароль предотвращает поиск модулей, они не зашифрованы. Я знаю, что в Excel 2007 - файл, по сути, является наклеек XML и другие файлы, но я не знаю детали того, как обрабатывается шифрование. Для более ранних версий - Excel 2, 3, 4, 5, 95, 97, 2000, XP и 95, 97, 2000, XP, и 2003, есть всеобъемлющий Документация OpenOffice.org Формат файла Microsoft Excel :

Excel Формат файла называется BIFF (формат файла бинарного взаимодействия). Он используется для хранения всех типов документов: документы рабочего листа, документы для рабочей книги и документы рабочих областей. Существуют разные версии этого формата файла в зависимости от версии Excel, которые написали файл и в зависимости от типа документа.

Документ рабочей книги с несколькими листами (BIFF5-BIFF8) обычно сохраняется с использованием формата файла соединения (также известный как «формат файла хранения OLE2» или «Формат файла хранения Microsoft Office Confice»). Он содержит несколько потоков для разных типов данных. Полная документация формата компонентов соединения можно найти здесь .

Блок защиты рабочей книги происходит сразу после блока определенного знамена (I.E. названные диапазонами) в большинстве потоков Biff, хотя BIFF8 является основным отъездом из этого шаблона. Блок защиты от записи в BIFF5 - BIFF8 Структура блока защиты рабочей книги:

  • Настройки окна Skinprotect: 1 = Защищенные
  • Защитите содержимое рабочего тетра: 1 = защищенное
  • Пароль HASH Значение пароля; 0 = Нет пароля
  • Prot4rev Shared Workbook: 1 = защищена
  • Prot4RevPass Hash Value общего пароля; 0 = Нет пароля

Блок пароля сохраняет 16-битное значение HASH, рассчитанное из листа или пароля защиты рабочей книги.

3
ответ дан 5 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: