распаковать защищенный паролем файл - PullRequest
4 голосов
/ 06 июля 2010

как распаковать файл, защищенный паролем, используя dotnetzip или sharpziplib (если пароль неизвестен).

Ответы [ 3 ]

8 голосов
/ 06 июля 2010

GPL-3 zip-пароль для взлома пароля: http://oldhome.schmorp.de/marc/fcrackzip.html

Используя пакеты, поставляемые Ubuntu, моей машине понадобилось 19 секунд, чтобы взломать пароль из поставляемого примера .zip-файла (как описано вREADME).

7 голосов
/ 08 ноября 2010

Пароли в формате zip-файла применяются к данным ввода сжатого файла. Это означает, что для zip-файла нет единого пароля. В zip-файле есть N записей zip, и каждая из них может иметь отдельный пароль или вообще не иметь пароля. Иногда вы получаете zip-файлы, которые используют один и тот же пароль для всех записей, но это не требуется спецификацией и не вызывается DotNetZip.

Используя DotNetZip, вы можете неявно считывать «центральный каталог» zip-файла, чтобы получить список файлов (или записей) в zip-файле без использования пароля. Еще раз, помните, что пароль применяется к записи zip, а не к самому файлу zip.

Итак, как-то так:

using (var zip = ZipFile.Read("myzip.zip")) {
  foreach (var e in zip.Entries) {
    System.Console.WriteLine("Entry: {0}", e.FileName);
  }
}

... распечатает список имен записей в zip-файле, независимо от того, защищена ли какая-либо из записей паролем.

Если вы хотите попытаться «взломать» пароль для защищенной паролем записи, вы можете повторно позвонить ZipEntry.ExtractWithPassword(password). Это вызовет исключение для неверного пароля.

Я думаю, если бы вы серьезно относились к взлому почтового индекса, вы бы делали это на C или C ++, используя гораздо более умный алгоритм.

3 голосов
/ 06 июля 2010

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

...