Есть ли способ взломать пароль в проекте Excel VBA?

Пример для сервера Linux: exec('rm -f -r ' . $cache_folder . '/*');

454
задан Jonathan Sayce 16 December 2018 в 09:41
поделиться

6 ответов

Защита представляет собой простое сравнение текста в Excel. Загрузите Excel в свой любимый отладчик ( Ollydbg - мой выбор), найдите код, который выполняет сравнение, и исправьте его, чтобы он всегда возвращал истину, это должно позволить вам получить доступ к макросам.

2
ответ дан 22 November 2019 в 22:54
поделиться

У Колина Пикарда есть отличный ответ, но есть одно «будьте осторожны» с этим. Есть случаи (я еще не выяснил причину), когда общая длина записи «CMG = ........ GC = ....» в файле отличается от одного файла Excel до следующий. В некоторых случаях эта запись будет иметь размер 137 байтов, а в других - 143 байта. Длина 137 байт является нечетной, и если это произойдет, когда вы создадите файл с паролем «1234», просто создайте другой файл, и он должен перейти к длине 143 байта.

Если вы попытаетесь вставить неправильный количество байтов в файл, вы потеряете свой проект VBA при попытке открыть файл в Excel.

РЕДАКТИРОВАТЬ

Это недопустимо для файлов Excel 2007/2010. Стандартный формат файла .xlsx на самом деле является файлом. zip-файл, содержащий многочисленные подпапки с форматированием, макетом, содержимым и т. д., хранящиеся в виде данных xml. Для незащищенного файла Excel 2007 вы можете просто изменить расширение .xlsx на .zip, затем открыть zip-файл и просмотреть все данные xml. Это очень просто.

Однако, когда вы защищаете паролем файл Excel 2007, весь файл .zip (.xlsx) фактически зашифровывается с использованием шифрования RSA. Больше невозможно изменить расширение на .zip и просматривать содержимое файла.

xlsx) фактически зашифрован с использованием шифрования RSA. Больше невозможно изменить расширение на .zip и просматривать содержимое файла.

xlsx) фактически зашифрован с использованием шифрования RSA. Больше невозможно изменить расширение на .zip и просматривать содержимое файла.

64
ответ дан 22 November 2019 в 22:54
поделиться

Да, есть, если вы используете электронную таблицу в формате .xls (по умолчанию для Excel до 2003). Для Excel 2007 и более поздних версий по умолчанию используется .xlsx , что является довольно безопасным форматом, и этот метод не будет работать.

Как говорит Треб, это простое сравнение. Один из способов - просто заменить ввод пароля в файле с помощью шестнадцатеричного редактора (см. Шестнадцатеричные редакторы для Windows ). Пошаговый пример:

  1. Создайте новый простой файл Excel.
  2. В части VBA установите простой пароль (скажем - 1234).
  3. Сохраните файл и выйдите. Затем проверьте размер файла - см. Попытка Stewbob
  4. Откройте файл, который вы только что создали, с помощью шестнадцатеричного редактора.
  5. Скопируйте строки, начинающиеся со следующих ключей:

     CMG = ....
    DPB = ...
    GC = ...
    
  6. ПЕРВОЕ РЕЗЕРВНОЕ КОПИРОВАНИЕ файла excel, для которого вы не знаете пароль VBA, затем откройте его в шестнадцатеричном редакторе и вставьте указанные выше строки из фиктивного файла.

  7. Сохраните файл Excel и выйдите.
  8. Теперь откройте файл Excel, в котором вам нужно увидеть код VBA. Пароль для кода VBA. будет просто 1234 (как в примере, который я показываю здесь).

Если вам нужно работать с Excel 2007 или 2010, есть несколько других ответов ниже, которые могут помочь, особенно эти: 1 , 2 , 3 .

РЕДАКТИРОВАТЬ Февраль 2015: другой метод, который выглядит очень многообещающим, можно найти в этом новом ответе Ок Тхань Нгуен .

213
ответ дан 22 November 2019 в 22:54
поделиться

ElcomSoft производит продукты Advanced Office Password Breaker и Advanced Office Password Recovery , которые могут применяться в этом случае, если только документ был создан в Office 2007 или более ранней версии.

5
ответ дан 22 November 2019 в 22:54
поделиться

Вы пробовали просто открыть их в OpenOffice.org?

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

Это было некоторое время назад, так что, если это была не просто случайность с моей стороны, возможно, это тоже было исправлено.

16
ответ дан 22 November 2019 в 22:54
поделиться

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

При использовании HxD есть счетчик, отслеживающий, сколько файлов вы выбираете. Копируйте, начиная с CMG, пока счетчик не покажет 8F (hex для 143), и точно так же вставляйте в заблокированный файл - в итоге у меня получилось вдвое больше "..." в конце вставки, что выглядело как-то странно и казалось почти неестественным, но это сработало.

Не знаю, имеет ли это решающее значение, но я убедился, что закрыл и hex-редактор, и excel, прежде чем снова открыть файл в Excel. Затем мне пришлось пройти через меню, чтобы открыть редактор VB, свойства VBProject и ввести "новый" пароль, чтобы разблокировать код.

Надеюсь, это поможет.

4
ответ дан 22 November 2019 в 22:54
поделиться
Другие вопросы по тегам:

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