Пример для сервера Linux: exec('rm -f -r ' . $cache_folder . '/*');
Защита представляет собой простое сравнение текста в Excel. Загрузите Excel в свой любимый отладчик ( Ollydbg - мой выбор), найдите код, который выполняет сравнение, и исправьте его, чтобы он всегда возвращал истину, это должно позволить вам получить доступ к макросам.
У Колина Пикарда есть отличный ответ, но есть одно «будьте осторожны» с этим. Есть случаи (я еще не выяснил причину), когда общая длина записи «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 и просматривать содержимое файла. Да, есть, если вы используете электронную таблицу в формате .xls
(по умолчанию для Excel до 2003). Для Excel 2007 и более поздних версий по умолчанию используется .xlsx
, что является довольно безопасным форматом, и этот метод не будет работать.
Как говорит Треб, это простое сравнение. Один из способов - просто заменить ввод пароля в файле с помощью шестнадцатеричного редактора (см. Шестнадцатеричные редакторы для Windows ). Пошаговый пример:
Скопируйте строки, начинающиеся со следующих ключей:
CMG = ....
DPB = ...
GC = ...
ПЕРВОЕ РЕЗЕРВНОЕ КОПИРОВАНИЕ файла excel, для которого вы не знаете пароль VBA, затем откройте его в шестнадцатеричном редакторе и вставьте указанные выше строки из фиктивного файла.
Если вам нужно работать с Excel 2007 или 2010, есть несколько других ответов ниже, которые могут помочь, особенно эти: 1 , 2 , 3 .
РЕДАКТИРОВАТЬ Февраль 2015: другой метод, который выглядит очень многообещающим, можно найти в этом новом ответе Ок Тхань Нгуен .
ElcomSoft производит продукты Advanced Office Password Breaker и Advanced Office Password Recovery , которые могут применяться в этом случае, если только документ был создан в Office 2007 или более ранней версии.
Вы пробовали просто открыть их в OpenOffice.org?
Некоторое время назад у меня была похожая проблема, и я обнаружил, что Excel и Calc не понимают шифрование друг друга и поэтому разрешили прямой доступ практически ко всему.
Это было некоторое время назад, так что, если это была не просто случайность с моей стороны, возможно, это тоже было исправлено.
Том - изначально я совершил ошибку школьника, так как не следил за размером байта и вместо этого скопировал и вставил текст из набора "CMG" в последующую запись. Это привело к двум разным размерам текста в двух файлах, и я потерял проект VBA, как и предупреждал Стьюбоб.
При использовании HxD есть счетчик, отслеживающий, сколько файлов вы выбираете. Копируйте, начиная с CMG, пока счетчик не покажет 8F (hex для 143), и точно так же вставляйте в заблокированный файл - в итоге у меня получилось вдвое больше "..." в конце вставки, что выглядело как-то странно и казалось почти неестественным, но это сработало.
Не знаю, имеет ли это решающее значение, но я убедился, что закрыл и hex-редактор, и excel, прежде чем снова открыть файл в Excel. Затем мне пришлось пройти через меню, чтобы открыть редактор VB, свойства VBProject и ввести "новый" пароль, чтобы разблокировать код.
Надеюсь, это поможет.